Entendendo e configurando permissões de arquivos e pastas no Linux

Por Felipe Arruda

Os sistemas baseados em Unix não são apenas multitarefa, mas também multiusuários. Isso significa que o Linux, além de poder executar muitos programas e serviços simultaneamente, também permite que mais de um usuário use o SO – ao mesmo tempo, inclusive – sem maiores confusões.

Caso o seu computador com Linux esteja conectado a uma rede de computadores, por exemplo, é possível que mais de uma pessoa faça uso dele simultaneamente, chegando ao ponto, inclusive, de executar aplicações gráficas de maneira remota.

E um dos conceitos essenciais para que esse tipo de recurso funcione bem é o de permissão de arquivos, que protege os usuários uns dos outros. Dessa forma, o Linux estipula regras e possui comandos capazes de definir quem pode acessar determinado arquivo ou pasta e a que momento. Afinal, você não vai querer que alguém desligue o sistema que você está usando ou apague aquele arquivo importante sem o seu consentimento, certo?

Conferindo e entendendo as permissões de arquivo

No tutorial com os 10 comandos essenciais do Linux, listamos o ls -l, que exibe detalhes dos arquivos listados, como a data de criação e o tamanho de cada um. Porém, você deve ter reparado que, logo no início da linha de cada item, há uma sequência de caracteres bastante misteriosa. Essa sequência de d, r, w, x ou - descreve, na verdade, as permissões do arquivo em questão.

chmod

Na imagem acima, por exemplo, podemos ver que o arquivo "importante.txt" possui como permissão a sequência -rw-r--r--, seguida das palavras "felipe" (dono do arquivo) e "canaltech" (grupo a que pertence o arquivo). Mas o que isso significa?

Para facilitar, vamos destrinchar cada um dos elementos dessa sequência. Primeiro, o significado de cada caractere:

r: leitura permitida do arquivo ou diretório

w: permite editar um arquivo ou modificar o conteúdo de um diretório

x: permite executar um arquivo ou acessar um diretório pelo comando cd

hífen: o caractere "-" no início da sequência indica que aquele é um arquivo comum. Caso contrário, indica que a permissão de escrita, leitura ou execução está negada.

d: se a letra aparecer no início da sequência, indica que aquele item é um diretório

Também é preciso entender que a permissão de arquivos e pastas está dividida em quatro partes:

Permissões de arquivo no Linux

A primeira parte (azul) é composta pelo primeiro caractere e descreve se é um arquivo regular (-) ou um diretório (d). No caso do exemplo acima, por ser um arquivo comum de texto, há um hífen.

Já a segunda parte (verde) é composta pelos próximos três caracteres: eles indicam a permissão do dono do arquivo, ou seja, do usuário que o criou ou que possui a autoria dele. No exemplo acima, a permissão é rw-, ou seja, o usuário "felipe" pode ler (r) e modificar (w) o arquivo, mas não executá-lo (-). Por ser um documento de texto, a permissão de executável (x), não está habilitada.

Já os outros seis caracteres formam as outras duas partes da permissão do arquivo, cada uma com três caracteres. A primeira (rosa) diz respeito ao grupo em que o usuário se encontra. No Linux, podemos criar, por exemplo, um grupo para todos os redatores do Canaltech e estabelecer que um arquivo pode ser acessado e lido por todos os membros daquele grupo, mas editado apenas por quem o criou. Na imagem acima, percebemos que os usuários desse grupo podem apenas ler (r--) o arquivo.

Já os últimos três caracteres (amarelo) indicam as permissões para outros usuários do sistema, aqueles que não fazem parte do grupo do arquivo. No caso do nosso exemplo, eles possuem as mesmas permissões de somente leitura (r--).

Alterando permissões com o chmod

As permissões de arquivos e diretórios podem ser alteradas com o comando chmod. E depois de aprender como interpretar as permissões, fica mais fácil usá-lo, já que esse comando trabalhará com uma sintaxe semelhante. A "fórmula" de uso mais simples do chmod é:

chmod ugoa+-=rwx arquivo/diretório

Sendo que:

u: define que as regras serão aplicadas ao usuário

g: define que as regras serão aplicadas ao grupo

o: define que as regras serão aplicadas aos outros usuários do sistema

a: define que as regras serão aplicadas a todos

+: adiciona permissão

-: remove permissão

=: informa que a permissão aplicada deve ser exatamente igual a que será indicada a seguir

r: atribui a permissão de leitura

w: atribui a permissão de escrita

x: atribui a permissão de execução

Com isso, já podemos arriscar um primeiro comando. Para permitir que usuários do grupo "canaltech" possam editar o arquivo "importante.txt", basta digitar:

sudo chmod g+w importante.txt

Note que o chmod precisa ser usado com o comando sudo, pois apenas o usuário root tem a permissão de executá-lo. Depois de informar a senha e de ter concluído a execução, basta listar o arquivo com o ls -l para conferir a nova permissão. Você perceberá que onde antes era r--, agora se tornou rw-:

chmod

Caso queira remover a permissão de leitura, escrita e execução de pessoas que não pertencem ao grupo, use:

sudo chmod o-rwx importante.txt

Da mesma forma, se você quiser dar a permissão de escrita e leitura para todos os usuários do sistema, basta executar:

sudo chmod a+rw importante.txt

Note que o parâmetro a+rw vai apenas adicionar a permissão de leitura e escrita, isto é, caso o dono do arquivo, grupo e outros usuários já possuam a permissão de execução, ela não será revogada. Se quiser impor a regra de apenas leitura e escrita, revogando uma permissão de execução pré-existente, use o sinal de igual:

sudo chmod a=rw importante.txt

Outra forma de usar o chmod

Existe mais de uma forma de usar o chmod e muitos preferem esta segunda, que ensinaremos a seguir. Em vez de digitar letras e operadores matemáticos, como o caso de a+rw, por exemplo, muitos administradores preferem estipular as permissões com códigos numéricos.

Para isso, você precisa pensar na regra de permissão como se fosse uma sequência de bits. A permissão rwx, por exemplo, equivaleria a 111, enquanto que rw- se transformaria em 110. Resumindo: 1 para letra, 0 para hífen. Assim, ao converter esses números de base binária para decimal, 111 viraria 7, enquanto que 110 se tornaria 6.

Seguindo essa lógica, se você quisesse fornecer as permissões de leitura, escrita e execução para todos os usuários do sistema, poderia digitar a seguinte linha:

sudo chmod 777 nome-do-arquivo

Se preferir manter a opção de executar o arquivo apenas para o dono e grupo dele, então a linha muda para:

sudo chmod 776 nome-do-arquivo

Para facilitar e não ter que converter de cabeça todos esses números, existe uma pequena tabela que pode ser consultada sempre que necessário:

tabela chmod octal

Com um pouco de prática você estará alterando permissões de arquivos e diretórios de maneira automática. E garantimos que você nunca mais vai se esquecer do que faz um chmod 777.

Este artigo faz parte de nossa biblioteca de conteúdo "Tudo o que você precisa saber sobre o Linux". Não deixe de acessar e conferir todo o conteúdo publicado sobre o Pinguim.