Por que o chmod 0000 directory-name não limpa os bits especiais no diretório?

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

Não sei por que chmod 0000 test não limpará todos os bits de permissão. O que eu não estou conseguindo aqui? Eu tentei comparar com uma calculadora , e eles não correspondem. O mesmo comportamento é visto no servidor em que eu tenho ssh'd, RHEL e minha própria máquina, Ubuntu. Eu tenho lido sobre isso por um tempo e gastando muito tempo tentando entender.

Eu me deparei com esse problema ao tentar todos os símbolos para o primeiro octal, nunca tendo usado chmod com 4 oitavos antes. Parece, no entanto, limpar o pedaço pegajoso.

    
por Leonardo 06.10.2014 / 05:16

1 resposta

8

0000 foi considerado ambíguo, uma vez que pode significar apenas 000, além de um zero inicial, uma vez que é octal.

link

0755 is not explicit - it is ambiguous with people that are explicitly using printf %#3o to output a 3-digit octal string with leading 0 - I don't think we can change this.

Esse tópico de discussão do coreutils começa com alguém citando o chmod man página observando essa limitação:

you can set (but not clear) the bits with a numeric mode.

    
por 06.10.2014 / 05:49

Tags