3位数字:
644
ugo (user group other)
4位数:
0644
?ugo (??? user group other)
4 位八进制 Unix 文件权限表示法中第一个八进制数字是什么?
答案1
从man chmod
:
数字模式是一到四个八进制数字(0-7),通过将值为 4、2 和 1 的位相加而得出。任何省略的数字都假定为前导零。第一个数字选择设置用户 ID(4)和设置组 ID(2)以及粘性(1)属性。
您可能会问,“设置用户 ID”、“设置组 ID”和“粘性”是什么?
setuid 和 setgid(分别是“执行时设置用户 ID”和“执行时设置组 ID”的缩写)是 Unix 访问权限标志,允许用户以可执行文件的所有者或组的权限运行可执行文件。它们通常用于允许计算机系统上的用户以临时提升的权限运行程序以执行特定任务。虽然提供的假定用户 ID 或组 ID 权限并不总是提升的,但至少它们是特定的。
此外,当应用于目录时,setuid/setgid 会导致目录中创建的新文件分别继承父目录的 uid 或 gid。此行为因 unix 的不同而不同。例如,linux 尊重 setgid,但忽略目录上的 setuid。
和黏:
如今,粘性位最常见的用途是在目录中。设置粘性位后,只有项目的所有者、目录的所有者或超级用户可以重命名或删除文件。如果不设置粘性位,任何对该目录具有写入和执行权限的用户都可以重命名或删除其中包含的文件,无论所有者是谁。通常,这设置在 /tmp 目录中,以防止普通用户删除或移动其他用户的文件。
答案2
Setgid 还有另一个非常重要的功能,我每天都依赖它,但它没有包含在 Handyman5 的摘录中(引文来自上面链接的同一页面):
当在目录上设置 setuid 和 setgid 标志时,它们具有完全不同的含义。
设置目录的 setgid 权限 (chmod g+s) 会导致在其中创建的新文件和子目录继承其组 ID,而不是创建文件的用户的主组 ID(所有者 ID 不会受到影响,只有组 ID 会受到影响)。新创建的子目录会继承 setgid 位。
因此,这为组启用了共享工作区,而无需组成员在创建新文件或目录之前明确更改其当前组。请注意,在目录上设置 setgid 权限只会影响在设置 setgid 位后创建的新文件和子目录的组 ID,而不会应用于现有实体。在现有子目录上设置 setgid 位必须手动完成,使用以下命令:
[root@foo]# find /path/to/directory -type d -exec chmod g+s {} \;
chmod g+s
意味着在八进制值前面添加 2,使得具有 775 权限 ( drwxrwxr-x
) 的目录变成 2775 ( drwxrwsr-x
)。
答案3
除了其他答案之外,前导 0 是用来表示数字是八进制的惯例。这里不需要它,因为文件权限始终以八进制表示,但无论如何,这可能是它存在的另一个原因。
答案4
这是一个易于使用的 Limux/Unix权限计算器帮助您确定文件或目录的权限。