一,基本组织结构
linux文件系统使用索引节点(inode)来记录文件信息。
索引节点是一个结构体,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。
一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一的元素对应。每个索引节点在数组中的索引号,称为索引节点号。
Linux文件系统将文件索引节点号和文件名同时保存在目录中,所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。
对于一个文件来说,有一个索引节点号与之对应;而对于一个索引节点号,却可以对应多个文件名。
连接分为软连接和硬连接,其中软连接又叫符号连接。
硬连接: 原文件名和连接文件名都指向相同的物理地址。目录不能有硬连接;硬连接不能跨文件系统(不能跨越不同的分区),文件在磁盘中只有一个拷贝。由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此硬连接可以防止不必要的误删除。
软连接: 用 ln -s 命令建立文件的符号连接。符号连接是Linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径名。没有防止误删除的功能。类似于windows下的快捷方式。
二,文件类型
普通文件 : 通常是流式文件
目录文件 : 用于表示和管理系统中的全部文件
连接文件 : 用于不同目录下文件的共享
设备文件 : 包括块设备文件和字符设备文件,块设备文件表示磁盘文件、光盘等,字符设备文件按照字符操作终端、键盘等设备。
管道(FIFO)文件 : 提供进程建通信的一种方式
套接字(socket) 文件: 该文件类型与网络通信有关
三,文件访问权限
Linux将文件访问者分为三类:所有者、用户组或其他用户。所有者就是创建文件的用户,用户是所有用户所创建的文件的所有者,用户可以允许所在的用户组能访问用户的文件。通常,用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。最后,用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是other用户类。
每一个用户都有它自身的读、写和执行权限。第一套权限控制访问自己的文件权限,即所有者权限。第二套权限控制用户组访问其中一个用户的文件的权限。第三套权限控制其他所有用户访问一个用户的文件的权限,这三套权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。
我们可以用-l参数的ls命令显示文件的详细信息,其中包括权限。
第一个字符一般用来区分文件和目录:
d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。
-:表示这是一个普通的文件。
l: 表示这是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。
第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
代表字符
权限
对文件的含义
对目录的含义
r
可读
允许查看文件内容
允许列出目录中的内容
w
可写
允许修改文件内容
允许在目录中创建、删除文件
x
可执行
允许执行文件
允许进入目录
其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”,因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成黑客入侵,甚至摧毁系统!!!
s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
s或S(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。
t或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。但是禁止用户删除目录中不属于自己的文件
因为SUID、SGID、Sticky占用x的位置来表示,所以在表示上会有大小写之分。加入同时开启执行权限和SUID、SGID、Sticky,则权限表示字符是小写的:
-rwsr-sr-t 1 root root 4096 6月 23 08:17 conf
如果关闭执行权限,则表示字符会变成大写:
-rwSr-Sr-T 1 root root 4096 6月 23 08:17 conf