为什么我无法在 linux 中使用 chmod 向用户授予写权限?

为什么我无法在 linux 中使用 chmod 向用户授予写权限?

当前的文件权限如下所示:

$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file

现在我尝试使用以下方法授予写入权限chmod

$ chmod +x+r+w file

之后,文件权限仍然是这样的:

$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file

写权限不授予其他人。为什么会发生这种情况?

答案1

当你跑步时chmod +x+r+w file所有位都已设置,除了那些被您屏蔽的位umask。您umask可能(至少)掩盖了其他用户的写入位,因此该+w部分最终会被他们忽略。

因此,对于典型umask的 022,任何chmod未指定应为谁设置权限的命令最终都会忽略对该组和其他人的写入位的任何指定更改。

要设置所有位,忽略umask,您需要指定WHO你想将它们设置为:

chmod a+rwx file

或者更明确地说,

chmod ugo+rwx file

(或任何ugo适当的子集,用于用户、组和/或其他人)。

也可以指定数字权限而不是符号权限;看了解 UNIX 权限和文件类型了解详情。

请注意,umask屏蔽行为也适用于以下情况:清算位,这可能会产生令人惊讶的结果:只会清除由!chmod -w file设置的写入位。chmod +w file继续典型umask的 022,这意味着chmod -w不会触及该组或其他人的写入位,如果它们已经存在,则将其保留。 (GNUcoreutils对此chmod提出了有益的警告。)

相关内容