三位数和四位数文件权限的区别?

Ner*_*ode 13 permissions bash files

我最近想知道三位数和四位数的数字文件权限之间有什么区别。我通过运行获得数字权限stat --format "%a" $file_name。0644和644有什么区别?

Joh*_*024 13

四位权限中的第一个数字是设置用户 ID (4)、设置组 ID (2) 和粘性(1)的总和。三位数权限就像四位数权限一样,第一位数字设置为零。因此:

  • 0644 与 644 完全相同。
  • 1644 与 644 类似,但也设置了粘滞位
  • 4644 与 644 类似,但设置的用户 ID 位也被设置。

第四位权限的使用示例

如果执行了设置了用户 ID 的文件,那么它就像由文件的所有者而不是执行执行的用户来执行。因此,例如,/bin/mount通常由 root 拥有并拥有权限 4755,其中 4 表示,即使由普通用户执行,它也会以所有者(root 的)权限运行。

在目录上设置组 ID 对共享文件很有用。

粘滞位用于像/tmp这样的目录,以便所有用户都可以创建文件,但防止非所有者删除其他人的文件。因此,权限/tmp通常为 1777,其中 1 表示设置了粘滞位。

文档

来自man chmod

数字模式是从一​​到四个八进制数字 (0-7),通过将值 4、2 和 1 的位相加得出。假定省略的数字是前导零。第一个数字选择设置用户 ID (4) 和设置组 ID (2) 和限制删除或粘性 (1) 属性。第二个数字选择拥有文件的用户的权限:读取 (4)、写入 (2) 和执行 (1);第三个选择文件组中其他用户的权限,具有相同的值;第四个用于不在文件组中的其他用户,具有相同的值。