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. ( chmodinterpretará 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)
chmodcomando é sempre interpretado como octal. Usar chmod 888dará um erro.
chmodinterpreta 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 01777em 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 é:
0700e 700, como explicado nas outras respostas00700e 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 0777porque existe o no any octal valuevalor de exibição de (0) zero.