chmod - 更改文件模式位
概要
chmod [选项]... 模式[,模式]... 文件...
chmod [选项]... 八进制模式 文件...
chmod [选项]... --reference=参考文件 文件...
描述
本手册页记录了 GNU 版本的 chmod。chmod 根据模式更改给定文件的文件模式位,模式可以是符号表示的更改,也可以是表示新模式位的八进制数字。
符号模式的格式为 [ugoa...][[-+=][权限...]...],其中权限是来自 rwxXst 集合的零个或多个字母,或者是来自 ugo 集合的单个字母。可以给出多个符号模式,用逗号分隔。
字母 ugoa 的组合控制将更改哪些用户的对文件的访问权限:文件所有者 (u)、文件组中的其他用户 (g)、不属于文件组的其他用户 (o) 或所有用户 (a)。如果未给出这些字母中的任何一个,则效果就像给出了 (a),但 umask 中设置的位不受影响。
运算符 + 导致选择的文件模式位添加到每个文件的现有文件模式位中;- 导致它们被删除;= 导致它们被添加,并导致未提及的位被删除,但目录中未提及的设置用户和组 ID 位不受影响。
字母 rwxXst 为受影响的用户选择文件模式位:读取 (r)、写入 (w)、执行(或用于目录的搜索)(x)、仅当文件是目录或已经为某些用户设置了执行权限时才执行/搜索 (X)、设置用户或组 ID 以进行执行 (s)、限制删除标志或粘性位 (t)。您可以指定来自 ugo 集合的单个字母,而不是这些字母中的一个或多个:授予文件所有者 (u) 的权限,授予属于文件组的其他用户的权限 (g),以及授予既不属于上述两个类别中的任何一个的用户的权限 (o)。
数字模式是从一个到四个八进制数字(0-7),通过将具有值 4、2 和 1 的位加起来来获得。省略的数字假定为前导零。第一个数字选择设置用户 ID (4)、设置组 ID (2) 和限制删除或粘性 (1) 属性。第二个数字选择文件所有者的权限:读取 (4)、写入 (2) 和执行 (1);第三个选择文件组中其他用户的权限,具有相同的值;第四个选择不属于文件组的其他用户的权限,具有相同的值。
chmod 不更改符号链接的权限;chmod 系统调用无法更改大多数系统上的权限,并且大多数系统会忽略符号链接的权限。但是,对于命令行中列出的每个符号链接,chmod 都会更改指向文件的权限。相反,chmod 会忽略在递归目录遍历过程中遇到的符号链接。修改此行为的选项在“选项”部分中描述。
SETUID 和 SETGID 位
chmod 命令会清除普通文件的 set-group-ID 位,如果该文件的组 ID 与用户的有效组 ID 或用户的任何辅助组 ID 不匹配,除非用户具有适当的权限。 附加的限制可能会导致忽略 MODE 或 RFILE 的 set-user-ID 和 set-group-ID 位。 这种行为取决于底层 chmod 系统调用的策略和功能。 如有疑问,请检查底层系统的行为。
对于目录,chmod 命令会保留 set-user-ID 和 set-group-ID 位,除非您明确指定否则。 您可以使用诸如 u+s 和 g-s 之类的符号模式来设置或清除这些位。 要清除目录的这些位,需要使用额外的零作为前缀,例如 00755,使用减号作为前缀,例如 -6000,或使用等号作为前缀,例如 =755。
限制删除标志或粘滞位
限制删除标志或粘滞位是一个单独的位,其解释取决于文件类型。 对于目录,它阻止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常在诸如 /tmp 之类的可供世界写入的目录中找到。 对于某些较旧系统上的普通文件,该位会将程序的文本映像保存在交换设备上,以便在程序运行时更快地加载;这称为粘滞位。
选项
将每个文件的模式更改为 MODE。 使用 --reference,将每个文件的模式更改为 RFILE 的模式。
-c, --changes
类似于 verbose,但仅在发生更改时报告
-f, --silent, --quiet
抑制大多数错误消息
-v, --verbose
为处理的每个文件输出诊断信息
--dereference
影响每个符号链接的引用对象,而不是符号链接本身
-h, --no-dereference
影响每个符号链接,而不是引用对象
--no-preserve-root
不要将 '/' 特殊处理(默认)
--preserve-root
不要递归地对 '/' 进行操作
--reference=RFILE
使用 RFILE 的模式而不是指定 MODE 值。 RFILE 始终是符号链接时进行解引用。
-R, --recursive
递归地更改文件和目录
以下选项修改在指定 -R 选项时如何遍历层次结构。 如果指定了多个选项,则仅最后一个选项生效。 -H 是默认值。
-H 如果命令行参数是符号链接到目录,则遍历它
-L 遍历遇到的每个符号链接到目录
-P 不遍历任何符号链接
--help 显示此帮助并退出
--version
输出版本信息并退出
每个 MODE 的形式为 '[ugoa]\*(\[-+=\]([rwxXst]\*|[ugo]))+|\[-+=\][0-7]+'。
作者
由 David MacKenzie 和 Jim Meyering 编写。
报告错误
GNU coreutils 在线帮助:[https://www.gnu.org/software/coreutils/] 请向 [https://translationproject.org/team/] 报告任何翻译错误。
参见
chmod(2)
完整文档 [https://www.gnu.org/software/coreutils/chmod] 或可通过以下方式在本地获取:info '(coreutils) chmod invocation'
由 Debian 包装 (9.7-3) 版权所有 © 2025 自由软件基金会。 许可证 GPLv3+:GNU GPL 第 3 版或更高版本 [https://gnu.org/licenses/gpl.html]。 这是自由软件:您可以自由地修改和重新分发它。 在法律允许的范围内,不提供任何担保。