为什么chmod 0000 directory-name不能清除目录中的特殊位?


8
$ mkdir test 
$ chmod 0000 test 
$ ls -la | grep test | awk '{print $1}'
d---------.
$ chmod 6000 test
$ ls -la | grep test | awk '{print $1}'
d--S--S---.
$ chmod 0000 test
$ ls -la | grep test | awk '{print $1}'
d--S--S---.

我不确定为什么chmod 0000 test不清除所有权限位。我什么不来?我尝试过与计算器进行比较,但它们不匹配。在我放入的服务器RHEL和我自己的计算机Ubuntu上,也可以看到相同的行为。我已经阅读了一段时间,并花了太多时间试图理解。

在尝试使用第一个八进制的所有符号时遇到了这个问题,之前从未将chmod与4个八进制一起使用。但是,它似乎确实清除了粘性。

Answers:


8

0000被认为是模棱两可的,因为它可能仅表示000,因为它是八进制形式,所以加上前导零。

http://lists.gnu.org/archive/html/bug-coreutils/2011-03/msg00162.html

0755不是显式的-对于明确使用printf%#3o输出以0开头的3位数八进制字符串的人们来说,这是模棱两可的-我认为我们无法更改。

该coreutils讨论线程始于某人引用chmod手册页并指出此限制:

您可以使用数字模式设置(但不能清除)位。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.