在我的 Pi 上,chmod +w 的行为不像往常一样?

在我的 Pi 上,chmod +w 的行为不像往常一样?
$ ls -al file1
-r--r--r-- 1 pi pi 0 Feb 10 15:18 file1

$ chmod +w file1
$ ls -al file1
-rw-r--r-- 1 pi pi 0 Feb 10 15:18 file1  #only u is updated

$ chmod +x file1
$ ls -al file1
-rwxr-xr-x 1 pi pi 0 Feb 10 15:18 file1  #all updated

chmod +w 的工作原理是这样的吗?

答案1

取决于您的 umask 是什么。如果您的 umask 是 022,那么 +w 会在组和其他权限标志中被屏蔽。+x 不会被屏蔽。要屏蔽任何可执行标志,请在该位置将 umask 加 1。例如,执行 umask 033 并重试测试。

答案2

从手册页中:

If no value is supplied for who, each permission bit spec-
ified in perm, for which the corresponding bit in the file mode
creation mask (see umask(2)) is clear, is set.  Otherwise, the mode
bits represented by the specified who and perm values are set.

因此,如果您不指定要更新谁的权限,则将返回到 umask 所规定的操作,以处理您设置的权限。在这种情况下,您的 umask 可能允许读取和执行文件,因此执行位会为所有人设置,但 umask 可能只允许所有者写入。

答案3

umask(默认值为 0022)是 chmod +w 仅更改用户属性的原因

$ chmod -v 444 a
mode of ‘a’ retained as 0444 (r--r--r--)
$ umask 000
$ chmod  -v +w a
mode of ‘a’ changed from 0444 (r--r--r--) to 0666 (rw-rw-rw-)
$ chmod -v +x a
mode of ‘a’ changed from 0666 (rw-rw-rw-) to 0777 (rwxrwxrwx)

答案4

这是由umask. 设置文件创建和更改权限的默认设置。

要查看umask默认情况下,以简单的方式发出命令umask -S。例如结果:

u=rwx,g=rx,o=rx
意味着用户适用于所有团体只读和执行,同样适用于其他的

改变它的问题umask在这条路上:

umask x@y

在哪里:

X可能是:(u用户)、g(群组)、o(其他)或a(全部)

@可以+添加权限,-删除权限

可以是r(读取)、w(写入)、x(执行)

例如:当您执行时umask g+w默认启用写权限。groupchmod +w

更多信息这里man umask或在命令提示符下发出。

相关内容