2 菜鸟必读:RHCE课堂学习笔记


单元五:文件访问许可
所有文件都有一个拥有者(owned by a user) , 并和一个组(group)相连 。
因此一个用户是否有权限读写或者执行一个文件 , 是由这个文件是否被赋予了相应的权限所决定的 。权限可以设定给文件拥有者 , 文件所在的组 , 或者其他任何人 。
可由ls -l 命令来查看文件权限(permissions):
$ ls -l /bin/login
-rwxr-xr-x 1 root root 19080 Apr 1 18:26 /bin/login
可以看到文件的访问权限由10个字符表示 。
文件访问权限为三种用户种类使用 。每个种类都有一个表示字符:
u ――文件的拥有者(owner)
g ――文件所在组的其他用户
o ――任何用户(others)
每个种类的访问权限都彼此独立 , 互不相关 。
三种标准文件访问类型:
r ――文件的读权限/罗列目录内容的权限(list a directory"s contents)
w ――文件的写权限/在目录中建立或删除文件的权限
x ――文件的执行权限/访问目录中文件的权限 , 例如cd 到该目录
此三种标准文件访问类型可以赋给上述的三种文件访问权限的用户种类 , 即u、g、o 。
文件访问权限中 , 第2、3、4个字符表示了文件拥有者的权限;第5、6、7个字符表示了文件组的权限;第8 , 9 , 10个字符表示了其他用户的权限 。例如:
$ ls -l /bin/login
-rwxr-xr-x 1 root root 19080 Apr 1 18:26 /bin/login
说明了该文件的拥有者可以读写并执行该文件 , 其他的用户(包括组内用户)可以读、执行该文件 。又例:
$ ls -l README
-rw-rw-r-- 1 andersen visitor 2948 Oct 11 14:07 README
该文件可以由visitor组内的用户读写 , 但是并不能执行;能被其他用户读 , 但是其他用户不能改写它或者执行它 。
文件访问权限中的第一个字符"d"将目录和其他文件予以区分:
$ ls -ld /bin
drwxr-xr-x 2 root root 4096 Apr 20 18:13 /bin/
更多例子:
用户fred 是组fred 和组staff 的成员
用户mary 是组mary 和组admin, staff 的成员
文件fileA 拥有者是fred , 拥有者组是 fred
文件fileB 拥有者是mary , 拥有者组是 root
文件fileC 拥有者是root , 拥有者组是 staff
给出下表
----------------------------------------------
user fileA fileB fileC
----------------------------------------------
fred u,g,o o, o,g
mary o u,o o,g
root u,g,o u,g,o u,g,o
如果fileA 有访问权限rwxr-xr-- , 那么它访问权限如下:
read write excute
------------------------------------
fred yes yes yes
mary yes no no
root yes yes yes
改变文件权限用chmod 命令 , chmod 后跟一个表达式 , 表达式可以为一串数字或者一段预置的代码组合:改变谁的(who) , 操作符(operator)和权限(permission) 。
改变谁的(who)可以有下面的选择:
u 文件拥有者
g 在文件组内的用户
o 其他用户
a 所有用户
操作符(operator)可以有下面的选择:
增加权限
- 删除权限
= 将权限赋予…
权限(permission)可以有下面的选择:
r 读
w 写
x 执行(对于目录来说是访问)
s Set userID bit(第四位)或者set groupID bit(第七位)
t Set sticky bit(对于目录来说便是――防止其他非拥有者删除目录中的文件 , 位于第10位)
例如:
$ chmod g w .bash_profile
该命令将写权限赋予了文件组内的用户 。
$ chmod go-rw .bash_profile
该命令剥夺了非拥有者用户的读写权限 。
chmod 中有一个有用的参数为-R (递归 , 注意大写) , 可以将整个目录中的文件和子目录的权限全部改写 。
前面提到还有一种方法可以修改文件权限 , 就是数字方式 。以三个数字的方式确定文件的访问权限 。第一个数字代表拥有者权限、第二个代表文件所在组内的用户权限、第三个代表其他用户权限 。权限表达式由以下数字相加而得:

推荐阅读