为什么chmod + w不给其他人写权限(o)


18

当我运行时,chmod +w filename它不授予写权限other,而只是给userand 授予写权限group

执行此命令后

chmod +w testfile.txt

运行ls -l testfile.txt打印

-rw-rw-r-- 1 ravi ravi 20 Mar 10 18:09 testfile.txt

但在+r和的情况下,+x它可以正常工作。

我不想用chmod ugo+w filename



1
如果您不想使用ugo,请使用a
muru

是的,但是我只想知道为什么+w不起作用。
拉维·塞夫塔

这就是为什么我留下两条评论。
大师

@muru。您在askubuntu回答中声称自己在上面引用了“此行为是POSIX强制的,因此不是错误”。请注意,POSIX应用程序用法文本是非规范性的,因此不受POSIX的要求。
fpmurphy

Answers:


26

您的具体情况

在您的特定情况下,我们可以猜测您的当前umask002(这是一个常见的默认值),这可以解释您的惊讶。

在该特定情况下,umask值是002(所有数字均为八进制)。

  • +r表示ugo+r因为002 & 444000,所以可以设置所有位
  • +x表示ugo+x因为002 & 111000,所以可以设置所有位
  • +w表示ug+w因为002 & 222002,这将阻止设置“ o”位。

其他例子

  • umask 022 +w会意味着u+w
  • umask 007 +rwx会意味着ug+rwx
  • umask 077 +rwx会意味着u+rwx

什么会符合您的期望

当您更改umask000,通过执行

umask 000

在您的终端,然后

chmod +w file

将权限设置为ugo + w。

边注

正如ilkkachu所建议的那样,请注意,umask 000这并不意味着每个人都可以读写您的所有文件。

但是,这umask 000意味着可以对您计算机上的任何用户帐户进行某种访问的每个人(其中可能包括运行服务器服务ofc的程序)都可以读写您在该掩码处于活动状态时创建的所有文件,并且不会更改(如果包含直到根目录也允许它们)。


4
umask 000意味着可以对您计算机上的用户帐户进行某种访问的每个人(其中可能包括运行服务器服务ofc的程序)都可以读写在该掩码处于活动状态且不会更改的所有文件
StarWeaver

4
“ + r表示ugo = r” -不,不是,这意味着设置rumask允许的各方的位。这在GNU chmod和FreeBSD chmod的手册以及标准中都有明确说明。相同+x。对的+w,对于特定的umask。
ilkkachu

4
另外,将umask设置为0 并不意味着每个人都可以读写您的所有文件,因为许多应用程序创建的文件都特别具有mode私有性0600,这意味着无论umask如何,该组和其他人都无法获得任何访问权限。
ilkkachu

@ilkkachu + r表示ugo = r,这与问题中描述的情况有关。那不是一般的。
Prvt_Yadav

2
@Debian_yadav,这就是重点:这umask+r行为举止的重要组成部分,而不是旁注。此外,即使假设的umask 002chmod +r并不意味着chmod ugo=r,这意味着chmod ugo+r
ilkkachu

24

带有:

chmod +<perms>

权限已添加到usergroupother,但umask仍然适用。这样可以确保该文件没有比新创建的文件获得更多的权限。

如果您想将权限添加到usergroupsother而不管umask如何,请使用

chmod a+<perms>

这是短的

chmod ugo+<perms>

这意味着+ x和a + x不相等。
Prvt_Yadav '18

1
我喜欢链接:man7.org/linux/man-pages/man1/chmod.1.html „如果没有给出这些,则效果就好像是(a)一样,但是在umask中设置的位不会受到影响。”
tehnicaorg

0

您需要使用来指定要授予权限的对象,例如otherchmod o+w testfile.txt


1
是的,但是我认为+w允许所有人(用户,组和其他)使用。
拉维·塞夫塔

要向所有用户授予权限,请使用chmod a+w testfile.txt。使用u用户,g为组,o其他,和a所有。
Jaken551 '18

如果chmod a+w filenamechmod +w filename并且chmod ugo+w filename是相互替代,那么为什么不直接使用+w
拉维Sevta
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.