当前的文件权限如下所示:
$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file
Run Code Online (Sandbox Code Playgroud)
现在我尝试使用以下方法授予写入权限chmod:
$ chmod +x+r+w file
Run Code Online (Sandbox Code Playgroud)
之后,文件权限仍然是这样的:
$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file
Run Code Online (Sandbox Code Playgroud)
写权限不授予其他人。为什么会发生这种情况?
Ste*_*itt 23
当您运行时chmod +x+r+w file,所有位都会被设置,除了那些被您的umask. 您umask可能(至少)屏蔽了其他用户\xe2\x80\x99 写入位,因此该+w部分最终会被忽略。
因此,对于典型umask的 022,任何chmod不指定应为谁设置权限的命令最终都会忽略对组 xe2x80x99s 和其他 xe2x80x99 写入位的任何指定更改。
要设置所有位(忽略 )umask,您需要指定要为谁设置它们:
chmod a+rwx file\nRun Code Online (Sandbox Code Playgroud)\n或者更明确地说,
\nchmod ugo+rwx file\nRun Code Online (Sandbox Code Playgroud)\n(或任何适当的子集ugo,用于用户、组和/或其他人)。
\xe2\x80\x99s 也可以指定数字权限而不是符号权限;有关详细信息,请参阅了解 UNIX 权限和文件类型。
\n请注意,umask屏蔽行为也适用于清除位,这可能会产生令人惊讶的结果:只会清除由!chmod -w file设置的写入位。chmod +w file继续典型umask的 022,这意味着chmod -w不会接触组 xe2x80x99 或其他 xe2x80x99 写入位,如果它们已经设置,则将其保留。(GNU coreutils\xe2\x80\x99chmod对此发出了有益的警告。)
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |