Unix操作系统基础:Unix文件系统之文件权限
1. 应用背景
由于Unix系统是一个多用户系统,通常有多个用户同时在系统上工作。这些用户都可以遵循路径名到达不同的目录并读取或执行属于他人的文件。
为了用户能够保护自己的文件,以免被他人读取、修改或删除,用户可以使用AIX提供的命令来读取文件权限的相应位,以控制谁能使用你的文件,保证文件的安全性。
2. 文件权限
1) 文件权限的种类:
对任何类型的Unix文件,可以设置三种权限
Ø 读(r)权限:可读取文件的内容
Ø 写(w)权限:可修改文件的内容
Ø 执行(x)权限:
对普通文件,文件内容可被装入内存直接运行或逐条解释执行。
对目录文件,可在分析路径名的过程中检索该目录。
2) 文件保护权限:
rwx rwx rwx
用户 用户组 其他用户
普通文件:
r(read): 能够看文件的内容
w(write): 能够改变或删除文件的内容
x(execute):能够将文件作为命令执行(需要同时具备r)
目录文件:
r (read): 能够查看目录中有哪些文件
w(write): 能够在目录中创建或删除文件
x(execute): 能够进入到目录当中,对于目录,当想要访问目录中的任何一个文件
或者子目录时,x权限都是必须的。这意味着,对于你正在访问的文
件,本级目录及本级目录的所有父目录都必须有x权限。
对于目录,如果想使用w权限起作用,则它必须同时具备x权限。
3) 文件权限的检测
使用ls -l命令检测文件类型:
第一个字符:表示文件类型,上图d代表是一个目录。如果是-,代表是一个文件。
第2-4位 :表示文件所有者(属主)权限,此文件属主具有读写执行权限。
第5-7位: 表示属主所在组用户权限,此属主所在组具有读和执行权限。
第8-10位:表示其他用户对此文件的操作权限,其他用户为读和执行权限。
代表相关权限的字符的位置是固定的。
指定位置有相关字符,代表有相关权限,如果是-(减),则表示没有相关权限。
4) 修改文件权限
常用 chmod 命令来修改文件(包括普通、目录和设备)的访问权限,命令格式为:
#chmod pattern filename ...
其中,filename为要修改权限的文件名,可以有多个文件名,pattern为将改变成的
权限,可用两种形式表示:字母形式和数字形式。
字母形式(符号模式)
字母形式由用户类别(u,g,o)、如何改变(+,-)和权限(r,w ,x)三部分组成。
如:
chmod u+x file1
chmod o-w ile2 file3
chmod go+r file4
说明:
u表示属主,g表示属主组,o表示其他用户
t(sticky): 使文件正文保留在内存,不被交换到外存。
s(sdtuid): 使文件的调用者具有文件属主(或用户组)的权限。
5) 数值形式
把九个字母形成的权限划分为三组(属主用户、同组用户和其他用户),每组三位
(读、写、执行),在每一位上有对应的权限则为1,没有对应权限则为0,由此把
九位权限变成三位八进制数。如:
权限 | 对应二进制 | 八进制 |
rwx rw- rw- | 111 110 110 | 766 |
rw- r-- r-- | 110 100 100 | 644 |
rwx r-x r-x | 111 101 101 | 755 |
r-- --- --- | 100 000 000 | 400 |
r-x r-- --- | 101 100 000 | 540 |
rwx rwx rwx | 111 111 111 | 777 |
r-- r-- --- | 100 100 000 | 440 |
只要把相应的权限位的数字相加,就可以得到八进制的权限表示。
使用八进制模式设置文件的权限时,你不用考虑文件已有的权限,只须直接指定你
将要为各类用户设置的权限就可以。
6) 缺省的文件权限
Ø 新创建的文件缺省权限为:644
Ø 新创建的目录缺省权限为:755
Ø 缺省的权限可以通过修改系统变量 umask 的值。
新建文件或目录的 umask 通常为022,缺省值022是在文件/etc/security/user
中设置的,可以更改所有的用户 umask 值,也可以更改特定用户的umask值。
Ø 对新建的文件,系统不会赋予他执行权限。所以,新建权限的最大值为666。
Ø 对新建的目录,系统会赋予他执行的权限,即最大权限为777。
Ø 一般情况下,应该使用chmod命令对新创建的文件或目录进行权限管理。
7) 目录的写权限
如果你没有文件的写权限,那么你不能更改该文件的内容。然而,如果你拥有这个
文件所在的目录的写权限,那么你就可以超越文件的权限限制。
给其他用户授予目录的写权限是非常危险的。所以,在设置权限时要小心。对于已
经创建的目录,可使用 chmod 命令来修正已有的权限设置。