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

为什么 chmod 0000 directory-name 不会清除目录上的特殊位?
$ 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不会清除所有权限位。我不明白什么?我尝试与计算器,它们不匹配。我在 ssh 连接的服务器 RHEL 和我自己的机器 Ubuntu 上看到了相同的行为。我已经阅读了一段时间的文章,并花了太多时间试图理解。

我在尝试第一个八进制的所有符号时遇到了这个问题,之前从未对 4 个八进制使用过 chmod。不过,它似乎确实清除了粘滞位。

答案1

0000 被认为是模棱两可的,因为它可能只是表示 000,再加上前导零(因为它是八进制)。

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

0755 并不明确 - 对于那些明确使用 printf %#3o 输出以 0 为前导的 3 位八进制字符串的人来说,这是模棱两可的 - 我认为我们无法改变这一点。

该 coreutils 讨论主题开始有人引用 chmod 手册页并指出了这个限制:

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

相关内容