Question Pourquoi chmod 0000 nom-répertoire ne supprime-t-il pas les bits spéciaux du répertoire?


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

Je ne sais pas pourquoi chmod 0000 test ne sera pas effacer tous les bits d'autorisation. Qu'est-ce que je ne reçois pas ici? J'ai essayé de comparer avec un calculatrice, et ils ne correspondent pas. Le même comportement est vu sur le serveur dans lequel j'ai travaillé, RHEL, et ma propre machine, Ubuntu. Je lis à ce sujet depuis un moment et passe trop de temps à essayer de comprendre.

J'ai rencontré ce problème en essayant tous les symboles pour le premier octal, n'ayant jamais utilisé chmod avec 4 octaux auparavant. Il semble que cela efface le bit collant, cependant.


8
2017-10-06 03:16


origine




Réponses:


0000 a été considéré comme ambigu, car il pourrait simplement signifier 000, plus un zéro en tête car il est en octal.

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

0755 n'est pas explicite - il est ambigu avec les personnes qui sont explicitement   utiliser printf% # 3o pour générer une chaîne octale à 3 chiffres avec un 0 - I   ne pense pas que nous pouvons changer cela.

Ce fil de discussion coreutils départs avec quelqu'un citant la page de manuel de chmod en notant cette limitation:

vous pouvez définir (mais pas effacer) les bits avec un mode numérique.


8
2017-10-06 03:49