日期:2014-05-16  浏览次数:20656 次

linux 文件和目录的权限

在所属普通帐号user的文件夹中, 删除了文件所属为root的文件root_file, root_file的文件权限为644。看root_file的文件权限, user帐号都没有写权限, 却能将其删除,自己还是第一次碰到这种情况,很是吃惊。以前总是认为,这种事情是不可思议的。user作为一个普通帐号,怎么能删除文件属主是root的文件呢? 是不是大家也遇到过这种情况?

?

以下是相关的参考:

?

目录也是一种文件
目录上的读写执行权限和普通文件有所不同:
读:用户能读取目录内的文件
写:独立使用没有作用。和执行权限连用能在目录内添加和删除文件。
执行:用户能进入目录,调用目录内的资料
?
除了读写执行权限以外,ext2文件系统还支持强制位(setuid 和setgid)和冒险位(sticky)的特别权限。
针对u,g,o,分别有set uid,set gid,及sticky。
强制位和冒险位添加在执行权限的位置上。如果该位置上原已有执行权限。则强制位和冒险位以小写字母的方式表示,否则,以大写字母表示。
set uid和set gid在u和g的x位置上各采用一个s,sticky使用一个t。?
??
默认情况下,用户建立的文件属于用户当前所在的组。
目录上设置了setgid,表示在此目录中,所有人建立的文件,都会属于目录所属的组。?
?
默认情况下,如果一个目录上有w和x权限,则所有人能在此目录中建立和删除文件。
一旦目录上设置了冒险位,则表示在此目录中,只有文件的拥有者、目录的拥有者和系统管理员能删除文件。?
?
在可执行文件上,用户能添加set uid和set gid。
默认情况下,用户执行一个指令,会以该用户的身份来运行进程。
指令文件上的强制位,能让用户执行的指令,以指令文件的拥有者或所属组的身份运行进程。?
??
用户能用chmod指令来为文件设置强制位和冒险位。
set uid:chmod u+s 文件名
set gid:chmod g+s 文件名
sticky:chmod o+t 文件名
强制位和冒险位也能通过一个数字加和,放在读写执行的三位数字前来指定。
4(set uid)
2(set gid)
1(sticky)

设置s u i d??/? ? g u i d
命令? ?? ?? ?? ?? ?? ?? ? 结果? ?? ?? ?? ?? ???含义
chmod 4755? ?? ?? ?? ?-rwsr-xr-x? ?? ?? ?? ?? ???suid、文件属主具有读、写和执行的权限,所有其他用户具有读和执行的权限
chmod 6711? ?? ?? ?? ?-rws--s--x? ?? ?? ?? ?? ???suid、sgid、文件属主具有读、写和执行的权限,所有其他用户具有执行的权限
chmod 4511? ?? ?? ?? ?-rwS--x?x? ?? ?? ?? ?? ?suid、文件属主具有读、写的权限,所有其他用户具有执行的权限
上面的表中有具有这样权限的文件:rwS --x -- x,其中S为大写。他表示相应的执行权限位并未被设置,这是一种没有什么用处的suid设置能忽略他的存在。
注意,chmod命令不进行必要的完整性检查,能给某一个没用的文件赋予所有权限,但 chmod 命令并不会对所设置的权限组合做什么检查。因此,不要看到一个文件具有执行权限,就认为他一定是个程式或脚本。

1 楼 robbin 2008-11-27  
umask设的不对呗,这有啥稀奇。
2 楼 phoenix007 2008-11-28  
robbin 写道

umask设的不对呗,这有啥稀奇。

看清楚了, root_file的文件权限是644。root组的用户都没有写权限。 说umask有问题,请说具体些。
3 楼 xuyao 2008-11-28  
继承父文件夹权限了吧
4 楼 phoenix007 2008-11-29  
对于目录,许可权限字母的含义如下:
r──指读目录中文件列表的能力,如"ls"命令。(如果只有读目录列表的许可,则不可以在目录内部执行命令。)
w──同搜索(x)权限共同使用时,在目录中产生或删除文件的能力。如果目录具有写的权限,而文件没有写的权限,你仍可以删除文件,但不可以修改文件。
x ──目录搜索能力。可以在已知文件名时在目录中执行此文件。一般来说,大多数目录操作都要求读(r)和搜索(x)权限。

因为user对文件夹有w权限,所以可以删除属主是root的写保护文件。