Vi um código mudar no trabalho, onde os valores de modo foram alterados de 777 para 0777 para fazer o nfs setattr funcionar. Qual é a diferença nos 2 valores?
mkdir()
. 0777 vs 777
Vi um código mudar no trabalho, onde os valores de modo foram alterados de 777 para 0777 para fazer o nfs setattr funcionar. Qual é a diferença nos 2 valores?
mkdir()
. 0777 vs 777
Respostas:
Se você estiver passando para chmod
(o programa de linha de comando), não há diferença. Mas em um programa C ou similar, 0777
é octal (três conjuntos de três bits 1, o que você pretende), enquanto 777
é decimal e é um padrão de bits bem diferente. ( chmod
interpretará qualquer argumento numérico como octal, portanto, nenhum zero inicial é necessário.)
0777 (octal) == binário 0b 111 111 111
== permissões rwxrwxrwx
(== decimal 511
)
777 (decimal) == binário 0b 1 100 001 001
== permissões sr----x--x
(== octal 1411
)
chmod
comando é sempre interpretado como octal. Usar chmod 888
dará um erro.
chmod
interpreta um argumento numérico como octal, independentemente do prefixo. (Mas realmente o número em si não tem função; apenas os dígitos, ou melhor, os bits.)
1777
, precisa escrever 01777
?
1777
é escrito 01777
em C. (Ou você poderia escrever 1023
, que é o mesmo número em decimal Mas não :-).
O primeiro bit é usado para o sticky bit http://en.wikipedia.org/wiki/Sticky_bit
Se você definir a permissão usando 4 dígitos, o primeiro definirá ou removerá este bit.
A resposta interessante é:
0700
e 700
, como explicado nas outras respostas00700
e 0700
(para diretórios)Pelo menos é o caso da versão chmod do GNU coreutils, que é o padrão no Linux.
Veja este exemplo:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Isso evita a exclusão acidental de bits setuid / setgid para diretórios. Para detalhes, consulte a documentação chmod .
No sistema Linux, existem dois tipos de permissões disponíveis:
Na permissão de arquivo, definimos a permissão em arquivos e pastas:
As permissões são:
Enquanto em permissão especial, três tipos de permissão são:
Na sua pergunta, você pergunta o que é a diferença; portanto, não há diferença entre, chmod 777 and 0777
porque existe o no any octal value
valor de exibição de (0) zero.