1. chmod(1)
  2. chmod(1)

NAME

chmod - 更改文件模式

摘要

chmod [选项] 模式 文件...

描述

本手册页为chmod命令文档的GNU版本。根据模式参数,chmod命令修改给定文件的 文件模式标志位。修改方法有两种,一种是符号表达式修改,另一种是八进制数比 特位匹配修改。

符号模式

符号模式的格式为[ugoa] [[+-=][perms...]...],其中perms可以是0,也可以 是rwxXst中的字母集合,还可以是ugo中的某一单个字母。可以同时给出多个符号 表达式,各表达式中间用逗号分开。

[ugoa]中的字母组合可以控制改变用户文件的访问权限:u代表文件拥有者(user) ,g代表同一组中的其他用户(group),o代表不同组的其他用户(other),而a代表 所有用户(all)。如果没有指定以上任意一个字母,则命令等同于给定a字母,即影 响所有用户,但是此种情况下,umask比特位的设置不受任何影响。

[+-=]中操作符+为单个文件模式比特位增加指定的权限;操作符-移除权限;操作 符=赋予权限,即增加指定权限,同时没有指定的权限则被移除,但该情况下,目 录未指定的用户集合与组ID标志位不受影响。

[rwxXst]中的字母分别对应如下权限:(r)读,(w)写,(x)执行或者搜索目录,(X) 执行/搜索——仅当目标为目录,或某些用户已对该文件具有执行权限时,(s)设置用 户或用户组的执行时权限,即下文中的“SUID与SGID标志位”条目,(t)限制删除标 志位或粘滞位。你可以指定ugo中的任一字母所对应的组别,对其设置上面提到的 各个权限,其中,u代表文件拥有者,g代表与文件同一用户组的其他用户,o代表 以上两个组别以外的用户。(这里说的“文件”概念,包括系统中所有的常规文件、 目录、设备、符号链接等等)

数字模式

该模式总共有4组八进制数(0-7)数字集合,均为4、2、1的比特位累加,分别代表 不同的意义,0忽略不计,代表不具有任何权限。第一组的三个数字分别代表用户 ID(4)、组ID(2)和限制删除或粘滞位属性(1);第二组代表文件拥有者用户的三个 权限:读(4)、写(2)、执行(1);第三组代表与文件同组的其他用户的读(4)、写 (2)、执行(1)权限;第四组代表文件组以外用户的读(4)、写(2)、执行(1)权限。

chmod不会修改符号链接的权限;包括系统调用的chmod也无法修改。这并不是一个 缺陷,而是因为符号链接的权限本身就不起任何作用。尽管如此,chmod却可以修 改符号链接所指向文件的权限。但当符号链接指向循环遍历目录的时候,chmod就 会忽略该符号链接。

SUID与SGID标志位

文件的SUID与SGID:如果一个常规文件所属的组ID,没有与文件所属用户所在的有 效组ID,或用户的某一个补充组ID相匹配,chmod就会清除该文件的SGID位,除非 用户进行特殊配置,但额外的限制可能会导致模式参数或RFILE参数中的SUID和 SGID位失效。这取决于系统调用chmod时的策略与功能设置。如果有疑问,可以具 体查看实际的系统行为设置。

目录的SUID与SGID:对于一个目录来说,chmod命令可以正常设置、保存其SUID位 和SGID位,除非你明确地指定其他标志位。你可以通过符号模式,例如u+sg-s来设置或清除其“s”权限,也可以通过数字模式设置(但无法清除)。

限制删除标志或粘滞位

限制删除标志位是一个单独的比特,其意义取决于不同的文件类型。对于目录来说 ,它防止一般用户删除或重命名目录中的文件,除非该用户是文件或目录的拥有者 ;此称为目录的限制删除标志位,它常常被用于所有人都可写的目录,例如/tmp。 对于一些老系统中的常规文件,该标志位用于在缓存设备中保存程序的文本镜像, 以便程序运行时能够更快速的加载,此称为粘滞位。

选项

-c,--changes

与下面的--verbose参数类似,但是仅当文件改变的时候才报告。

-f,--silent,--quiet

屏蔽大多数错误信息

-v,--verbose

输出每个文件的处理报告

--no-preserve-root

不处理‘/’(默认)

--preserve-root

无法递归处理‘/’时使用此参数

--reference=RFILE文件

使用RFILE文件中的模式代替参数“模式”的值。

每个“模式”参数均为[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+的形式。

-R,--recursive

递归修改文件和目录

--help

显示本帮助并退出

--version

显示版本信息并退出

参见

chmod(2)

  1. February 2015
  2. chmod(1)