对话 UNIX,第 4 部分: UNIX 所有权和权限管理( 四 )


下面是 chmod 的示例应用程序:
chmod u x script.sh:如果您编写了一个 Shell 脚本,并且希望执行它,那么需要设置其执行位 。其中,短语 u x 表示对用户所有者 (u) 设置 ( ) 执行位 (x) 。chmod 的一般形式是 chmod,不指定用户(即表示用户)、一个或多个 u、g(表示组)、或 o(表示其他用户),或 -,以及一个或多个 r、w 和 x 。
chmod go rx IBM:这个命令为组和其他用户设置了读和执行权限 。
chmod a rx script.sh:除了 u、g 和 o 以外,您还可以使用修饰符 a 来表示所有用户 或用户、组和其他用户 。因此,这个命令为所有的三类用户设置了读和执行权限 。
chgrp admin backups:这个命令将 backups 目录的组所有者更改为 admin 。
如果使用添加权限,它将会添加指定的权限,但不会修改其他的权限 。与之类似,如果使用 -(减号)撤消权限,它将会禁用某些权限,但不会修改其他的权限 。如果您希望一次设置所有的权限,可以使用数值文件模式 。(您还可以使用 chmod = 操作符 。有关详细的内容,请参见手册页面 。)
注意: 数值文件模式 是从 0 到 7 的 8 进制数字,或三位的数值,其中每一位分别表示读、写和执行 。因为对于每个文件都有三类用户,所以完整地指定文件模式需要三个数字,如 400、644 或 777 。下面提供了一些示例:
要让一个目录成为私有的,可以为自己设置权限,而撤销组和其他用户的权限:
$ mkdir example
$ ls -l
drwxr-xr-x2 strike strike68 Aug 28 11:27 example
$ chmod 700 example
$ ls -l
drwx------2 strike strike68 Aug 28 11:27 example
模式 700 可以表示为用户设置读、写和执行权限(开头的 7),而禁用所有其他的权限(后面的两个 0) 。
如果您希望让该计算机上其他的用户可以读取您的文件,可以为所有的三类用户设置读权限:
$ ls -l .aliases
-rw-------1 mstreich mstreich 79 Jul 26 17:08 .aliases
$ chmod 644 .alias
$ ls -l
-rw-r--r-- 1 mstreich mstreich 79 Jul 26 17:08 .aliases
644 是一种缩写,它表示为我设置读和写权限 (6),并为组 (4) 和其他用户 (4) 设置读权限 。当然,如果您的 home 目录中存在 .aliases 文件,那么必须将 $HOME 设置为允许列举和读 。
表 1 给出了用户所有者、组所有者和其他用户的数值及其关联的结果 。只需在每个部分中加上相应的值,就可以找到合适的值进行设置 。
表 1. 数值及其关联的结果
某类用户值结果用户0400允许所有者读 。0200允许所有者写 。0100对于文件,允许所有者执行,对于目录,允许所有者在该目录中进行搜索 。组0040允许组成员读 。0020允许组成员写 。0010对于文件,允许组成员执行,对于目录,允许组成员在该目录中进行搜索 。其他用户0004允许其他用户读 。0002允许其他用户写 。0001对于文件,允许其他用户执行,对于目录,允许其他用户在该目录中进行搜索 。例如,要为其他用户设置读和写权限,可以将 0004 加上 0002 以产生 0006 。对于用户和组,可以进行类似的操作,可以将三个总数加在一起,以产生完全限定的数值模式 。
权限是非常重要的
在 UNIX 系统中,需要不断地设置和管理相关权限 。通常,您需要对特定文件和目录具有适当的权限,以便运行一些守护进程;只有设置了正确的权限,这些目录(如 /tmp)才能正常工作;当然,要与其他用户共享某些文件,或保护您的文件不让其他用户访问,必须能够设置、更改和读取相应的权限 。
【对话 UNIX,第 4 部分: UNIX 所有权和权限管理】本系列中的下一篇文章将继续介绍文件,并研究在多台计算机上对大量的文件进行管理的实用程序和技术 。

推荐阅读