Pourquoi chmod 0000 nom-répertoire n'effacera-t-il pas les bits spéciaux du répertoire?


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

Je ne sais pas pourquoi chmod 0000 testn'effacera pas tous les bits d'autorisation. Qu'est-ce que je ne reçois pas ici? J'ai essayé de comparer avec une calculatrice , et ils ne correspondent pas. Le même comportement est vu sur le serveur dans lequel j'ai ssh'd, RHEL, et ma propre machine, Ubuntu. Je lis à ce sujet depuis un moment et je 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 octales auparavant. Cela semble cependant effacer la partie collante.

Réponses:


8

0000 était considéré comme ambigu, car il pouvait signifier simplement 000, plus un zéro de tête car il était 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 utilisent explicitement printf% # 3o pour sortir une chaîne octale à 3 chiffres avec 0 en tête - je ne pense pas que nous puissions changer cela.

Ce fil de discussion coreutils commence par quelqu'un citant la page de manuel chmod notant cette limitation:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.