'chmod u+x' 与 'chmod +x'

Nat*_*ann 139 permissions bash scripts chmod

chmod u+x和 just 和有什么不一样chmod +x?我已经看到大量教程说要使用u+x使脚本可执行。但是,省略u似乎没有任何效果。

Oct*_*ean 186

手册页chmod涵盖了这一点。

  • u代表用户。
  • g代表组。
  • o代表其他人。
  • a代表所有人。

这意味着chmod u+x somefile将仅授予该文件的所有者执行权限,而chmod +x somefilechmod a+x somefile.

chmod 手册页说:

符号模式的格式是 [ugoa...][[+-=][rwxXstugo...]...][,...]. 可以给出多个符号操作,用逗号分隔。

字母“ugoa”的组合控制将更改哪些用户对文件的访问权限:拥有它的用户 (u)、文件组中的其他用户 (g)、不在文件组中的其他用户 (o)、或所有用户 (a)。如果这些都没有给出,效果就像给出了 'a',但在 umask 中设置的位不受影响。


mat*_*pie 23

只是这样做+x会将它应用于所有标志:[u]ser,[g]roup,[o]thers。

键入man chmod以获取更多信息。


Rav*_*ina 23

要求

首先,我建议您阅读这些问题和以下链接的答案:

它可以帮助您了解您需要了解的所有必要部分。


精简版

  • chmod +x等于chmod ugo+x(基于umask值)
  • chmod a+x等于chmod ugo+x(不考虑umask值)

解释

结果chmod a+x是为每个人(所有者,组,其他人)设置可执行位,容易吗?

然而,chmod +x它有点棘手,它说umask使用价值并基于该价值将x允许的每个人添加。

所以如果umask我的环境是0002

$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
Run Code Online (Sandbox Code Playgroud)

它将添加x到用户(所有者)、组和其他人,在这种情况下(这是大多数系统的默认情况),它与 完全相同chmod ugo+x或相同chmod a+x,或更详细的形式:

chmod u+x,g+x,o+x
Run Code Online (Sandbox Code Playgroud)

你能发现chmod u+x,g+x,o+x和 的输出之间的联系umask -S吗?

现在让我们umask将当前 shell的 更改为0003

$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
Run Code Online (Sandbox Code Playgroud)

正如您现在所看到的,只有所有者和组将获得可执行位,而不是其他人。这意味着chmod +x现在等于chmod u+x,g+xchmod ug+x


提问时间!

如果我chmod +w在设置umask为后运行文件会发生什么0003

和以前一样,它不仅影响usergroup文件的,因为3也消除了写权限(2)。


奖金

当您删除以下内容时,它具有相同的效果chmod -w

$ mkdir test
$ stat -c %A test
drwxrwxr-x
Run Code Online (Sandbox Code Playgroud)
$ umask
0002
Run Code Online (Sandbox Code Playgroud)
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
Run Code Online (Sandbox Code Playgroud)
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
Run Code Online (Sandbox Code Playgroud)
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
Run Code Online (Sandbox Code Playgroud)
$ stat -c %A test
dr-xr-xrwx
Run Code Online (Sandbox Code Playgroud)


bel*_*qua 9

chmod u+x 将使文件对您的用户可执行(它只会为您的用户添加它,尽管它可能已经由组所有者或“其他”执行)。

chmod +xor chmod a+x('all plus executable bit') 使每个人都可以执行文件。

如果您对目录执行此操作,则会改为使目录可搜索。即,您可以列出您拥有 +x 权限的目录的内容。