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 не очистит все биты прав доступа. Что я не получаю здесь? Я пытался сравнить с калькулятором, и они не совпадают. Такое же поведение наблюдается на сервере, на котором у меня есть ssh'd, RHEL, и на моей собственной машине, Ubuntu. Я читал об этом некоторое время и тратил слишком много времени, пытаясь понять.

Я столкнулся с этой проблемой, когда пробовал все символы для первого восьмеричного числа, никогда раньше не использовал chmod с четырьмя восьмеричными числами. Тем не менее, похоже, что он проясняет ситуацию.

1 ответ1

8

0000 считался неоднозначным, поскольку это могло означать просто 000 плюс начальный ноль, поскольку он восьмеричный.

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

0755 не является явным - это неоднозначно с людьми, которые явно используют printf% # 3o для вывода 3-значной восьмеричной строки с начальным 0 - я не думаю, что мы можем изменить это.

Эта ветка обсуждения coreutils начинается с того, что кто-то цитирует страницу руководства chmod, отмечая это ограничение:

Вы можете установить (но не очистить) биты в числовом режиме.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .