7.7 用字母表示法修改文件和目录的权限
chmod [ugo][+-=][rwx]
chmod
命令使用两种权限表示法:字母或数字。二者各有各的优点,但是有时对于用户来说,先学习字母系统要更容易些。字母表示法基本上使用一个简单的公式:想要修改的用户组(u、g、或者o),后面用加号(+
)来授予权限、用减号(-
)来删除权限、用等号(=
)来设置完全匹配的权限,后面再跟上表示想要修改的权限的字母(r、w、x、s、或者t)。例如,假设你想让family
用户组的成员能够修改图片。
$ ls –l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod g+w libby.jpg
$ ls -l
-rw-rw-r-- 1 scott family ... libby.jpg
非常简单。但是如果你想让family
组以及所有其他用户都有权改写文件,该怎么办呢?
$ ls –l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod go+w libby.jpg
$ ls -l
-rw-rw-rw- 1 scott family ... libby.jpg
当然,因为你真正想要的是让所有用户(拥有者、用户组以及所有其他人)都能读和写访问,应该使用以下命令:
$ ls –l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod a=rw libby.jpg
$ ls -l
-rw-rw-rw- 1 scott family ... libby.jpg
如果你觉得自己犯了一个错误,需要删除family
组和其他人的权限,不让他们修改图片,甚至要确保其他人都看不到图片。
$ ls –l
-rw-rw-rw- 1 scott family ... libby.jpg
$ chmod go-w libby.jpg
$ ls -l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod o-r libby.jpg
$ ls -l
-rw-r----- 1 scott family ... libby.jpg
除了使用-,也可以使用=:
$ ls –l
-rw-rw-rw- 1 scott family ... libby.jpg
$ chmod g=r libby.jpg
$ ls -l
-rw-r--rw- 1 scott family ... libby.jpg
$ chmod o= libby.jpg
$ ls -l
-rw-r----- 1 scott family ... libby.jpg
注意最后的chmod
命令,o
等于什么也没有,相当于删除了系统中所有其他用户的所有权限。现在就又快又有效率了。
字母系统的优点在于它的速度通常很快。但是从最后一个例子中也能看到它的主要缺点:如果要修改两个或更多的用户组,每个用户组的修改又各不相同,至少要运行chmod
命令两次。下一节就将介绍如何用数字表示法来解决这个问题。