文件的模式
fs.chmod()
和 fs.chmodSync()
方法中使用的 mode
参数是使用以下常量的逻辑或创建的数字位掩码:
常量 | 八进制 | 描述 |
---|---|---|
fs.constants.S_IRUSR | 0o400 | 所有者可读取 |
fs.constants.S_IWUSR | 0o200 | 所有者可写入 |
fs.constants.S_IXUSR | 0o100 | 所有者可执行/搜索 |
fs.constants.S_IRGRP | 0o40 | 群组可读取 |
fs.constants.S_IWGRP | 0o20 | 群组可写入 |
fs.constants.S_IXGRP | 0o10 | 群组可执行/搜索 |
fs.constants.S_IROTH | 0o4 | 其他人可读取 |
fs.constants.S_IWOTH | 0o2 | 其他人可写入 |
fs.constants.S_IXOTH | 0o1 | 其他人可执行/搜索 |
构建 mode
的一种更简单的方法是使用三个八进制数字的序列(例如 765
)。
最左边的数字(示例中的 7
)指定文件所有者的权限。
中间的数字(示例中的 6
)指定群组的权限。
最右边的数字(示例中的 5
)指定其他人的权限。
数值 | 描述 |
---|---|
7 | 可读、可写和可执行 |
6 | 可读和可写 |
5 | 可读和可执行 |
4 | 只读 |
3 | 可写和可执行 |
2 | 只写 |
1 | 只可执行 |
0 | 无权限 |
例如,八进制值 0o765
表示:
- 所有者可以读取、写入和执行文件。
- 群组可以读取和写入文件。
- 其他人可以读取和执行文件。
在需要文件模式的地方使用原始数字时,任何大于 0o777
的值都可能导致特定于平台的行为不支持一致工作。
因此,像 S_ISVTX
、S_ISGID
或 S_ISUID
这样的常量不会在 fs.constants
中暴露。
注意事项:在 Windows 上只能更改写入权限,并没有实现群组、所有者或其他人权限之间的区别。
The mode
argument used in both the fs.chmod()
and fs.chmodSync()
methods is a numeric bitmask created using a logical OR of the following
constants:
Constant | Octal | Description |
---|---|---|
fs.constants.S_IRUSR | 0o400 | read by owner |
fs.constants.S_IWUSR | 0o200 | write by owner |
fs.constants.S_IXUSR | 0o100 | execute/search by owner |
fs.constants.S_IRGRP | 0o40 | read by group |
fs.constants.S_IWGRP | 0o20 | write by group |
fs.constants.S_IXGRP | 0o10 | execute/search by group |
fs.constants.S_IROTH | 0o4 | read by others |
fs.constants.S_IWOTH | 0o2 | write by others |
fs.constants.S_IXOTH | 0o1 | execute/search by others |
An easier method of constructing the mode
is to use a sequence of three
octal digits (e.g. 765
). The left-most digit (7
in the example), specifies
the permissions for the file owner. The middle digit (6
in the example),
specifies permissions for the group. The right-most digit (5
in the example),
specifies the permissions for others.
Number | Description |
---|---|
7 | read, write, and execute |
6 | read and write |
5 | read and execute |
4 | read only |
3 | write and execute |
2 | write only |
1 | execute only |
0 | no permission |
For example, the octal value 0o765
means:
- The owner may read, write and execute the file.
- The group may read and write the file.
- Others may read and execute the file.
When using raw numbers where file modes are expected, any value larger than
0o777
may result in platform-specific behaviors that are not supported to work
consistently. Therefore constants like S_ISVTX
, S_ISGID
or S_ISUID
are not
exposed in fs.constants
.
Caveats: on Windows only the write permission can be changed, and the distinction among the permissions of group, owner or others is not implemented.