处理文件属性

下述命令将能更改文件的所有者或其所有组以及它的权限。有关权限,我们已在UNIX 系统基本概念讨论。

chown, chgrp:改变一个或多个文件的所有者及所有组

chown (改变所有者(CHange OWNer))命令语法如下:

chown [选项] <用户[:组]> <文件|目录> [文件|目录...]

其选项包括:

  • -R:递归。更改给定目录中所有文件及其子目录的所有者。

  • -v:详细模式。显示 chown 执行的每一步;报告结果哪些文件更改了所有权而哪些没有。

  • -c:类似 -v,不过只报告更改了的文件。

例如:

  • chown nobody /shared/book.tex:将 /shared/book.tex 文件的所有者改为 nobody

  • chown -Rc zhang:music *.mid concerts/:将当前目录下所有以 .mid 结尾的文件以及 concerts/ 目录下所有文件和子目录的所有权指派给 zhang 用户和 music 组,并只报告所有受到该命令影响的文件。

chgrp (更改组(CHange GRouP))命令让您能够更改文件的所有组;其语法同 chown 非常类似:

chgrp [选项] <组> <文件|目录> [文件|目录...]

该命令的选项类似 chown,其用法也差不多。因此:

chgrp disk /dev/hd*

/dev/ 目录下以 hd 开头的全部文件改为由 disk 组拥有。

chmod:更改文件或目录的权限

chmod (更改模式(CHange MODe))命令的语法十分特别。其一般语法为:

chmod [选项] <目标模式> <文件|目录> [文件|目录...]

其特别之处在于其中的“目标模式”的形式。它可以有以下两种形式:

  1. 八进制形式:所有者权限对应的数字形式是 <x>00,其中 <x> 为 4 代表有读权限,2 代表有写权限,而 1 代表执行权限。同样,所有组权限的形式为 <x>0,而对于“其他人”的权限为 <x>。那么,只要将这些权限相加就能够得到正确的权限模式了。因此,权限 rwxr-xr-- 对应 400+200+100 (所有者权限 rwx) +40+10 (所有组权限 r-x) +4 (其他人权限 r--) = 754。这种形式是绝对形式,也就是说,先前的权限被无条件替换。

  2. 表达式形式:这种形式用一个以逗号分隔的表达式序列表示。其中的表达式形式为:[类别]<+|-|=><权限>

    其中“类别”可以为:

    • u (用户(User) -- 所有者的权限);

    • g (组(Group) -- 所有组的权限);

    • o (其他人(Others) -- “其他人”的权限)。

    如果没有指定类别,所有类别将会一起改变。+ 用来设置权限,- 用来取消权限,而 = 设置权限。最后,表达式中的“权限”可以为以下之一或多个:

    • r ();

    • w () or;

    • x (执行).

它主要的选项同 chownchgrp 类似。

  • -R:递归更改权限。

  • -v:详细模式。为每个文件显示执行的每一步骤。

  • -c:与 -v 相似,不过只显示受到命令影响的文件。

例如:

  • chmod -R o-w /shared/docs:对 /shared/docs/ 目录中所有文件和子目录递归地取消其他人对其的写权限。

  • chmod -R og-w,o-x private/:递归地取消所有组其他人对整个 private/ 目录的写权限,并取消其他人对它的执行权限。

  • chmod -c 644 misc/file*:将 misc/ 目录中以 file 开头的所有文件的权限改为 rw-r--r-- (即所有人可读,仅所有者可写),并报告那些被该命令更改权限的文件。