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

use*_*809 7 chmod files

我知道chmod 777允许对用户、组和其他人进行读取、写入和执行

但如果我只是这样做chmod 7呢?

只rwx针对用户吗?

phe*_*mer 21

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
Run Code Online (Sandbox Code Playgroud)

请注意,“其他”、“组”和“用户”各有 3 位。二进制111是7,这是最高的个位数八进制值。因此,通过使用八进制编号,其他、组和用户权限中的每一个都获得一个数字,再加上一个额外的数字用于粘性+setuid+setgid。

所以有了这个,我们可以回到你最初的“什么是chmod 7”的问题?
好吧,现在我们知道它只是一个八进制数,而且它只是一个位掩码,我们可以弄清楚这一点。八进制7是二进制111。使用上述位位置,我们可以确定这设置了所有 3 个“其他”位,授予“其他”执行、读取和写入访问权限。由于这只是一个数字,所有其他位都为 0,并且未设置。


Ram*_*esh 19

正好相反。它会给其他人rwx许可。

touch samplefile
ls -l samplefile
-rw-rw-r-- 1 ramesh ramesh 0 Oct 16 22:29 samplefile
Run Code Online (Sandbox Code Playgroud)

现在在我执行命令后,我得到的输出为,

chmod 7 samplefile
ls -l samplefile
-------rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
Run Code Online (Sandbox Code Playgroud)

从手册页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
Run Code Online (Sandbox Code Playgroud)

我们可以看到,与chmod 47上一个文件会给读权限组和读,写和执行许可他人。

  • 把它想象成007。 (6认同)
  • @khadija 或 0007。 (4认同)
  • @迈克尔或07。 (2认同)