我正在阅读The Linux Command Line
,William 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 ( ----------
),因为它将所有三个用户组(u
、g
和o
)设置为禁止访问,我想现在您已经了解了第二个的作用。如所示,您可以通过用逗号分隔操作来连接操作。
我理解要拥有执行权限就必须拥有读取权限,因此需要组的读取权限,...
仅当您谈论的是脚本时,这才是真的。(已编译的)二进制可执行文件只能以执行权限运行。
答案2
g=x 为组添加执行权限,而不更改其他权限。当您选择权限的特定部分时,它只会影响权限的指定部分。如果您使用带有数字的 chmod,例如 chmod 777,它将覆盖所有当前权限。