在文件上运行“chmod 7”的结果是什么?

在文件上运行“chmod 7”的结果是什么?

我知道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 位。二进制1117,它是最高的个位数八进制值。因此,通过使用八进制编号,其他组和用户权限中的每一个都会获得一个数字,再加上 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在文件上使用将给出许可团体,执行许可其他的

相关内容