Perché chmod 0000 nome-directory non cancella i bit speciali nella directory?


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

Non sono sicuro del motivo chmod 0000 testper cui non cancellerà tutti i bit di autorizzazione. Cosa non ci sto arrivando? Ho provato a confrontare con una calcolatrice e non corrispondono. Lo stesso comportamento si riscontra sul server in cui ho installato, RHEL e la mia macchina, Ubuntu. Ne ho letto per un po 'e ho passato troppo tempo a cercare di capire.

Mi sono imbattuto in questo problema quando ho provato tutti i simboli per il primo ottale, non avendo mai usato chmod con 4 ottali prima. Sembra però chiarire la parte appiccicosa.

Risposte:


8

0000 è stato considerato ambiguo, poiché potrebbe significare solo 000, più uno zero iniziale poiché è ottale.

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

0755 non è esplicito - è ambiguo con le persone che usano esplicitamente printf% # 3o per produrre una stringa ottale a 3 cifre con 0 iniziale - Non penso che possiamo cambiarlo.

Quella discussione di coreutils inizia con qualcuno che cita la pagina man di chmod notando questa limitazione:

puoi impostare (ma non cancellare) i bit con una modalità numerica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.