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?
permissions
user1071840
fonte
fonte
mkdir()
. 0777 vs 777Respostas:
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), enquanto777
é 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õesrwxrwxrwx
(== decimal511
)777 (decimal) == binário
0b 1 100 001 001
== permissõessr----x--x
(== octal1411
)fonte
chmod
comando é sempre interpretado como octal. Usarchmod 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 escrever01777
?1777
é escrito01777
em C. (Ou você poderia escrever1023
, 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.
fonte
A resposta interessante é:
0700
e700
, como explicado nas outras respostas00700
e0700
(para diretórios)Pelo menos é o caso da versão chmod do GNU coreutils, que é o padrão no Linux.
Veja este exemplo:
Isso evita a exclusão acidental de bits setuid / setgid para diretórios. Para detalhes, consulte a documentação chmod .
fonte
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 ono any octal value
valor de exibição de (0) zero.fonte