Existe alguma diferença entre os valores de modo 0777 e 777?

44

Eu vi uma mudança de código no trabalho, onde os valores de modo foram alterados de 777 para 0777 para fazer o trabalho nfs setattr. Qual é a diferença nos 2 valores?

    
por user1071840 02.12.2013 / 21:28

4 respostas

65

Se você os estiver passando para chmod (o programa de linha de comando), não haverá diferença. Mas em um programa em C ou similar, 0777 é octal (três conjuntos de três 1 bits, que é o que você pretende), enquanto 777 é decimal e é um padrão de bit 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 )

    
por 02.12.2013 / 21:29
4

O primeiro bit é usado para o link

Se você definir a permissão usando 4 dígitos, o primeiro definirá ou removerá esse bit.

    
por 02.12.2013 / 21:44
1

A resposta interessante é:

  • não há diferença entre 0700 e 700 , conforme explicado nas outras respostas
  • mas é uma diferença entre 00700 e 0700 (para diretórios)

Pelo menos esse é 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 .

    
por 08.07.2016 / 14:33
-1

No sistema Linux, existem dois tipos de permissões disponíveis:

  1. Permissão de arquivo
  2. Permissão especial

Na permissão "Arquivo", definimos permissão em arquivos e pastas:

As permissões são:

  • ler (4)
  • escreva (2)
  • execute (1)

Enquanto em permissão especial, três tipos de permissão são:

  • SUID (4)
  • SGID (2)
  • Sticky Bit (1)

Em sua pergunta, você pergunta qual é a diferença, portanto, não há diferença entre chmod 777 and 0777 , porque há no any octal value , que mostra o valor de (0) zero.

    
por 23.04.2016 / 08:01