Nat*_*ann 139 permissions bash scripts chmod
chmod u+x和 just 和有什么不一样chmod +x?我已经看到大量教程说要使用u+x使脚本可执行。但是,省略u似乎没有任何效果。
Oct*_*ean 186
手册页chmod涵盖了这一点。
这意味着chmod u+x somefile将仅授予该文件的所有者执行权限,而chmod +x somefile与chmod a+x somefile.
符号模式的格式是
[ugoa...][[+-=][rwxXstugo...]...][,...]. 可以给出多个符号操作,用逗号分隔。字母“ugoa”的组合控制将更改哪些用户对文件的访问权限:拥有它的用户 (u)、文件组中的其他用户 (g)、不在文件组中的其他用户 (o)、或所有用户 (a)。如果这些都没有给出,效果就像给出了 'a',但在 umask 中设置的位不受影响。
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+x或chmod ug+x。
如果我chmod +w在设置umask为后运行文件会发生什么0003?
和以前一样,它不仅影响user和group文件的,因为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)
chmod u+x 将使文件对您的用户可执行(它只会为您的用户添加它,尽管它可能已经由组所有者或“其他”执行)。
chmod +xor chmod a+x('all plus executable bit') 使每个人都可以执行文件。
如果您对目录执行此操作,则会改为使目录可搜索。即,您可以列出您拥有 +x 权限的目录的内容。