> For the complete documentation index, see [llms.txt](https://man.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://man.bsdcn.org/man1/chmod.1.md).

# chmod.1

CHMOD(1)

CHMOD(1)

FreeBSD General Commands Manual

CHMOD(1)

## [名称](#__u540D___u79F0_)

`chmod` —

改变文件模式

## [概要](#__u6982___u8981_)

`chmod` \[`-fhv`] \[`-R` \[`-H` | `-L` | `-P`]] mode file ...

## [描述](#__u63CF___u8FF0_)

`chmod` 实用程序修改由 mode 操作数指定的列出文件的文件模式位。

选项如下：

[`-f`](#f)

如果 `chmod` 无法修改 file 的模式，则不要显示诊断消息，也不要修改退出状态以反映此类故障。

[`-H`](#H)

如果指定了 `-R` 选项，则命令行上的符号链接会被跟随，因此不受该命令的影响。 （不遵循树遍历期间遇到的符号链接。）

[`-h`](#h)

如果文件是符号链接，请更改链接本身的模式，而不是链接指向的文件。

[`-L`](#L)

如果指定了 `-R` 选项，则遵循所有符号链接。

[`-P`](#P)

如果指定了 `-R` 选项，则不遵循符号链接。 这是默认设置。

[`-R`](#R)

更改以文件为根的文件层次结构的模式，而不仅仅是文件本身。 当使用 “`.*`” 等通配符时，请注意无意中将 “..” 硬链接匹配到父目录。

[`-v`](#v)

使 `chmod` 变得冗长，在修改模式时显示文件名。 如果多次指定 `-v` 标志，还将以八进制和符号表示法打印文件的旧模式和新模式。

除非指定了 `-R` 选项，否则 `-H` `-、` `-L` 和 `-P` 选项将被忽略。 此外，这些选项相互覆盖，命令的操作由最后一个指定的操作决定。

如果 `chmod` 接收到 `SIGINFO` 信号（参见 stty(1) 和 `status` 参数），则显示当前文件名以及旧模式和新模式。

只有文件的所有者或超级用户才被允许更改文件的模式。

## [退出状态](#__u9000___u51FA___u72B6___u6001_)

The `chmod` utility exits 0 on success, and >0 if an error occurs.

## [MODES](#MODES)

模式可以是绝对的或象征性的。 绝对模式是由以下一个或多个值的总和构成的八进制数：

[`4000`](#4000)

（setuid 位）。 设置了该位的可执行文件将在有效 uid 设置为文件所有者的 uid 的情况下运行。 如果底层文件系统支持此功能，则具有此位集的目录将强制在其中创建的所有文件和子目录由目录所有者拥有，而不是由创建进程的 uid 拥有：参见 chmod(2) 和 `suiddir` 选项 mount(8) 。

[`2000`](#2000)

（setgid 位）。 设置了此位的可执行文件将运行时将有效 gid 设置为文件所有者的 gid。

[`1000`](#1000)

（粘性位）。 请参阅 chmod(2) 和 sticky(7) 。

[`0400`](#0400)

允许所有者阅读。

[`0200`](#0200)

允许所有者写入。

[`0100`](#0100)

对于文件，允许所有者执行。 对于目录，允许所有者在目录中搜索。

[`0040`](#0040)

允许群组成员阅读。

[`0020`](#0020)

允许组成员写入。

[`0010`](#0010)

对于文件，允许组成员执行。 对于目录，允许组成员在目录中搜索。

[`0004`](#0004)

允许他人阅读。

[`0002`](#0002)

允许别人写。

[`0001`](#0001)

对于文件，允许他人执行。 对于目录，允许其他人在目录中搜索。

例如，允许所有者读、写和执行，组成员读和执行，其他人读和执行，并且没有 set-uid 或 set-gid 行为的绝对模式是755（400+200+100+040 +010+004+001)。

符号模式由以下语法描述：

mode ::= clause \[, clause ...] clause ::= \[who ...] \[action ...] action action ::= op \[perm ...] who ::= a | u | g | o op ::= + | - | = perm ::= r | s | t | w | x | X | u | g | o

who 符号 \`\`u''、 \`\`g'' 和 \`\`o'' 分别指定用户、组和模式位的其他部分。 who 符号 \`\`a'' 等价于 \`\`ugo''。

perm 符号表示模式位的部分，如下所示：

r

读取的位。

s

set-user-ID-on-execution 和 set-group-ID-on-execution 位。

t

粘性位。

w

写入位。

x

执行/搜索位。

X

如果文件是目录或任何执行/搜索位设置为原始（未修改）模式，则执行/搜索位。带有 perm 符号 \`\`X'' 的操作仅与 op 符号 \`\`+'' 一起有意义，并且在所有其他情况下都被忽略。

u

文件原始模式中的用户权限位。

g

文件原始模式中的组权限位。

o

文件原始模式中的其他权限位。

op 符号表示执行的操作，如下所示：

*

如果没有为 perm 提供值，\`\`+'' 操作无效。 如果没有为 who 提供值，则设置 perm 中指定的每个权限位，文件模式创建掩码（请参阅 umask(2) ）中的相应位是明确的。 否则，设置由指定的 who 和 perm 值表示的模式位。

\-

如果没有为 perm 提供值，则 \`\`-'' 操作无效。 如果没有为 who 提供值，则清除 perm 中指定的每个权限位，其中设置了文件模式创建掩码中的相应位。 否则，由指定的 who 和 perm 值表示的模式位将被清除。

\=

由 who 值指定的模式位被清除，或者，如果没有指定 who 值，则所有者、组和其他模式位被清除。 然后，如果没有为 who 提供值，则设置 perm 中指定的每个权限位，文件模式创建掩码中的相应位是明确的。 否则，设置由指定的 who 和 perm 值表示的模式位。

每个 clause 指定要对模式位执行的一个或多个操作，并且每个操作都按指定的顺序应用于模式位。

仅对其他权限的操作（由符号“o”本身指定）与 perm 符号 “s” 或 “t” 相结合，将被忽略。

目录上的 “w” 权限将允许文件创建、重定位和复制到该目录。 在目录本身中创建的文件将继承其组 ID。

## [实例](#__u5B9E___u4F8B_)

[`644`](#644)

使任何人都可以读取文件，并且只能由所有者写入文件。

[`go-w`](#go-w)

拒绝组和其他人的写权限。

[`=rw,+X`](#=rw,+X)

将读取和写入权限设置为通常的默认值，但保留当前设置的任何执行权限。

[`+X`](#+X)

如果任何人都可以搜索/可执行目录或文件，则让每个人都可以搜索/可执行该目录或文件。

[`755`](#755)

[`u=rwx,go=rx`](#u=rwx,go=rx)

[`u=rwx,go=u-w`](#u=rwx,go=u-w)

使每个人都可以读取/可执行文件，并且只能由所有者写入。

[`go=`](#go=)

清除组和其他的所有模式位。

[`g=u-w`](#g=u-w)

设置组位等于用户位，但清除组写入位。

## [兼容性](#__u517C___u5BB9___u6027_)

`-v` 选项是非标准的，不建议在脚本中使用它。

## [参见](#__u53C2___u89C1_)

chflags(1), install(1), setfacl(1), chmod(2), stat(2), umask(2), fts(3), setmode(3), sticky(7), symlink(7), chown(8), mount(8)

## [标准](#__u6807___u51C6_)

`chmod` 实用程序应与 IEEE Std 1003.2 (“POSIX.2”) 兼容，但该标准中未包含的 perm 符号 “t” 除外。

## [历史](#__u5386___u53F2_)

`chmod` 命令出现在 Version 1 AT\&T UNIX 中。

## [缺陷](#__u7F3A___u9677_)

马的顽皮部位没有 perm 选项。

January 7, 2017

FreeBSD 13.1-RELEASE


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://man.bsdcn.org/man1/chmod.1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
