就像 FAT 有文件属性(文档,系统文件,隐藏)一样,GNU/Linux 文件系统也有它自己的文件属性,不过它们有些区别。为了使本书内容完整,我们将在这里简要介绍它们,不过它们很少被用到。但是如果您真的需要安全的系统,就请继续读下去吧。
这里有两个对文件属性进行操作的命令: lsattr(1) 和 chattr(1)。您可能会猜到 lsattr 用来“列出”属性,而 chattr 用来“更改”它们。只有目录和普通文件可以被赋予这些属性。以下是可以被赋予的属性:
A (“没有访问时间”): 如果一个文件或目录被赋予了这种属性,无论它是被读或写中的哪种方式访问,它的上次访问时间都不会被更新。举例来说,这对于经常被读访问的文件或目录是非常有用的。尤其因为这是信息节点被只读打开时唯一更改的参数。
a(“只能附加”):如果一个文件具有这种属性并且被以写入的方式打开,唯一可能对它进行的操作就是增加数据到以前存入的内容之后。对于一个目录,这意味着您只能增加文件而不能对现存文件改名或删除。只有 root 可以设定或清除这种属性。
d (“不 dump”):dump (8) 是 UNIX® 的标准备份工具。它 dump 任何 /etc/fstab 中 dump 计数器为1的文件系统(请参考 第 8 章 文件系统和挂载点)。和别的属性不同的是,如果一个文件或目录被赋予了这种属性,在 dump 执行过程中它将不被处理。注意对于目录来说,这也包括它所有的子目录和其中包含的文件。
i (“不可变更”):一个被赋予这种属性的文件或目录是完全不能被修改的:它不能被重命名,指向它链接不能被建立[24]而且它不能被删除。只有 root 可以设置或清除这种属性。注意它也会禁止对访问时间的改动。因此当 i 属性被设置了以后,您就不用再设置 A 了。
s(“安全删除”):当一个具有这种属性的文件或目录被删除以后,这个文件或目录所占有的块将被0覆盖。
S(“同步模式”):所有对具有这样属性的文件或目录的修改都会被立即同步地写入到磁盘上。
比如您可能会为了防止恶性突发事件而给基本系统文件设置 i 属性。还有,看一下 man 里关于 A 属性的介绍:这可以减少对磁盘的操作,特别是可以为笔记本电脑节省电池耗电。
总共用5个数字来表示文件的各种.
00000.第一位表示设置用户ID.第二位表示设置组ID,第三位表示用户自己的权限位,第四位表示组的权限,最后一位表示其他人的权限.
每个数字可以取1(执行权限),2(写权限),4(读权限),0(什么也没有)或者是这几个值的和.
比如我们要创建一个用户读写执行,组没有权限,其他人读执行的文件.设置用户ID位那么我们可以使用的模式是--1(设置用户ID)0(组没有设置)7(1+2+4)0(没有权限,使用缺省)5(1+4)即10705
Linux用使用一个四位八进制数来标识每一个文件(包括普通文件、目录、设备、链接等)的属性。
文件属性一般用数字来表示,形如0000。其中从左到右,第一位表示特殊权限,第二位表示属主权限,第三位表示组权限,第四位表示其它组权限。
第二、三、四位含义相同,即4表示读权限,2表示写权限,1表示执行权限,算法见楼主贴。
第一位表示特殊权限。4为Set Uid,即该文件运行时运行者拥有文件属主的权限,属于属主权限。2为Set Gid,即该文件运行时运行者拥有组权限,属于组权限。1为sticky,表示该文件不可被除root以外的任何用户删除,属于其它组权限。
*注:对shell脚本的Set Uid设置是无效的。
如果第一位为0,一般可以省略。
因此较为常见的权限的数字表示法有:普通文件:644,普通目录:755,普通可执行文件:755,而/usr/bin/passwd文件拥有Set Uid属性,表示为4755。
此外较常用的是用单一字母表示文件权限。u表示属主,g表示组,o表示其它组,a表示属主、组、其它组三者,r表示读权限,w表示写权限,x表示执行权限,s表示Set Uid和Set Gid,t表示Sticky。更改有+、-、=。如u+r位属主拥有读权限,g=w表示组权限为只写,o-x为其它组失去执行权限,a=rwx表示所有人权限都为可读可写可执行。如果要设置Set Uid、Set Gid、Sticky,则应该分别写成u+s、g+s、o+x。
如果用ls -l察看文件,可以看到用字母串表示的文件权限,如-rw-r--r--。第一位为文件类型,-表示文件,d表示目录,l表示链接,b表示块文件,p表示管道文件,c表示字符文件。以后的位每三位一组,对应属主、组、其它组。r--表示只读,-w-表示只写,--x表示只可执行,而rwx则表示可读可写可执行。而特殊权限在第四、七、十位。Set Uid在第四位,用S表示。如果该位原先已经有x,则用s表示。Set Gid在第七位,用S表示。如果原先已有,则用s表示。Sticky在第十位,用T表示。如果原先已有,则用t表示。如普通文件为-rw-r--r--,普通目录为drwxr-x-r-x,普通可执行文件为-rwxr-xr-x,而/usr/bin/passwd为-rwsr-xr-x。
阅读(1495) | 评论(0) | 转发(0) |