文件的模式


fs.chmod()fs.chmodSync() 方法中使用的 mode 参数是使用以下常量的逻辑或创建的数字位掩码:

常量八进制描述
fs.constants.S_IRUSR0o400所有者可读取
fs.constants.S_IWUSR0o200所有者可写入
fs.constants.S_IXUSR0o100所有者可执行/搜索
fs.constants.S_IRGRP0o40群组可读取
fs.constants.S_IWGRP0o20群组可写入
fs.constants.S_IXGRP0o10群组可执行/搜索
fs.constants.S_IROTH0o4其他人可读取
fs.constants.S_IWOTH0o2其他人可写入
fs.constants.S_IXOTH0o1其他人可执行/搜索

构建 mode 的一种更简单的方法是使用三个八进制数字的序列(例如 765)。 最左边的数字(示例中的 7)指定文件所有者的权限。 中间的数字(示例中的 6)指定群组的权限。 最右边的数字(示例中的 5)指定其他人的权限。

数值描述
7可读、可写和可执行
6可读和可写
5可读和可执行
4只读
3可写和可执行
2只写
1只可执行
0无权限

例如,八进制值 0o765 表示:

  • 所有者可以读取、写入、以及执行文件。
  • 群组可以读取和写入文件。
  • 其他人可以读取和执行文件。

在需要文件模式的地方使用原始数字时,任何大于 0o777 的值都可能导致特定于平台的行为不支持一致工作。 因此,像 S_ISVTXS_ISGIDS_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:

ConstantOctalDescription
fs.constants.S_IRUSR0o400read by owner
fs.constants.S_IWUSR0o200write by owner
fs.constants.S_IXUSR0o100execute/search by owner
fs.constants.S_IRGRP0o40read by group
fs.constants.S_IWGRP0o20write by group
fs.constants.S_IXGRP0o10execute/search by group
fs.constants.S_IROTH0o4read by others
fs.constants.S_IWOTH0o2write by others
fs.constants.S_IXOTH0o1execute/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.

NumberDescription
7read, write, and execute
6read and write
5read and execute
4read only
3write and execute
2write only
1execute only
0no 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.