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 chmod 0000 testque não limpará todos os bits de permissão. O que não estou chegando aqui? Eu tentei comparar com uma calculadora , e eles não correspondem. O mesmo comportamento é visto no servidor em que eu fiz o SSH, RHEL, e minha própria máquina, Ubuntu. Eu tenho lido sobre isso por um tempo e gasto muito tempo tentando entender.

Encontrei este problema ao tentar todos os símbolos do primeiro octal, nunca tendo usado o chmod com 4 octais antes. Parece esclarecer a parte complicada, no entanto.

Respostas:


8

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

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

0755 não é explícito - é ambíguo as pessoas que estão usando explicitamente printf% # 3o para gerar uma cadeia octal de 3 dígitos com o 0 inicial - acho que não podemos mudar isso.

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

você pode definir (mas não limpar) os bits com um modo numérico.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.