我知道chmod 777
允许读,写, 和执行为了用户,团体, 和其他的
但如果我这么做呢chmod 7
?
难道只是rwx
为了用户?
答案1
Ramesh 的答案非常准确,但我想插话并提供对文件模式的更深入的解释。
755
虽然像和 之类的数字777
可能看起来很特殊并且仅对文件模式有意义,但它们实际上非常基本。
这些数字实际上是八进制数。十进制数以 10 为基数,十六进制数以 16 为基数,二进制以 2 为基数,八进制数以 8 为基数。这意味着当你数数时,你就走1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 ...
。所以这个数字007
,只是八进制7
。八进制数755
只是一个数字,相当于493
十进制。
现在如何区分八进制数和任何其他基数是八进制数以 为前缀0
。所以说755
是八进制,你实际上应该将其称为0755
。该chmod
命令假设所有输入数字都是八进制,因为这是引用文件模式的最常见方式。
现在,为什么文件模式使用八进制?首先我们需要了解模式只是一个位掩码,如下所示:
111111111111 - 12 binary bits
============
1 - Other execute
1 - Other write
1 - Other read
1 - Group execute
1 - Group write
1 - Group read
1 - User execute
1 - User write
1 - User read
1 - Sticky bit
1 - Set group ID
1 - Set user ID
请注意,“其他”、“组”和“用户”各有 3 位。二进制111
是7
,它是最高的个位数八进制值。因此,通过使用八进制编号,其他组和用户权限中的每一个都会获得一个数字,再加上 Sticky+setuid+setgid 的额外数字。
那么,我们可以回到你最初的问题“什么是chmod 7
”?
好吧,现在我们知道它只是一个八进制数,并且它只是一个位掩码,我们可以弄清楚这一点。八进制7
是二进制111
。使用上述位位置,我们可以确定这设置了所有 3 个“其他”位,授予“其他”执行、读取和写入访问权限。由于这只是一个数字,因此所有其他位均为 0,并且未设置。
答案2
恰恰相反。它将授予rwx
许可其他的。
touch samplefile
ls -l samplefile
-rw-rw-r-- 1 ramesh ramesh 0 Oct 16 22:29 samplefile
现在,执行命令后,我得到的输出为:
chmod 7 samplefile
ls -l samplefile
-------rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
从 的手册页来看chmod
,
数字模式为 1 到 4 个八进制数字 (0-7),通过将值 4、2 和 1 的位相加得出。 省略的数字被假定为前导零。
现在,我们可以通过执行命令来验证相同的内容,
chmod 47 samplefile
ls -l samplefile
----r--rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
正如我们所看到的,chmod 47
在文件上使用将给出读许可团体和读,写和执行许可其他的。