Mengapa chmod 0000 nama-direktori tidak menghapus bit khusus pada direktori?

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

Saya tidak yakin mengapa chmod 0000 testtidak akan menghapus semua bit izin. Apa yang tidak saya dapatkan di sini? Saya sudah mencoba membandingkan dengan kalkulator , dan mereka tidak cocok. Perilaku yang sama terlihat di server saya ssh'd ke, RHEL, dan mesin saya sendiri, Ubuntu. Saya sudah membaca tentang ini untuk sementara waktu dan menghabiskan terlalu banyak waktu untuk mencoba memahami.

Saya mengalami masalah ini ketika mencoba semua simbol untuk oktal pertama, karena tidak pernah menggunakan chmod dengan 4 oktal sebelumnya. Tampaknya untuk menghapus sedikit lengket.

Leonardo
sumber

Jawaban:

8

0000 dianggap ambigu, karena mungkin hanya berarti 000, ditambah nol di depan karena itu oktal.

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

0755 tidak eksplisit - ini ambigu dengan orang-orang yang secara eksplisit menggunakan printf% # 3o untuk menghasilkan string oktal 3 digit dengan awalan 0 - Saya tidak berpikir kita bisa mengubahnya.

Utas diskusi coreutils itu dimulai dengan seseorang yang mengutip halaman manual chmod yang mencatat batasan ini:

Anda dapat mengatur (tetapi tidak menghapus) bit dengan mode numerik.

Nick Russo
sumber