Definição e exemplos de uso do comando chmod
A pedidos de amigos na internet que estão se preparando para concursos em todo o Brasil, preparei este pequeno mas esclarecedor conteúdo a respeito deste comando que tem dado o que falar nas provas da área de tecnologia.
As permissões são um dos aspectos mais importantes do Linux. Elas são usadas para vários fins, mas servem principalmente para proteger o sistema e os arquivos dos usuários. Manipular permissões é uma atividade interessante, mas complexa ao mesmo tempo. Mas tal complexidade não deve ser interpretada como dificuldade e sim como possibilidade de lidar com uma grande variedade de configurações, o que permite criar vários tipos de proteção a arquivos e diretórios.
Como sabemos, somente o root tem ações irrestritas no sistema, justamente por ser o usuário responsável pela configuração, administração e manutenção do Linux. Cabe a ele, por exemplo, determinar o que cada usuário pode executar, criar, modificar, etc. Naturalmente, a forma usada para especificar o que cada usuário do sistema pode fazer é a determinação de permissões. Sendo assim, neste artigo você verá como configurar permissões de arquivos e diretórios, assim como modificá-las.
Com o comando chmod (de change mode) você pode configurar permissões de duas maneiras: simbolicamente e numericamente. Primeiramente veremos o método simbólico.
Para ter uma visão mais clara da forma simbólica com o chmod, imagine que tais símbolos se encontram em duas listas, e a combinação deles gera a permissão:
Lista 1
Símbolo
u => usuário
g => grupo
O (letra ‘o’ maiúscula) => outro
a => todos
Lista 2
Símbolo
r => leitura
w => gravação
x => execução
Para poder combinar os símbolos destas duas listas, usam-se os operadores:
+ (sinal de adição) => adicionar permissão
– (sinal de subtração) => remover permissão
= (sinal de igualdade) => definir permissão
Para mostrar como essa combinação é feita, vamos supor que você deseje adicionar permissão de gravação no arquivo “arquivo” para um usuário. O comando a ser digitado é: (neste caso estamos levando em consideração que estamos na localização /home/usuario e que este usuário é o dono do diretório)
$ chmod u+w arquivo (lembrando que no Linux pouco importa a questão das extensões, salvo alguns casos)
O “u” indica que a permissão será dada a um usuário, o sinal de adição (+) indica que está sendo adicionada uma permissão e “w” indica que a permissão que está sendo dada é de gravação.
Caso você queira dar permissões de leitura e gravação ao seu grupo, o comando será:
$ chmod g+rw arquivo
Agora, vamos supor que o arquivo arquivo deverá estar com todas as permissões disponíveis para o grupo. Podemos usar então:
$ chmod g=rwx arquivo
Dica: crie arquivos e diretórios. Em seguida, teste a combinação de permissões com chmod. Isso lhe ajudará muito no entendimento.
Usando chmod com o método numérico
Usar o chmod com valores numéricos é uma tarefa bastante prática. Em vez de usar letras como símbolos para cada permissão, usam-se números. Se determinada permissão é habilitada, atribui-se valor 1, caso contrário, atribui-se o valor 0. Sendo assim, a string de permissões r-xr—– na forma numérica fica sendo 101100000. Essa combinação de 1 e 0 é um número binário. Mas temos ainda que acrescentar a forma decimal (ou seja, números de 0 a 9)
Como sabemos, os programadores clássicos (aqueles que programam em linguagem de baixo nível) são muito bons e matemática e como não poderia deixar de ser, usaram um método numérico para dar mais esta opção ao chmod de agregar e alterar permissões em arquivos e diretórios:
Permissão | Binário | Decimal |
— | 000 | 0 |
–x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r– | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
Viu aí? código binário em ação! daí podemos tirar as conclusões:
1º É muito mais fácil dar e alterar permissões em método numérico;
2º A visualização (entendimento) das permissões separadas ou reunidas também se torna mais simples;
Vamos deixar de blá blá blá e dar um exemplo prático? pois bem:
Antes de mais nada iremos destrinchar a tabela acima para compreendermos facilmente o exemplo:
Sempre da esquerda para a direita temos as permissões:
Ex: 421
4 = para o dono
2 = pra o grupo
1 = para todos os outros
(read) r = 4
(write) w = 2
(execution) x = 1
Certo?
E na combinação podemos ter:
(read + execution) rx = 5 –> 4+1
(read + write) rw = 6 –> 4 + 2
(read + write + execution) rwx –> 4 + 2 + 1
E finalmente 0 (zero) significa que não há permissão alguma
sendo assim:
$ chmod 600 arquivo
Qual é a permissão?
6 = o dono pode ler e escrever (4 + 2)
0 = o grupo não tem permissão
0 = o restante também não possui permissão
A complexidade explica o porquê da eficiência e da segurança que é assegurada aos sistemas baseados em Unix, por isso temos realmente de treinar bastante para compreender e dominar este assunto que em muitos casos já chegou a discussões ferrenhas em canais de IRC e nos fóruns espalhados pela rede. Espero ter sido claro e caso hajam dúvidas postem no fórum. Não esqueçam de comentar.