文件的模式


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.