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


Answers:


148

手册页对此进行了chmod介绍。

  • 代表用户。
  • g代表组。
  • o代表他人。
  • 一个代表一切。

这意味着chmod u+x somefile将只授予该文件执行者的权限,而chmod +x somefile与相同chmod a+x somefile

chmod手册页显示:

符号模式的格式为 [ugoa...][[+-=][rwxXstugo...]...][,...]。可以给出多个符号运算,以逗号分隔。

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


我有一个小问题,a + x与111的区别是什么。它使两者
都可

这是因为1是代表执行权限的八进制符号。111表示对用户,组和其他用户可执行。
Octavian Damiean 2015年

很棒的答案
m4heshd

umask效果很重要,chmod +x file与以下效果有所不同chmod a+x file-有关详细信息,请参见Ravexina的答案。
Cinnam

19

只需+x将其应用于所有标志:[u] ser,[g] roup,[o] thers。

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


我保证我会先检查手册,但由于跳过了说明并跳至选项,所以没有看到它。我现在看到了:-)
内森·史威文

14

要求

首先,我建议您阅读以下问题以及下面链接的答案:

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


简洁版本

  • 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

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

chmod u+x,g+x,o+x

您能发现之间的连接chmod u+x,g+x,o+x和输出umask -S吗?

现在umask,将当前shell 的更改为0003

$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r

如您所见,现在只有所有者和组要获取可执行文件位,而不是其他文件。这意味着chmod +x现在等于chmod u+x,g+xchmod ug+x


提问时间!

如果我运行会发生什么chmod +w设置后上的文件umask0003

与以前一样,它只影响usergroup的文件,因为3也删除了写许可权(2)。


奖金

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

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

7

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

chmod +xchmod a+x(“全部加可执行位”)使文件对所有人都可执行。

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


对不起,但是这件事对我来说不起作用。我已经用sudo尝试过了,但没有在我的计算机上工作。askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Anirudha Gupta

@AnkitGupta我不确定你在说什么。我的评论并非旨在解决其他问答中的问题。尝试要求澄清答案。编辑您的问题,说出您的尝试。显示输出。
belacqua 2012年

1
  • chmod u+x file意味着将可执行位添加到文件的所有者,而忽略umask(您的mod将被设置,没问题)。

  • chmod +x file意味着在考虑时将可执行位添加到所有者,组和其他人umask(首先进行检查,umask然后应用mod,根据umask的值,它可能会有不同的影响)。


让我们创建两个文件:

$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file2

现在,将设置umask为“ 111”以删除可执行位:umask 111

$ chmod u+x file1
$ chmod  +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file2

如您所见,chmod被忽略的umask和文件1为其所有者获得了可执行位,但是第二个文件却什么也没做,因为它正在考虑umask的值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.