Warum löscht der Verzeichnisname chmod 0000 die speziellen Bits im Verzeichnis nicht?

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---.

Ich bin nicht sicher, warum chmod 0000 testnicht alle Berechtigungsbits gelöscht werden. Was bekomme ich nicht hierher? Ich habe versucht, mit einem Taschenrechner zu vergleichen , und sie stimmen nicht überein. Das gleiche Verhalten ist auf dem Server zu sehen, auf den ich ssh'd habe, RHEL, und auf meinem eigenen Computer, Ubuntu. Ich habe eine Weile darüber gelesen und zu viel Zeit damit verbracht, zu verstehen.

Ich bin auf dieses Problem gestoßen, als ich alle Symbole für das erste Oktal ausprobiert habe, da ich noch nie zuvor chmod mit 4 Oktalen verwendet habe. Es scheint jedoch das klebrige Stück zu klären.

Leonardo
quelle

Antworten:

8

0000 wurde als mehrdeutig angesehen, da es möglicherweise nur 000 plus eine führende Null bedeutet, da es oktal ist.

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

0755 ist nicht explizit - es ist mehrdeutig bei Personen, die explizit printf% # 3o verwenden, um eine dreistellige Oktalzeichenfolge mit der führenden 0 auszugeben. Ich glaube nicht, dass wir dies ändern können.

Dieser Diskussionsthread zu coreutils beginnt damit, dass jemand die chmod-Manpage zitiert und diese Einschränkung bemerkt:

Sie können die Bits in einem numerischen Modus setzen (aber nicht löschen).

Nick Russo
quelle