什么是4位八进制Unix文件许可符号的第一个数字?

3位:

644 ugo (user group other) 

4位数:

 0644 ?ugo (??? user group other) 

什么是四位八进制Unix文件许可符号的第一个八进制数字?

man chmod

一个数字模式是从一​​个到四个八进制数字(0-7),通过将值加起来得到值4,2和1.任何被省略的数字被假定为前导零。 第一个数字select设置的用户ID(4)并设置组ID(2)和粘性(1)属性。

什么是“设置用户ID”,“设置组ID”和“粘性”,你问?

setuid / setgid :

setuid和setgid(分别为“在执行时设置用户ID”和“在执行时设置组ID”)是允许用户使用可执行文件的所有者或组的权限运行可执行文件的Unix访问权标志。 它们通常用于允许计算机系统上的用户以临时提升的权限运行程序,以执行特定的任务。 尽pipe所提供的假定用户ID或组ID特权并不总是被提升,但至less它们是特定的。

而且,当应用于目录时,setuid / setgid会使目录中创build的新文件分别inheritance父目录的uid或gid。 这种行为根据unix的风格而有所不同。 例如,linux尊重setgid,但忽略目录上的setuid。

而粘 :

目前最常见的粘性使用是在目录上。 粘滞位设置后,只有项目的所有者,目录的所有者或超级用户才能重命名或删除文件。 如果没有设置粘滞位,则具有该目录的写入和执行权限的任何用户都可以重命名或删除包含的文件,而不pipe所有者。 通常这是设置在/ tmp目录,以防止普通用户删除或移动其他用户的文件。

Setgid还有另一个非常重要的function,我每天依靠它,但没有包含在Handyman5的摘录中(引用来自上面链接的同一页):

setuid和setgid标志在目录上设置时,具有完全不同的含义。

在目录(chmod g + s)上设置setgid权限将导致在其中创build的新文件和子目录inheritance其组标识,而不是创build该文件的用户的主组标识(所有者标识从不受影响,组ID)。 新创build的子目录inheritance了setgid位。

因此,这为组创build了一个共享的工作空间,而无需在创build新文件或目录之前要求组成员明确地更改其当前组。 请注意,在目录上设置setgid权限只会影响setgid位设置后创build的新文件和子目录的组ID,并且不会应用于现有实体。 在现有子目录中设置setgid位必须手动完成,并使用如下命令:

 [root@foo]# find /path/to/directory -type d -exec chmod g+s {} \; 

chmod g+s意味着在八进制值的前面添加了一个2,使得拥有775个权限的目录( drwxrwxr-x )成为2775( drwxrwsr-x )。

除了其他的答案之外,一个前导0是一个用来告诉一个数字是八进制的约定。 这里不要求文件权限总是用八进制表示,但是这也可能是它存在的另一个原因。

这里是一个容易使用的Limux / Unix 权限计算器,以帮助您找出文件或目录的权限。