Dlaczego nazwa katalogu chmod 0000 nie wyczyści specjalnych bitów w katalogu?


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

Nie jestem pewien, dlaczego chmod 0000 testnie wyczyści wszystkich bitów uprawnień. Czego tu nie dostanę? Próbowałem porównać z kalkulatorem i nie pasują. To samo zachowanie widać na serwerze, na którym ssh'd, RHEL i na mojej własnej maszynie, Ubuntu. Czytam o tym przez jakiś czas i spędzam zbyt dużo czasu próbując zrozumieć.

Wpadłem na ten problem podczas wypróbowywania wszystkich symboli dla pierwszej ósemki, ponieważ nigdy wcześniej nie używałem chmod z 4 oktałami. Wydaje się jednak, że usuwa lepki kawałek.

Odpowiedzi:


8

0000 uznano za dwuznaczną, ponieważ może oznaczać 000, plus wiodące zero, ponieważ jest ósemkowe.

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

0755 nie jest jednoznaczne - jest niejednoznaczne z ludźmi, którzy jawnie używają printf% # 3o do wyprowadzania 3-cyfrowego ciągu ósemkowego z wiodącym 0 - Nie sądzę, że możemy to zmienić.

Wątek dyskusji coreutils zaczyna się od cytowania strony podręcznika chmod, zwracając uwagę na to ograniczenie:

możesz ustawić (ale nie wyczyścić) bity w trybie numerycznym.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.