我有一位教授坚持总是打字chmod 7777
,但我被教导那chmod 777
是正确的惯例。
我在命令行上尝试了它们,chmod 777 something.txt
结果如下
-rwxrwxrwx 1 home staff 0 May 6 16:47 something.txt
并chmod 7777 something.txt
产生
-rwsrwsrwt 1 home staff 0 May 6 16:47 something.txt
这会将可执行字段更改为 s、s 和 t。我理解 777 是因为它在二进制中是 111 111 111,所以它只是打开所有字段,但我为什么要使用 7777 以及它有什么不同?
答案1
在 中7777
,前三位是setuid
、setgid
和sticky
标志。这些只应在非常特殊的情况下设置。你说得对,这777
是更合适的设置(如果你想让文件同时对所有人可写和世界可执行文件)。
除非文件是可执行程序或脚本,或目录,否则通常不应设置这些x
位。不过,这样做并没有什么坏处。
答案2
明智的教授没有理由坚持设置 setuid/gid 和 sticky 位,所以也许你感到7777
困惑0777
。
权限以八进制数表示,表示它们的正确惯例是在前面添加一个0
。这就像0x
使用 来区分十六进制数一样。
请注意,chmod 不希望权限以十进制或十六进制表示,因此这个八进制前缀是可选的。
答案3
最左边的数字是 setuid、setgid 和 stickybit 数字。前两个设置打开文件的用户的有效用户和组 ID。我不知道 stickybit 是什么。
答案4
粘性位用于告诉操作系统尽可能将文件保留在 RAM 中,以减少从磁盘读取并减少延迟。这适用于经常使用且需要高度即时的文件。一些操作系统和软件系统会忽略它或使用其他方法来实现相同的目的。但这就是粘性名称的由来(尽可能将其保留在内存中)