文件的访问权限
时间:2006-04-05 来源:charlie36
用户类型 |
访问权限类型 |
||
读(r) |
写(w) |
执行(x) |
|
User(u) |
X |
X |
X |
Group(g) |
X |
X |
X |
Others(o) |
X |
X |
X |
X的值为1就表示允许,为0则禁止,所以rwx三位连在一起可以表示8种可能的权限,故除了用rwx表示外还可用八进制0~7表示。 Linux文件中文件类型位和访问特权位的位置可用下表表示: 位:15 12 11 10 0
SUID | GUID | Sticky | r | w | x | r | w | x | r | w | x |
Who | Operator | Privilege |
u User | +增加特权 | r 读 |
g Group | -删除特权 | w 写 |
o Others | =设置特权 | x 执行/搜索 |
a All | u 用户当前的特权 | |
ugo All | g 组当前的特权 | |
o 其他用户当前访问特权 | ||
l 锁定特权位 | ||
s 设定用户或组的ID位 | ||
t 粘带位 |
octal-mode就是八进制数0~7。
默认的文件访问特权:对可执行文件来说默认的是777,而对一个文本文件来说是666。可以用umask命令来设定或查看掩码。新建文件的访问权限是根据公式:文件访问权限=默认的访问权限-掩码 计算得到的。如使用命令$umask
022 则$ mkdir new $ ls -l ,可以看到new 的权限为drwxr-xr-x,即755,d表示的new是一个目录。 如果将掩码设成077,然后创建文件file,
$ umask 077
$ touch file
$ ls -l file
-rw------- 1 clifford clifford 0 Apr 5 13:02 bar
$
因为666-077,6-7=-1,但-1被当成0处理。
特殊访问位:set-user-ID(SUID)
这是用来允许用户能够执行像passwd这类命令而设的。passwd通过修改/etc/passwd来达到修改密码,但是该文件只有root才能更改,为了让用户也能自己修改,便设了SUID位。它使得没有写/etc/passwd文件权限的用户也可以运行passwd命令来进行写入。语法:chmod 4xxx file-list
chmod u+s file-list 八进制数4表示二进制数100,说明SUID位已经被置1,可参见本文表二。而SGID和SUID工作方式相似,只是语法为chmod 2xxx file-list chmod g+s file-list。现在新的Linuxt系统中sticky位 用来确保目录下的文件不被除目录拥有者外的其他用户移动或删除,即使那些用户对目录有写的特权,但仍可以在该目录下进行创建文件或子目录。语法:chmod 1xxx file-list chmod +t file-list。