chmod 符号表示法:意外的“=”操作行为

chmod 符号表示法:意外的“=”操作行为

我正在阅读The Linux Command LineWilliam Shotts并在书中某处读到有关权限的部分,其中说The operation may be a “+” indicating that a permission is to be added, a “-” indicating that a permission is to be taken away, *or a “=” indicating that only the specified permissions are to be applied and that all others are to be removed*.(请参阅之间的部分**

所以我尝试了一下:

me@ubuntu:~$ > foo
me@ubuntu:~$ ls -al | grep foo
-rw-rw-r--  1 me me     0 Apr  2 05:17 foo
me@ubuntu:~$ chmod g=x foo 
me@ubuntu:~$ ls -al | grep foo
-rw---xr--  1 me me     0 Apr  2 05:17 foo
iuliu@ubuntu:~$ 

现在文件已创建并-rw-rw-r--分配了权限,执行后chmod g=x foo我希望它们能够被分配------x---(只有组具有执行权限,仅此而已)。我理解要拥有执行权限,您必须拥有读取权限,因此需要组的读取权限,但为什么用户权限仍然存在rw

谢谢!

答案1

为了建立和/或澄清 Davidw 的回答:既然你说的是g=,你只是要求更改组权限。如果你说的是chmod =x foo,你会得到---x--x--x。如果你想得到------x---,请这样做

chmod =,g=x foo

这与

chmod  =  foo
chmod g=x foo

第一个命令将权限设置为 0 ( ----------),因为它将所有三个用户组(ugo)设置为禁止访问,我想现在您已经了解了第二个的作用。如所示,您可以通过用逗号分隔操作来连接操作。

我理解要拥有执行权限就必须拥有读取权限,因此需要组的读取权限,...

仅当您谈论的是脚本时,这才是真的。(已编译的)二进制可执行文件只能以执行权限运行。

答案2

g=x 为组添加执行权限,而不更改其他权限。当您选择权限的特定部分时,它只会影响权限的指定部分。如果您使用带有数字的 chmod,例如 chmod 777,它将覆盖所有当前权限。

相关内容