Чому chmod 0000-ім'я каталогу не очистить спеціальні біти в каталозі?


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 з 4 вісімками. Це, здається, очищає липкий шматочок.

Відповіді:


8

0000 вважали неоднозначним, оскільки він може просто означати 000, плюс провідний нуль, оскільки він є восьмеричним.

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

0755 не є явним - це неоднозначно з людьми, які явно використовують printf% # 3o для виведення 3-значної восьмеричної рядки з провідними 0 - я не думаю, що ми можемо це змінити.

Цей потік обговорення coreutils починається з того, що хтось цитує сторінку chmod man, зазначаючи це обмеження:

ви можете встановити (але не зрозуміло) біти за допомогою цифрового режиму.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.