Por que usar 'chmod 644' em vez de 'chmod u = rw, go = r,…'?

35

Estou trabalhando no * nix há alguns anos, e uma das coisas com as quais não consigo me acostumar são as permissões octal no código. Existe algum outro motivo que o tamanho da linha para preferir chmod 644 ... over chmod u=rw,go=r ... ?

PS: Eu não estou procurando uma explicação das permissões octal. Eu sei como elas funcionam, e isso está bem explicado no manual. Estou perguntando por que o octal parece ser preferido em relação à forma mais legível por humanos.

    
por l0b0 12.12.2011 / 16:38

9 respostas

39

Usar os códigos octal tem duas vantagens em que posso pensar, e nenhuma delas é tão grande assim:

  1. Eles são mais curtos e fáceis de digitar.
  2. Algumas coisas só as compreendem e, se você usá-las rotineiramente, não estará coçando a cabeça (ou correndo para a documentação) quando se deparar com uma. Por exemplo, você precisa usar octal para chmod em Perl ou C.

Às vezes, utilitários simples não lidam com versões "amigáveis"; especialmente em usuários não-GNU.

Além disso, algumas empresas publicam octal. Por exemplo, se você executar umask para ver qual é a sua umask atual, ela será cuspida em octal (embora no bash, umask -S seja simbólico).

Então, em suma, eu diria que a única razão para preferí-los é digitar menos caracteres, mas mesmo que você opte por não usá-los, você deve saber como eles mapeiam para que você possa descobrir um código octal se você se deparar com uma das coisas que só faz octal. Mas você não precisa saber imediatamente que 5 mapeia para rx , você só precisa ser capaz de descobrir isso.

    
por 12.12.2011 / 18:02
14

Acho que eu tenho usado o octal por muito tempo.

7 é rwx (faça qualquer coisa com ele), 5 é rx (preciso lê-lo para executá-lo), 6 é wr (qualquer arquivo de dados que você precise modificar), 4 é r (vamos deixar você ver ) e 0 é - (desculpe, nada aqui para ver). E a ordem é eu, nós, todos. Estas são as combinações básicas.

755 Eu posso mudar e rodar, todo mundo pode rodar.

644 Eu posso mudar isso, todo mundo pode ler.

444 Leia somente para todos, nós terminamos aqui.

500 Eu posso executá-lo, não quero que ele mude, todo mundo dá as mãos.

Para mim, é curto, direto ao ponto. 9 caracteres e uma especificação de arquivo e seguir em frente.

    
por 12.12.2011 / 18:02
11

Eu nunca gostei muito da representação octal, eu sempre fui direto para a notação rwxr-xr-x , pois parece mais simples para mim. No entanto, pelo que eu vejo, a representação octal existe para realmente tornar mais fácil para nós lembrarmos (não vejo como isso funciona).

O único outro possível benefício que vejo octal trazendo para a mesa é a falta de ambigüidade. As 8 configurações de bits de permissão diferentes são representadas por um único número distinto, o que, com certeza, ajuda algumas pessoas acidentalmente a colocarem um w onde não deveriam.

Infelizmente, memorizei esta tabela:

#  r  w  x
0  0  0  0
1  0  0  1
2  0  1  0
3  0  1  1
4  1  0  0
5  1  0  1
6  1  1  0
7  1  1  1
    
por 12.12.2011 / 16:53
5

Eu acho que o motivo é novamente - história. Inicialmente, os valores octal foram os únicos. Os simbólicos vieram depois.

Eu prefiro os simbólicos. Especialmente se você quiser alterar os valores existentes sem tocar em outras partes.

Como chmod -R u=rwx,g-w+X,o=- faça isso em octal ...

    
por 13.12.2011 / 21:31
3

Note que os modos octal podem remover bits setuid e setgid em alguns sistemas.

Fedora 16:

$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770

(o 2 é preservado)

FreeBSD 9:

$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770

(o 2 se tornou um 0 )

Se você quiser alterar as permissões de um arquivo ou diretório, pode ser melhor especificar apenas os bits que deseja alterar (por exemplo, chmod o= dir ou chmod o-rwx dir no exemplo acima).

    
por 18.04.2012 / 16:53
3

A história explica por que os modos octal existem , mas eu acho que a funcionalidade é a razão pela qual a forma mnemônica existe. E todos os pontos sobre outras ferramentas usando exclusivamente os modos octal são perfeitamente válidos e eu acho que você tem para aprender e conhecê-los. No entanto, acho que os administradores conservadores não vêem o verdadeiro utilitário que vem da forma mnemônica.

A forma octal, especialmente quando usada recursivamente, tende a forçar os administradores a fazerem coisas estúpidas. Ou melhor, os resultados da negligência resultaram em algo estúpido. Sempre que você encontrar uma pasta com muitos arquivos de texto e o x bit definido, você terá uma prova.

Por que alguém definiria o x desse jeito? Porque é difícil não usar a forma mnemônica dos modos. Considere que você deseja redefinir as permissões em /var/www e não executar nenhum CGI de estilo antigo, portanto, o x bit deve ser removido. No entanto, o x bit serve outro propósito em diretórios. Então você acaba fazendo algo (como root ) como:

chmod -R 666 /var/www
find /var/www -type d -exec chmod 777 {} \;

Se, no entanto, você estivesse usando o formulário mnemônico, poderia dar uma "receita":

chmod -R a=rwX /var/www

que é a forma abreviada de chmod -R ugo=rwX /var/www (alcançando o mesmo caminho, mas diferente: chmod -R a-x,a+rwX /var/www ).

Mas há outra coisa que é mais trivial, que não pode ser alcançada com os modos octal. Você não pode ajustar a máscara user ou group ou other individualmente com o formulário octal.

Resumindo: é como comparar um bisturi (mnemônico) e uma faca afiada (octal) ... mas você ainda precisa conhecer os bits do modo octal por outros motivos:)

A razão pela qual os modos octal ainda são preferidos , eu acho, não é mais a digitação envolvida na forma mnemônica, mas os administradores excessivamente conservadores. E sim, 2013 chamando, esses administradores excessivamente conservadores ainda existem e estão aqui para ficar por algum tempo.

    
por 13.02.2013 / 14:28
0

Quando você tem que modificar as permissões dos arquivos o tempo todo , você aprecia os 3 caracteres. Na maior parte do tempo, uso as versões + ou - para alterar as permissões.

Por exemplo, eu crio um novo PHP, Python ou outro script na minha pasta apache. chmod a+x é tudo que faço para que possa ser executado. Eu li como "tudo mais executar". Agora eu sei que vai funcionar, e eu só precisava de 3 caracteres.

Outras vezes, uso 644 e 755 automaticamente. Eu só penso nisso como 644 significa um arquivo, 755 significa um script.

    
por 17.12.2011 / 03:01
0

Adapta-se muito bem às configurações de umask, que geralmente são fornecidas na escrita octal (em pam ou fstab ).

    
por 13.12.2011 / 20:15
0
Sugiro que uma razão importante é que a representação octal corresponde de perto ao que você vê com ls -l (ou melhor, quando você converte mentalmente entre octal e binário).

    
por 23.07.2013 / 13:24