一个用户、一个组
我们来看一看 Linux 权限和任何权模型。我们已看到每个文档属于一个用户和一个组。这正是 Linux 中权限模型的核心。您能够在 ls -l 清单中查看用户和组:
|
-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash在这个特别的示例中,/bin/bash 可执行文档属于 root 用户,并且在 wheel 组中。Linux 权限模型通过允许给每个文档系统对象配置三种单独的权限级别来工作 — 他们为文档的任何者、文档的组连同任何其他用户。
理解“ls -l”
我们来看一看我们的 ls -l 输出,检查一下这个清单的第一栏:
$ ls -l /bin/bash-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash第一个字段 -rwxr-xr-x 包含该特别文档的权限的符号表示。该字段中的首字符(-)指定该文档的类型,本例中他是个常规文档。其他可能的首字符更有:
“d”目录“l”符号链接“c”字符专门设备文档“b”块专门设备文档“p”先进先出“s”套接字三个三元组$ ls -l /bin/bash-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash该字段的其余部分由三个三元组字符组成。第一个三元字符组代表文档任何者的权限,第二个代表文档的组的权限,第三个代表任何其他用户的权限:
"rwx""r-x""r-x"上面,r 表示允许读(查看文档中的数据),w 表示允许写(修改文档连同删除),x 表示允许“执行”(运行程式)。将任何这些信息放在一起,我们能够发现每个人都能够读该文档的内容和执行该文档,但是只允许文档任何者(root 用户)能够以任何方式修改该文档。因此,虽然一般用户能够复制该文档,但是只允许 root 用户更新或删除他。
我是谁?在我们看怎样改变文档的用户任何权和组任何权之前,我们首先来看一看怎样得知您当前的用户标识和组成员资格。除非最近您使用过 su 命令,否则您当前的用户标识是您用来登录系统的用户标识。但是,假如您经常使用 su,您可能不记得您当前有效的用户标识。要查看用户标识,输入 whoami:# whoamiroot# su drobbins$ whoamidrobbins我在哪一组?要看看您属于哪一组,使用 group 命令:$ groupsdrobbins wheel audio在上面的示例中,我是 drobbins、wheel 和 audio 组的成员。假如您想看看其他用户在什么组,指定他们的用户名作为参数:
$ groups root daemonroot : root bin daemon sys adm disk wheel floppy dialout tape videodaemon : daemon bin adm改变用户和组任何权为了改变文档或其他文档系统对象的任何者或组,分别使用 chown 或 chgrp。这两个命令都要一个用户名或组名作参数,后面跟上一个或多个文档名。
# chown root /etc/passwd# chgrp wheel /etc/passwd您还能够用 chown 命令的另一种形式同时配置任何者和组:
# chown root.wheel /etc/passwd除非您是终极用户,否则您不能够使用 chown,然而任何人都能够使用 chgrp 来将文档的组任何权改为他们所属的组。
递归的任何权改变chown 和 chgrp 都有一个 -R 选项,该选项能够用来告诉他们递归地将所属权和组改变应用到整个目录树中。例如:# chown -R drobbins /home/drobbins介绍 chmodchown 和 chgrp 能够用来改变文档系统对象的任何者和组,而另一个程式 — 叫做 chmod — 用来改变我们能够在 ls -l 清单中看到的 rwx 权限。chmod 带有两个或多个参数:“mode”,描述怎样改变权限,后面跟将会受到影响的文档或文档列表:$ chmod x scriptfile.sh在上面的示例中,我们的“mode”是 x。您可能会猜到, x 模式告诉 chmod,使该特别文档对于用户、组连同其他任何人都是可执行的。假如我们想要除去一个文档的任何执行权限,我们应该这样做: $ chmod -x scriptfile.sh用户/组/其他粒度到此,我们的 chmod 示例已影响到了任何三个三元组 — 用户、组和任何其他用户。通常,一次只修改一个或两个三元组很方便。要这样做,只需要在 或 - 符号之前,给您想要修改的特定的三元组指定符号字符。对于“用户”三元组使用 u,对于“组”三元组使用 g,对于“其他/每个人”使用 o:$ chmod go-w scriptfile.sh我们刚除去了组和任何其他用户的写权限,而保留“任何者”权限不动。 重新配置权限除了交替打开和关闭权限位以外,我们还能够一起重新配置他们。通过使用 = 操作符,我们能够告诉 chmod 我们要指定权限和取消别的权限:$ chmod =rx scriptfile.sh上面,我们只配置了任何的“read”和“execute”位,没有配置任何的“write”位。假如您仅仅想重新配置特定的三元组,您能够像下面这样,在 = 之前指定该三元组的符号名:



