“chmod +x”和“chmod 755”有什么区别?

Dar*_*212 89 permissions command-line chmod

当谈到做一个可执行文件之间有什么区别chmod 755chmod +x我的时候会用哪个呢?到目前为止chmod +x,我只使用过并且我只是阅读了一些东西并且使用了它chmod 755,我不知道使用chmod 755或是否更好chmod +x

Rav*_*ina 196

精简版:

为了能够比较它们,我们应该从相同的角度来看待它们,所以:

  • chmod +x等于chmod ugo+x(基于umask值)
  • chmod 755 等于 chmod u=rwx,go=rx

解释:

首先你应该知道:

  1. + 表示将此权限添加到文件已有的其他权限中。
  2. = 意味着忽略所有权限,完全按照我提供的设置它们。

    • 因此,所有“读取、写入、执行、粘滞位、suid 和 guid”都将被忽略,并且只会设置提供的那些。
  3. 读取 = 4,写入 = 2,执行 = 1

    • 这是它背后的二进制逻辑(如果您有兴趣):

      Symbolic:  r-- -w- --x  |  421
      Binary:    100 010 001  |  -------
      Decimal:    4   2   1   |  000 = 0
                              |  001 = 1
      Symbolic:  rwx r-x r-x  |  010 = 2
      Binary:    111 101 101  |  011 = 3
      Decimal:    7   5   5   |  100 = 4
                 /   /   /    |  101 = 5
      Owner  ---/   /   /     |  110 = 6
      Group  ------/   /      |  111 = 7
      Others ---------/       |  Binary to Octal chart
      
      Run Code Online (Sandbox Code Playgroud)

使用+x您是在告诉将 ( +) 可执行位 ( x) 添加到所有者、组和其他人。

  • 它等于ugo+xu+x,g+x,o+x
  • 当您没有指定所有者、组或其他人中的哪一个是您的目标时,x它会考虑所有这些。正如@Rinzwind 指出的那样,它基于umask价值,它在umask允许的基础上增加了一点。请记住,如果您指定目标,o+rumask不再有任何效果。
  • 它不会触及其他模组(权限)。
  • 您也可以使用u+x仅向所有者添加可执行位。

使用755您指定:

  • 7 --> u=rwx(所有者为 4+2+1)
  • 5 --> g=rx(4+1 组)
  • 5 --> o=rx(其他人为 4+1)

所以chmod 755就像:chmod u=rwx,g=rx,o=rxchmod u=rwx,go=rx

在此处输入图片说明

  • 那么“chmod a+x”和“chmod +x”有什么区别? (2认同)

Pil*_*ot6 39

chmod +x 将所有用户的执行权限添加到现有权限中。

chmod 755设置755文件的权限。

755 表示拥有者拥有完全权限,其他人拥有读取和执行权限。


小智 9

另一种看待它的方式(我觉得更容易理解)是相对地chmod +x设置权限,而绝对地设置它们。chmod 755

chmod 755文件上运行后,其权限将为755,或rwxr-xr-x.

chmod +x将仅获取现有权限,并向文件添加执行权限。


Top*_*Hat 7

我建议查看chmod手册页以获取完整详细信息。您只是看到 chmod 命令提供了两种不同的操作模式来完成更改权限的相同任务。

八进制模式使用数字并设置文件的整个权限。字符模式使用字母,一般只用于修改现有权限。

chmod 755设置rwxr-xr-xwhile chmod +x调整权限,以便所有者、组和世界都添加了可执行权限。假设它的默认文件权限rwxr--r--会将其调整为与 755 相同的权限rwxr-xr-x


Ser*_*nyy 6

不同之处在于设置了哪些权限以及您使用哪种模式来设置它们。

chmod +x你为所有的可执行位-所有者,所有者组和其他用户。这称为符号模式。引用man chmod

运算符 + 使选定的文件模式位添加到每个文件的现有文件模式位中;- 导致它们被移除;和 = 导致它们被添加并导致未提及的位被删除,但目录的未提及的设置用户和组 ID 位不受影响。

chmod 755您使用八进制数时,其二进制表示用于设置特定的权限位。前(左)3 位对应所有者权限,中间3 位对应组权限,最后(最右)对应所有其他用户的权限。位的顺序总是相同的,read,write,execute或者rwx因此,正是因为顺序相同,单个数字在转换为二进制表示时,将设置该数字中对应位置位为 1 的许可位,并取消设置为 0 的一位。 具体来说:

  • 八进制数7是二进制的 111,因此您正在为所有者设置所有读取、写入和执行位;rwx设置。
  • 八进制数5是二进制的 101,因此您设置了读取和执行但禁用写入位,并且由于组和其他用户的值为 5,因此这两个类别将具有相同的权限。如此r-x设置。

这是小演示:

    bash-4.3$ touch file1 file2
    bash-4.3$ chmod +x file1
    bash-4.3$ chmod 755 file2
    bash-4.3$ ls -l file1 file2
    -rwxrwxr-x 1 xieerqi xieerqi 0 7?   6 13:54 file1
    -rwxr-xr-x 1 xieerqi xieerqi 0 7?   6 13:54 file2
Run Code Online (Sandbox Code Playgroud)