/        根目录

 /bin        存放着启动时所需要的普通程序。很多程序在启动以后也很有用,它们放在这个目录下是因为它们经常要被其他程序调用

 /boot        很多Linux系统把内核映像和其他一些和启动有关的文件都放在这里。内核和加载内核所需的文件

 /dev        这个目录下保存着所有的设备文件。里面有一些是由Linux内核创建的用来控制硬件设备的特殊文件

 /etc        这里保存着绝大部分的系统配置文件。相对来讲,单个用户的系统配置文件会保存在这个用户自己的主目录里面。下面列举其中一些重要的子目录

 /home        一般用户的主目录都会放在这个目录下。在Linux下,可以通过#cd ~来进入自己的主目录

 /lib        启动的时候所要用到的库文件都放在这个目录下。那些非启动用的库文件都会放在/usr/lib下。内核模块是放在/lib/modules/(内核版本)下的

 /lib64

 /media

 /mnt        这个目录下面放着一些用来安装其他设备的子目录,比如说/mnt/cdrom或者/mnt/floppy。在有些Linux中这个目录被/mount代替

 /opt

 /proc        虚拟文件系统,系统运行信息,包括内核信息、正在运行的进程、硬件状态、内存使用的多少等

 /root        root用户的主目录

 /run        

 /sbin        存放启动时所需要的系统程序,很多程序在启动以后也很有用,它们放在这个目录下是因为它们经常要被其他程序调用

 /srv

 /sys        虚拟文件系统,不占硬盘容量,主要记录与系统核心相关的信息,如系统已载入的模块

 /tmp        一般只有启动时产生的临时文件才会放在这个地方。我们自己的临时文件都放在/var/tmp

 /usr        这是一个很复杂、庞大的目录。除了上述目录之外,几乎所有的文件都存放在这下面。下面列举其中一些重要的子目录

 /var        这里有一些被系统改变过的数据。比如说/var/tmp,就是用来储存临时文件的。还有很多其他的进程和模块把它们的记录文件也放在这个地方,包括如下一些重要的子目录系统专用数据和配置文件,含有logs, spool等目录

 常见目录文件

 /boot/grub/
 /boot/grub2/grub.cfg
 /boot/initramfs-xxx.img

 /dev/cdrom                        ;光驱
 /dev/input/mice                        ;鼠标
 /dev/log                        ; unix 域数据报套结字 syslogd syslog
 /dev/mem                        ; 物理内存的全映象
 /dev/null
 /dev/random                        ; 存储的系统运行环境的实时数据
 /dev/shm
 /dev/stderr                        ; 错误输出
 /dev/stdin
 /dev/stdout
 /dev/urandom                        ; 和 /dev/random 数据一样,但是读取它时不会产生阻塞
 /dev/zero                        ;你读它的时候,它会提供无限的空字符,可以作为一个数据源或数据池,所有写往/dev/zero将返回成功; bs= 创建一个名为"填充

 /etc/aliases                        ; This file describes user ID aliases used by sendmail.
 /etc/apt/sources.list                    ; debian 的 apt-get 软件管理的源
 /etc/bashrc                        ; 登陆后设置的函数和 alias
 /etc/bluetooth                        ; 蓝牙配置目录
 /etc/default/grub                    ; grub 默认设置
 /etc/default/useradd                    ; 添加用户时的默认设置
 /etc/dhcp/dhcpd.conf                    ; dhcp 服务配置文件
 /etc/environment                    ; 环境变量
 /etc/exports                        ; nfs 配置文件
 /etc/firewalld/                        ; firewalld 配置文件
 /etc/group
 /etc/grub.d/                        ; 生成 grub 配置文件的相关文件
 /etc/grub2.cfg                        ; 指向 /boot/grub2/grub.cfg
 /etc/host.conf                        ; resolver configuration file; mutli on
 /etc/hostname                        ; 永久修改主机名时修改这个文件,hostname 命令只能暂时修改主机名
 /etc/hosts                        ; 当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配
 /etc/httpd/conf.d/welcome.conf
 /etc/httpd/conf/httpd.conf                ; 配置apache服务器
 /etc/init.d                        ; 这个目录保存着启动描述文件,包括各种模块和服务的加载描述, CentOS7 不使用这个文件配置启动信息,采用了 systemd ,但还是支持这个文件的启动信息配置。
 /etc/init.d/network                    ; CentOS6 网络启动时使用的文件
 /etc/iproute2/rt_tables                    ; 策略路由的规则
 /etc/issue                        ; 本地登陆时显示的信息,常为内核等信息
 /etc/issue.net                        ; 网络登陆时显示的信息
 /etc/ld.so.conf                        ; gcc 动态库文件的搜索路径
 /etc/ld.so.conf.d/                    ; 库文件的配置路径
 /etc/ld.so.conf.d/mariadb-x86_64.conf            ;
 /etc/locale.conf
 /etc/localtime                        ; 本机时区的配置文件
 /etc/ 位
 /etc/mail.rc                        ; mailx 配置文件
 /etc/man_db.conf                    ; man 手册配置
 /etc/modules-load.d/eth0.conf                ; 设置开机自动加在网卡驱动模块(文件内容为:alias enp2s0 e1000 )
 /etc/modprobe.d/mlx4.conf                ; select the various module options they need for the mlx4 driver
 /etc/motd                        ; 内容由管理员确定,常用于通告信息,任何用户任何终端登陆时都会显示的内容
 /etc/my.cnf.d/mysql-clients.cnf                ; mysql
 /etc/nail.rc                        ; mail
 /etc/network/interfaces                    ; debian 网卡配置文件存放目录,网卡配置详看 http://gfrog.net/2008/01/config-file-in-debian-interfaces-1/    http://qref.sourceforge.net/Debian/reference/ch-gateway.zh-cn.html
 /etc/networks                        ; 已知的网络名的信息
 /etc/nsswitch.conf                    ; An example Name Service Switch config file
 /etc/NetworkManager
 /etc/NetworkManager/NetworkManager.conf            ; 网络配置文件,在 main 部分加入 dns=none 不会自动生成 dns
 /etc/passwd
 /etc/php.ini
 /etc/pki/rpm-gpk                      ;yum
 /etc/pki/tls/certs/                    ; 建立凭证的地方
 /etc/profile                        ; 系统所有用户的环境变量和启动程序,在用户第一次登陆时执行,不建议改变
 /etc/profile.d/                        ; 自定义的系统环境变狼和启动程序,以 .sh 结尾
 /etc/protocols                        ; 网络协议和协议代码的对应文件;封包协议的相关数据
 /etc/redhat-release                    ; 系统版本
 /etc/resolv.conf                     ; 网络配置临时 namesever DNS
 /etc/resolvconf/resolv.conf.d                ; 配置永久 DNS( CentOS7 中没有此文件)
 /etc/rc.d/init.d/functions                ; 函数有:killproc, status
 /etc/rc.d/rc.local                    ; 添加自定义脚本,Centos7 中已经不建议使用该文件,该文件没有执行权限了
 /etc/rc.local                        ; FOR COMPATIBILITY PURPOSES
 /etc/rc0.d - /etc/rc6.d                    ; 这里面也是一些连接文件,和/etc/rcS.d差不多。不同的是,这些只会在指定的runlevel下运行相应的描述。0表示关机,6表示重启。所有以K开头的文件表示关闭,所有以S开头的文件表示重启。目前来讲,文件的命名方式和/etc/rcS.d是一样的
 /etc/rcS.d                            ; 这里放着一些连接到/etc/init.d的文件,根据runlevel的不同而执行相应的描述。这里的文件名都是由S来开头的,然后是一个两位的数字——表示各种服务启动的顺序。比如,S24foo就是在S42bar前面执行的。接着就是相应的连接到/etc/init.d下面的文件名字了
 /etc/rsyslog.conf                    ; rsyslog configuration file, syslog 集中的出错管理设施配置文件,决定不同种类的消息、日志送往何处
 /usr/sbin/setenforce                    ; selinux 配置命令
 /etc/securetty
 /etc/security/limits.conf                ; 系统限制的配置文件,规范每个用户的相关权限,可用 ulimit 设置;domino是以符号@开头的用户名或组名,*表示所有用户,type设置为hard or soft。item指定想限制的资源。如cpu,core nproc or maxlogins。value是相应的限制值。
 /etc/selinux/config                    ; selinux配置文件
 /etc/services                        ; 定义每种 TCP/IP 服务对应的端口号和别名等
 /etc/skel/                        ; 创建用户时 home 目录内默认的文件
 /etc/ssh                        ; ssh 配置文件等
 /etc/sshd/sshd_config                    ; ssh 配置文件,在 Centos7 中没有
 /etc/sysconfig/dhcpd                    ; dhcp 服务配置文件
 /etc/sysconfig/iptables                    ; 防火墙规则
 /etc/sysconfig/iptables-config                ; 配置 iptables 加载的模块(NAT)
 /etc/sysconfig/selinux                    ; selinxu的配置文件
 /etc/sysconfig/network                    ; 该文件用来指定服务器上的网络配置信息,例如永久修改主机名,网关 GATEWAY,是否支持 ipv6
 /etc/sysconfig/network-scripts/                ; 网卡配置文件
 /etc/sysconfig/nfs                    ; nfs 配置端口等信息
 /etc/sysctl.conf                    ; 系统设置,net.ipv4.ip_forward =  | net.ipv4.tcp_syncookies =  | net.ipv4.icmp_echo_ignore_broadcasts =  | net.ipv4.conf.all.rp_filter =  | net.ipv4.conf.default.rp_filter =  | net.ipv4.conf.eth0.rp_filter =  | net.qiang@hotmail.comnet.ipv4.conf.lo.rp_filter =  启用核心封包转发功能。sysctl  -p 使设置立即生效
 /etc/systemd/logind.conf
 /etc/systemd/system/multi-user.target.wants/        ; 自启服务
 /etc/systemd/system/multi-user.target.wants/abrt-ccpp.service
 /etc/updatedb.conf                        ; updatedb 配置文件,和 locate 有关
 /etc/vimrc
 /etc/wpa_supplicant/wpa_supplicant.conf
 /etc/xinetd.d/                        ; Centos7 使用 systemd 代替了 xinetd 这个服务,但是有些软件还是可以使用这个服务
 /etc/xinetd.d/tftp                    ; tftp 服务器配置目录
 /etc/X11                            ; 这里放着 X 窗口系统(Linux中的图形用户界面系统之一)所需要的配置文件。XF86Config(XFee86 是 linux 下实现 X Window 协议的软件包,另外一个是 X.org)就是把配置储存到这个地方的。/etc/X11/fonts里面放着一些服务器需要的字体,还存放一些窗口管理器存放的配置文件
 /etc/X11/xinit/xinitrc                    ; root read this file to start x-org
 /etc/yum.conf                        ; yum 配置文件
 /etc/yum.repos.d                    ; yum 源的配置目录
 /etc/yum/pluginconf.d                    ; yum 插件

 /home/user/.bash_history
 /home/user/.bash_logout                    ; 用户退出 shell 时登陆时由 bash 解释执行该文件,即使是使用 gnome-terminal 登陆也会执行
 /home/user/.bash_profile                ; 执行用户的 .bashrc 文件
 /home/user/.bashrc
 /home/user/.config/gedit
 /home/user/.local
 /home/user/.ssh
 /home/user/.ssh/authorizrd_keys                ; 公钥文件
 /home/user/.ssh/config                    ; 配置文件
 /home/user/.ssh/known_hosts
 /home/user/.vim
 /home/user/.viminfo
 /home/user/.vimrc
 /home/home/.Xauthority

 /lib/modules/-.el7.x86_64/kernel/drivers/net/ethernet/realtek            ; 内核加载的有线网卡驱动模块
 /lib/systemd/system/runlevel*.target            ; run level

 /proc/acpi
 /proc/acpi/button/lid/                    ; 笔记本盖子情况
 /proc/bus/*                        ; 一些总线的装置,还有 USB 的装置也记录在此喔!
 /proc/bus/pci/devices
 /proc/cmdline                        ; 系统启动时的 IMAGE vmlinuz, 加载 kernel 时所下达的相关参数
 /proc/consoles                        ; 当前登陆的终端
 /proc/cpuinfo                        ; cpu 信息
 /proc/devices                         ; 这个档案记录了系统各个主要装置的主要装置代号,不 mknod 有关呢!
 /proc/filesystems                    ; 目前系统已经加载的文件系统啰!
 /proc/interrupts                    ; 目前系统上面的 IRQ 分配状忞。系统中所有中断信息,包括网卡
 /proc/ioports                        ; 目前系统上面各个装置所配置的 I/O 地址。
 /proc/kcore                        ; 这个就是内存的大小啦!好大对吧!但是丌要诺他啦!
 /proc/loadavg                         ; 平均负载
 /proc/meminfo                        ; 内存(虚拟),使用 free 列出的内存信息
 /proc/modules                        ; 目前我们的 Linux 已经加载的模块列表,也可以想成是驱劢程序啦!
 /proc/mounts                        ; 系统已经挂载的数据,就是用 mount 这个挃令呼叨出来的数据啦!
 /proc/pci                        ; 在 PCI 总线上面,每个装置的详绅情冴!可用 lspci 来查阅!
 /proc/swaps                        ; 到底系统挂加载的内存在哪里?呵呵!使用掉的 partition 就记录在此啦!/proc/partitions 使用 fdisk -l 会出现目前所有的 partition 吧?在这个档案当中也有纨录喔!
 /proc/sys/kernel/domainname                ; (none)
 /proc/sys/kernel/hostname                ; 主机名
 /proc/sys/kernel/msgmax                    ; 8129
 /proc/sys/kernel/pidmax                    ; 32768
 /proc/sys/kernel/random/uuid                ; 系统生成的唯一的 uuid 号
 /proc/sys/kernel/threads-max                ; 系统允许的最大线程数 30408,好像不准确,我的是 32754
 /proc/sys/net/ipv4/ip_forward                ; 内核是否打开核心封包传递功能,为 0 没有打开,为 1 打开,没有打开直接置 1 就可以了,想重启生效则配置文件 /etc/sysctl.conf
 /proc/sys/net/ipv4/ip_forward                ; 为 1 则具备数据包转发功能
 /proc/sys/net/ipv4/tcp_max_syn_backlog            ; TCP 封包联机优化的三个参数
 /proc/sys/net/ipv4/tcp_synack_retries
 /proc/sys/net/ipv4/tcp_abort_on_overflow
 /proc/sys/net/ipv4/icmp_echo_ignore_all            ; 为 1 忽略所有 icmp 请求
 /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts        ; 为 1 仅有 ping broadcast 地址时才取消 ping 的回应
 /proc/sys/net/ipv4/tcp_syncookies            ; 防止 SYN 攻击
 /proc/sys/vm/drop_caches                ; echo 1 > dir 释放网页缓存,echo 2 > dir 释放目录项和索引,echo 3 > dir 释放目录项、索引和网页缓存
 /proc/uptime                        ; 就是用 uptime 的时候,会出现的信息啦
 /proc/version                        ; 核心版本,就是用 uname -a 显示的内容啦

 /run/media                            ; 可移动介质的文件系统挂载点

 /sys/devices/system/cpu/cpu0/cpufreq                ; cpu 参数
 /sys/class/backlight/acpi_video0/brightness            ; 屏幕亮度
 /sys/class/power_supply/BAT1                    ; 电源相关的状态
 /sys/class/power_supply/BAT1/capacity                ; 剩余电量百分比
 /sys/class/power_supply/BAT1/uevent                ; 基本信息

 /usr/bin                            ; 二进制可执行文件存放的目录,这里放着绝大部分的应用程序
 /usr/doc                            ; 这里保存着各种文档文件。这些文件可以帮助你了解Linux,解决问题和提供一些技巧
 /usr/games                            ; 游戏程序和相应的数据会放在这里
 /usr/include                        ;这个目录保存着C和C++的头文件
 /usr/include/bits/local_lim.h                    ; 系统限制信息;其中 PTHREAD_THREADS_MAX 是最大线程数,为 1024,最大线程数和内存也有关,因为每个线程都要占用内存;我的最大线程数是 32754,内存是 4 G
 /usr/include/mysql/mysql.h                    ; mariadb-devel
 /usr/info                            ; 这里保存着GNU Info程序所需要的数据
 /usr/lib                            ; 启动时用不到的库文件都会放在这里
 /usr/lib/firewalld/                        ; 不要编辑,因为因为它们是为默认设定准备的
 /usr/lib/modules/3.10.0-229.11.1.el7.x86_64/kernel/drivers/misc/mei
 /usr/lib/systemd/                          ;系统和用户服务目录
 /usr/lib/systemd/scripts/nfs-utils_env.sh
 /usr/lib/systemd/system/                    ; 系统服务目录,随着系统启动而启动
 /usr/lib/systemd/user/                        ; 用户服务目录
 /usr/lib/python2.6/site-packages/yum/yumRepo.py
 /usr/lib64/gedit/plugin                        ; gedit plugin
 /usr/local                            ; 这里保存着本地计算机所需要的文件。在用户进行远程访问的时候特别有意义。这个目录在有些Linux系统下就是一个单独的分区,存放一些这台机子所属的那个用户的文件。里面的结构和/usr是一样的
 /usr/local/share/QQWry.Dat                    ; nali 数据文件
 /usr/sbin                            ; 这里放着绝大部分的系统程序
 /usr/share                            ; 这里保存着各种共享文件
 /usr/share/applications                          ; 快捷方式
 /usr/share/httpd/noindex
 /usr/share/man                            ; 这里保存着man程序所需要的数据
 /usr/share/man/man1
 /usr/share/mysql                         ; 配置文件(mysql.server命令及配置文件)
 /usr/share/vim/vim74/colors                ; vim 配色方案
 /usr/share/vim/vim74/plugin                ; vim 插件
 /usr/share/vim/vimfiles/                ; 插件文件
 /usr/src                            ; 这里保存着系统源代码文件
 /usr/X11R6,/usr/X11,/usr/Xfree86            ;这里保存着X窗口系统所需要的文件,它的目录结构和/usr是一样的( CentOS 中没有)

 /var/account/pacct
 /var/cache/yum/                        ; yum cache
 /var/lib                        ; 包括了一些系统运行时需要的文件
 /var/lib/dhclient/dhclient*                ; dhcp 客户端的配置文件,删除了可以重新设定连接的 DHCP 服务器
 /var/lib/mysql/                     ; 数据库目录
 /var/lib/nfs
 /var/lib/rpm                        ; 软件版本之间的比较来自亍这个数据库, 而如果妳想要查询系统已经安装的软件,也是仍这里查询的!同时,目前的 RPM 也提供数字签名信息, 这些数字签名也是在这个目录内记录的
 也是在这个目录内记录的呢!
 /var/log                        ; 这里放着绝大部分的记录文件。随着时间的增长,这个目录会变得很庞大,所以要定期清理
 /var/log/acct
 /var/log/boot.log                        ; 启动时屏幕上的内容
 /var/log/btmp                        ; 用户登陆记录,包括登陆失败,使用 lastb 查看
 /var/log/messages
 /var/log/secure                        ; 系统安全相关信息,包括但不限于 root 权限的使用,ssh 登陆失败
 /var/log/wtmp                        ; 用户登陆记录,使用 last 查看
 /var/log/yum.log
 /var/run                            ; 包括了各种运行时的信息
 /var/spool                            ; 邮件,新闻,打印序列的所在地
 /var/www/html

 gcc相关:

 /usr/include
 /usr/local/include
 /usr/lib/gcc-lib/i386-linux/2.95.2/include
 /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
 /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include

 文件权限

 -rwxr-x--t        文件类型 用户权限 组权限 其他用户权限

 umask是一个掩码,设置文件的默认权限,会屏蔽掉不想授予该安全级别的权限,从对象的全权权限中减掉;对文件全权权限是666,目录是777,因为目录有执行权限。系统启动时在/etc/profile中设置。

 chmod    [ugoa]    [+-=]    [rwxXstugo]        只有文件的属主可以改变权限
 chmod    0xddd    file

 -R 参数表示递归的改变文件权限

 u 表示设置权限和属主一样,g和o类似
 s 运行时重新设置uid或gid
 t 保留文件或目录
 X 表示如果对象是目录或者已有执行权限,赋予执行权限

 suid sgid 粘着位 构成另外一个八进制数在 umask 中(前),umask 有 4 个 8 进制数

 r        对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限
 w        对文件而言,具有新增、修改和删除文件的权限;对目录来说,具有删除、移动目录内文件的权限
 x        对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限
 s(suid)    当文件被用户使用时,程序会以文件的属主权限运行,大写 s 表示用户的执行权限为空
 s(sgid)    对文件来说,文件会以文件属组的权限运行;对目录来说,目录中创建的权限会以目录的默认属组作为默认属组,常用于创建共享组共享文件(新建共享组后可能需要重启才能生效)
 t(sticky)    进程结束后仍保留在内存中;當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時,使用者在該目錄下建立的檔案或目錄,僅有自己與 root 才有權力刪除該檔案

 SUID 不用在目录上,而 t 不用在档案上。SUID 为 u+s ,而 SGID 为 g+s ,t 则是 o+t
 shell 脚本的 suid 并不生效;suid 只能作用于二进制文件。

 目录 r 权限表明可以使用ls命令列出内容(必须也有使用ls命令选项的执行权限), w 权限表明文件可以被添加或删除(目录必须也有执行权限), x 权限控制对目录的访问。用户可以 cd 到目录中,使用读访问列出其中的内容。文件可以使用写访问被移动或者拷贝到目录中;只有属主可以使用 chmod 操作目录,重命名目录。

 挂载的 ntfs 格式磁盘不能改变权限。

 无法创建文件:确定所有上级目录都有 w 权限,关闭 selinux( getenfore 查看 selinux 是否启用 ),

 文件没有权限使用 ll 查看时有可能显示所有的权限为“ ? ”。

 普通用户目录没有 x 权限时 root 用户还是有 x 权限。当普通用户的目录没有 x 权限时除了 root 用户外其它所有用户无法在目录下创建或修改任何文件(无法使用 rw 权限),包括其子目录。如果用户可以进入某一个目录(拥有 x 权限),但是没有该目录的读写权限(没有 rw ),那么无法列出当前目录下有哪些文件,但是仍然可以编辑该目录下自己拥有 w 权限的文件,如果对该文件不具有 r 权限,就不能用 vim 等编辑,只能使用其他方式往里面写数据。

 权限没有递归的现象,如果用户在父目录没有读、写或者执行的权限,不影响子目录下的读写权限。

 文件隐藏属性

 什麼?檔案還有隱藏屬性?光是那九個權限就快要瘋掉了,竟然還有隱藏屬性,真是要命~ 但是沒辦法,就是有檔案的隱藏屬性存在啊!不過,這些隱藏的屬性確實對於系統有很大的幫助的~ 尤其是在系統安全 (Security) 上面,重要的緊呢!不過要先強調的是,底下的chattr指令只能在Ext2/Ext3/Ext4的 Linux 傳統檔案系統上面完整生效, 其他的檔案系統可能就無法完整的支援這個指令了,例如 xfs 僅支援部份參數而已。底下我們就來談一談如何設定與檢查這些隱藏的屬性吧!

     chattr (設定檔案隱藏屬性)

 [root@study ~]# chattr [+-=][ASacdistu] 檔案或目錄名稱
 選項與參數:
 +   :增加某一個特殊參數,其他原本存在參數則不動。
 -   :移除某一個特殊參數,其他原本存在參數則不動。
 =   :設定一定,且僅有後面接的參數

 A  :當設定了 A 這個屬性時,若你有存取此檔案(或目錄)時,他的存取時間 atime 將不會被修改,
      可避免 I/O 較慢的機器過度的存取磁碟。(目前建議使用檔案系統掛載參數處理這個項目)
 S  :一般檔案是非同步寫入磁碟的(原理請參考前一章sync的說明),如果加上 S 這個屬性時,
      當你進行任何檔案的修改,該更動會『同步』寫入磁碟中。
 a  :當設定 a 之後,這個檔案將只能增加資料,而不能刪除也不能修改資料,只有root 才能設定這屬性
 c  :這個屬性設定之後,將會自動的將此檔案『壓縮』,在讀取的時候將會自動解壓縮,
      但是在儲存的時候,將會先進行壓縮後再儲存(看來對於大檔案似乎蠻有用的!)
 d  :當 dump 程序被執行的時候,設定 d 屬性將可使該檔案(或目錄)不會被 dump 備份
 i  :這個 i 可就很厲害了!他可以讓一個檔案『不能被刪除、改名、設定連結也無法寫入或新增資料!』
      對於系統安全性有相當大的助益!只有 root 能設定此屬性
 s  :當檔案設定了 s 屬性時,如果這個檔案被刪除,他將會被完全的移除出這個硬碟空間,
      所以如果誤刪了,完全無法救回來了喔!
 u  :與 s 相反的,當使用 u 來設定檔案時,如果該檔案被刪除了,則資料內容其實還存在磁碟中,
      可以使用來救援該檔案喔!
 注意1:屬性設定常見的是 a 與 i 的設定值,而且很多設定值必須要身為 root 才能設定
 注意2:xfs 檔案系統僅支援 AadiS 而已

 範例:請嘗試到/tmp底下建立檔案,並加入 i 的參數,嘗試刪除看看。
 chattr +i attrtest <==給予 i 的屬性
 rm attrtest        <==嘗試刪除看看
 rm: remove regular empty file `attrtest'? y
 rm: cannot remove `attrtest': Operation not permitted        # 看到了嗎?呼呼!連 root 也沒有辦法將這個檔案刪除呢!趕緊解除設定!

 範例:請將該檔案的 i 屬性取消
 chattr -i attrtest

 這個指令是很重要的,尤其是在系統的資料安全上面!由於這些屬性是隱藏的性質,所以需要以 lsattr 才能看到該屬性呦!其中,個人認為最重要的當屬 +i 與 +a 這個屬性了。+i 可以讓一個檔案無法被更動,對於需要強烈的系統安全的人來說, 真是相當的重要的!裡頭還有相當多的屬性是需要 root 才能設定的呢!

 此外,如果是 log file 這種的登錄檔,就更需要 +a 這個可以增加,但是不能修改舊有的資料與刪除的參數了!怎樣?很棒吧! 未來提到登錄檔 (十八章) 的認知時,我們再來聊一聊如何設定他吧!

 Linux 文件类型

 普通文件 - 、目录文件 d 、字符设备文件 c 、块设备文件 b 、符号链接文件 l 、套接口文件 s 、先进先出文件 f 

 文件的命名规则

 最大长度:文件或目录名最大长度为 127 个中文字符,英文则可以支持 255 个数字字母字符,包含完整路径名称及目录 (/) 之完整档名为 4096 个字符。
 非数字字母字符:一些非数字字母字符或者元字符是可用的:“ _ - . + ”;允许但要再终端转义的符号“ ; < > * ? ~ [ ] & | " $ ”,因为这些符号再终端中有特殊含义。
 文件名扩展:文件名可以包含零个或多个扩展名。扩展名常被一个应用追加到文件的末端。扩展名通常是1个到3个字符,追加到文件名的末端,之前有一个句点。
 目录名的扩展名:目录名一般不包含扩展名,但是也没有规则反对这一点。
 大小写敏感:Linux文件和目录名是大小写敏感的,一般规则都是使用小写字母。

 根文件系统

 系统启动挂载的第一个文件系统。

 系统第一个进程是所有进程的祖先,由它fork出来的进程将继承它的根目录。

 与根目录的关系:根目录就是“ / ”,和文件系统关系不大。

 常用文件系统( vfs )

 df -T

 ext2
 ext3
 ext4
 fat32                W95 FAT32
 ntfs
 xfat
 nfs
 CIFS                Windows 网络邻居使用的协议,同 NFS
 vfat                同 fat32
 xfs

 文件系统操作

 mkfs.xfs -f /dev/mapper/centos-home            格式化

 逻辑卷

 准备生产环境中数据目录(逻辑卷)            

 fdisk /dev/sda                    创建一个逻辑分区/dev/sda6
 p、打印分区表
 n、新建一个新分区:e 表示扩展分区,p 表示主分区;按" p "键出现提示:"Partition number (1-4): "选择主分区号,输入"1"表示第一个主分区;直接按回车表示从 1 柱面开始分区,提示最后一个柱面或大小时输入 +5620M 按回车表示第一个分区为5G空间
 d、删除一个分区
 q、退出不保存
 t、指定分区类型:输入 L 显示各种文件系统对应的 id 值,输入 id 就可以改变分区类型了( GPT、FAT32、EFI、AIX、Linux、Linux swap、Linux LVM )
 w、把分区写进分区表,保存并退出

 格式化分区(逻辑卷不用这一步)
 {
     $ mkfs.ext3 /dev/hdd1
 }

 创建逻辑卷
 pvcreate /dev/sda6
 vgcreate myvg /dev/sda6
 lvcreate -L 10G -n mydata /dev/myvg

 格式化逻辑卷
 mke2fs -t ext4 /dev/myvg/mydata

 创建数据目录
 #mkdir -pv mydata/data

 ext2 详细介绍

 超级块

 用来存储了该文件系统的大量基本信息,包括块的大小、每块组中包含的块数等。同时,系统会对超级块进行备份,备份被存放在块组的第一个块中。超级块的起始位置为其所在分区的第1024个字节,占用1KB的空间。

 struct ext2_super_block {
 __le32 s_inodes_count; // 文件系统中inode的总数
 __le32 s_blocks_count; // 文件系统中块的总数
 __le32 s_r_blocks_count; // 保留块的总数
 __le32 s_free_blocks_count; // 未使用的块的总数(包括保留块)
 __le32 s_free_inodes_count; // 未使用的inode的总数
 __le32 s_first_data_block; // 块ID,在小于1KB的文件系统中为0,大于1KB的文件系统中为1
 __le32 s_log_block_size; // 用以计算块的大小(1024算术左移该值即为块大小)
 __le32 s_log_frag_size; // 用以计算段大小(为正则1024算术左移该值,否则右移)
 __le32 s_blocks_per_group; // 每个块组中块的总数
 __le32 s_frags_per_group; // 每个块组中段的总数
 __le32 s_inodes_per_group; // 每个块组中inode的总数
 __le32 s_mtime; // POSIX中定义的文件系统装载时间
 __le32 s_wtime; // POSIX中定义的文件系统最近被写入的时间
 __le16 s_mnt_count; // 最近一次完整校验后被装载的次数
 __le16 s_max_mnt_count; // 在进行完整校验前还能被装载的次数
 __le16 s_magic; // 文件系统标志,ext2中为0xEF53
 __le16 s_state; // 文件系统的状态
 __le16 s_errors; // 文件系统发生错误时驱动程式应该执行的操作
 __le16 s_minor_rev_level; // 局部修订级别
 __le32 s_lastcheck; // POSIX中定义的文件系统最近一次检查的时间
 __le32 s_checkinterval; // POSIX中定义的文件系统最近检查的最大时间间隔
 __le32 s_creator_os; // 生成该文件系统的操作系统
 __le32 s_rev_level; // 修订级别
 __le16 s_def_resuid; // 报留块的默认用户ID
 __le16 s_def_resgid; // 保留块的默认组ID
 // 仅用于使用动态inode大小的修订版(EXT2_DYNAMIC_REV)
 __le32 s_first_ino; // 标准文件的第一个可用inode的索引(非动态为11)
 __le16 s_inode_size; // inode结构的大小(非动态为128)
 __le16 s_block_group_nr; // 保存此超级块的块组号
 __le32 s_feature_compat; // 兼容特性掩码
 __le32 s_feature_incompat; // 不兼容特性掩码
 __le32 s_feature_ro_compat; // 只读特性掩码
 __u8 s_uuid[16]; // 卷ID,应尽可能使每个文件系统的格式唯一
 char s_volume_name[16]; // 卷名(只能为ISO-Latin-1字符集,以’\0’结束)
 char s_last_mounted[64]; // 最近被安装的目录
 __le32 s_algorithm_usage_bitmap; // 文件系统采用的压缩算法
 // 仅在EXT2_COMPAT_PREALLOC标志被设置时有效
 __u8 s_prealloc_blocks; // 预分配的块数
 __u8 s_prealloc_dir_blocks; // 给目录预分配的块数
 __u16 s_padding1;
 // 仅在EXT3_FEATURE_COMPAT_HAS_JOURNAL标志被设置时有效,用以支持日志
 __u8 s_journal_uuid[16]; // 日志超级块的卷ID
 __u32 s_journal_inum; // 日志文件的inode数目
 __u32 s_journal_dev; // 日志文件的设备数
 __u32 s_last_orphan; // 要删除的inode列表的起始位置
 __u32 s_hash_seed[4]; // HTREE散列种子
 __u8 s_def_hash_version; // 默认使用的散列函数
 __u8 s_reserved_char_pad;
 __u16 s_reserved_word_pad;
 __le32 s_default_mount_opts;
 __le32 s_first_meta_bg; // 块组的第一个元块
 __u32 s_reserved[190];
 };

 inode 是固定长度的记录项,它包含了有关文件的大部分信息,但不包含文件名;文件名和 inode 编号是存放在目录项中的。
 inode 包含:
   * 文件的字节数
   * 文件拥有者的User ID
   * 文件的Group ID
   * 文件的读、写、执行权限
   * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
   * 链接数,即有多少文件名指向这个inode
   * 文件数据block的位置

 APPLE 文件系统

 os文件资源管理器Finder

 文件系统结构

 符合unix传统的目录
 /bin                传统unix命令的存放目录,如ls,rm,mv等。
 /sbin                传统unix管理类命令存放目录,如fdisk,ifconfig等等。
 /usr                第三方程序安装目录。
 /usr/bin, /usr/sbin, /usr/lib                其中/usr/lib目录中存放了共享库(动态链接库).
 /etc                标准unix系统配置文件存放目录,如用户密码文件/etc/passwd。此目录实际为指向/private/etc的链接。
 /dev                设备文件存放目录,如何代表硬盘的/dev/disk0。
 /tmp                临时文件存放目录,其权限为所有人任意读写。此目录实际为指向/private/tmp的链接。
 /var                存放经常变化的文件,如日志文件。此目录实际为指向/private/var的链接。
 这些标准的Unix目录在Finder中并不可见

 os x特有的目录
 /Applications            应用程序目录,默认所有的GUI应用程序都安装在这里;
 /Library                系统的数据文件、帮助文件、文档等等;
 /Network                网络节点存放目录;
 /System                他只包含一个名为Library的目录,这个子目录中存放了系统的绝大部分组件,如各种framework,以及内核模块,字体文件
 /Users                存放用户的个人资料和配置。每个用户有自己的单独目录。
 /Volumes                文件系统挂载点存放目录。
 /cores                内核转储文件存放目录。当一个进程崩溃时,如果系统允许则会产生转储文件。
 /private                里面的子目录存放了/tmp, /var, /etc等链接目录的目标目录。

 问题

 tips

linux 文件系统的更多相关文章

  1. linux文件系统体系结构 和 虚拟文件系统(VFS)

    图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...

  2. Linux文件系统

    今天学习了Linux文件系统,现在来做个小总结. 首先Linux中一切都是文件,下面这个清单是Linux系统的顶层目录结构. 清单 1. Linux 系统的顶层目录结构 / 根目录 ├── bin 存 ...

  3. linux 文件系统简介

    linux文件系统简介   文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基 ...

  4. Linux文件系统层次结构标准

    该标准的目的是定义Linux文件系统的标准路径,使得开发者和用户可以在合理的位置找到需要的东西. Linux的文件布局的大体想法是将文件和目录分为如下3组: 对运行Linux的某一特定系统唯一的文件和 ...

  5. linux文件系统节点详解

    linux文件系统有两层结构,逻辑结构和物理结构.也就是inode和block. 每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码. block是实际存放文件内容的地方 ...

  6. Linux文件系统应用---系统数据备份和迁移(用户角度)

    1   前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...

  7. linux 文件系统解析及相关命令

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

  8. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

  9. linux文件系统简介

    文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储结构.软链接 ...

  10. linux文件系统---10

    进入 Linux 根目录(即“/”, Linux 文件系统的入口, 也是处于最高一级的目录),运行“ls –l”命令,可以看到 Linux 系统包含以下目录. 1./bin 包含基本命令,如 ls.c ...

随机推荐

  1. Shiro-HelloWord

    HelloWorld Shiro的HelloWorld不是我们写的,而是看Shiro给我们提供的一段代码.通过这段代码可以看到Shiro大致的使用方式. 1.找到Shiro的jar包 目前的最新稳定版 ...

  2. asp.net页面生命周期

    Asp.Net页面生命周期 本文转载自:http://www.cnblogs.com/xhwy/archive/2012/05/20/2510178.html 一.什么是Asp.Net页面生命周期 当 ...

  3. HAOI2017前

    NOIP后想换一个看起来比较高端的博客,于是尝试用github+hexo建站,地址大概是这样的,搞了一周左右.. 最终以失败告终,一是代码高亮有bug,二是数学公式有bug,三是博文没法快速搬迁QAQ ...

  4. 163邮箱问题:554 DT:SPM 163 smtp5,D9GowACHO7RNWNdXmXs1Bw--.9035S2

    最近公司需要开发一个自定义邮箱功能,上网查询一下,利用163邮箱发送邮件. 由于163 的反垃圾机制,(坑爹机制.) 一般出现 554有在1)测试中用了test,测试,关键字在主题或者内容里面. 但是 ...

  5. 编译安装mmseg提示cannot find input file: src/Makefile.in错误

    今天安装中文词检索功能模块 coreseek,其中一个分词模块 mmseg ,编译安装到最后,出现annot find input file: src/Makefile.in aclocal   // ...

  6. 12月15日下午Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

  7. 海拔高度图*.dem文件的读取—vtkDEMReader

    vtkDEMReader reads digital elevation files and creates image data. Digital elevation files are produ ...

  8. 20155324王鸣宇对C语言课程回顾及对Java的展望

    # 第二次预备作业 你有什么技能比大多人(超过90%以上)更好? 针对这个技能的获取你有什么成功的经验? 与老师博客中的学习经验有什么共通之处? 我谦虚的说整个2015级五系英雄联盟这个游戏我最厉害( ...

  9. highlight高亮风格

    highlight代码高亮的style有很多个,今天闲着没事,突然想看看各个style的效果.列在这里,以后想用的时候看看. ------------------------------------- ...

  10. python小知识积累