Permissões de arquivos e pastas no Linux: qual a função de cada permissão?

O que são permissões Linux e por que importam?
Você já tentou acessar um projeto PHP no navegador, mas recebeu uma mensagem de erro informando falta de permissão?

Mesmo com os arquivos na máquina local, esse problema é comum e acontece devido às permissões do sistema de arquivos.
Se analisarmos a mensagem de erro, conseguimos obter algumas informações como:
Proibido
Você não tem permissão para acessar `loja/index.php` neste servidor.
Mas como assim não temos permissão? Precisamos, antes, entender o que são essas permissões…
Entendendo as permissões no Linux
No Linux, quando um arquivo ou diretório é criado, algumas permissões são atribuídas a ele automaticamente.
Essas permissões são divididas em três grupos: O usuário que criou o arquivo (usuário dono), o grupo dono do arquivo (que pode conter vários usuários), e as dos demais usuários que não pertencem ao grupo dono.
Essas permissões podem ser: leitura (`r`, do inglês read), escrita (`w`, write) e execução (`x`, execute).
A permissão de leitura (`r`) permite visualizar o conteúdo de um arquivo ou diretório. Já a permissão de escrita (`w`) permite modificar ou adicionar conteúdo em arquivos e, no caso de diretórios, criar ou remover arquivos dentro deles.
A permissão de execução (`x`) permite rodar arquivos executáveis e, no caso de diretórios, possibilita acessar seu conteúdo usando comandos como `cd`.
Certo, já sabemos o que são e quais são as permissões, mas como podemos saber quais estão sendo usadas neste arquivo?
Como ver permissões de pasta e arquivo no Linux
Para visualizar a permissão de um diretório, podemos ir até o local onde esse diretório se encontra.
O comando `cd` (change directory) pode nos levar até esse local, que no meu caso fica em `/var/www/html`. Portanto:
cd /var/www/html/ 
Agora podemos falar para o terminal listar (`ls`, list) o conteúdo deste diretório:
Hum… Ainda não conseguimos visualizar as permissões.
A lista retornada pelo comando `ls` é uma lista normal. Para visualizar os arquivos e suas permissões, temos que dizer para o `ls` que queremos uma lista longa (`-l`).
ls -l 
Agora temos algumas informações a mais, porém, como queremos saber apenas das permissões, vamos nos concentrar na primeira coluna.
A primeira coluna é dividida em dez caracteres. O primeiro nos mostra se o objeto listado é um arquivo (`-`) ou um diretório (`d`).
Os nove caracteres restantes nos mostram as permissões do usuário dono, grupo dono e outros usuários, respectivamente:

Caso tenham alguma permissão, é mostrada a letra correspondente à permissão, senão, um traço (`-`) é apresentado.
Sabendo disso, já conseguimos dizer qual a permissão do nosso projeto loja. O usuário dono tem todas as permissões (`rwx`), enquanto o grupo dono e o demais usuários não possuem nenhuma permissão (`---`).
Mas, se eu criei os arquivos e tenho todas as permissões, por que não consigo acessar a página pelo navegador?
Quando acessamos uma página pelo navegador, por padrão, o servidor não sabe quem é o usuário, ou seja, quem acessa a página web utiliza a permissão outros.
Como o diretório do projeto não possui permissões disponíveis para o grupo de usuários outros, não conseguimos acessar a página pelo navegador.
Logo, precisamos alterar as permissões desse diretório para conseguir ter acesso pelo navegador. Mas como podemos fazer isso?
Como mudar permissões no Linux usando chmod
Para alterar as permissões de um arquivo ou diretório, temos que alterar o modo (`chmod`, change mode) que elas estão organizadas.
Queremos que os outros usuários (`o`) tenham acesso de leitura (`r`) no diretório, assim conseguirão visualizar os arquivos neles. Então podemos dizer para o terminal:
chmod o=r loja/ 
Vamos listar com a opção de lista longa para ver se ocorreu a mudança nas permissões:

Permissão atribuída! Vamos conferir se agora conseguimos nossa página pelo navegador:

Ainda não obtivemos sucesso. Nós atribuímos a opção para a leitura, que, no caso de diretórios, serve para conseguirmos visualizar seu conteúdo. Porém não temos permissão para acessar esses diretórios. Para isso, precisamos da permissão de execução (`x`).
Já sabemos como alterar a permissão de uma pasta, então basta dizer que queremos adicionar (`+`), a permissão de execução (`x`):
chmod o+x loja/ 
Vamos tentar acessar novamente nosso projeto pelo navegador e ver se conseguimos visualizar nossa página:

Bem, a página foi carregada, mas cadê o CSS? Por que será que ele não foi carregado?
Vamos checar as permissões dos arquivos do projeto e ver se temos permissão para acessá-los.
Para isso, podemos entrar no diretório como fizemos antes com o comando `cd`, ou então, podemos pedir para o `ls` listar o conteúdo do diretório loja:
ls -l loja/ 
Veja que nem os arquivos ou diretórios tem permissão para outros usuários. Ou seja, não conseguimos acessar o conteúdo dos diretórios. Para resolver esses problemas, basta alterar a permissão de todas as pastas e diretórios.
“Mas temos que alterar a permissão de todos os arquivos, diretórios e subdiretórios um por um?”
Não precisamos! O `chmod` tem uma opção que faz isso para a gente. Essa opção muda a permissão dos arquivos recursivamente. Isto é, ela muda a permissão de todos os arquivos em todo o diretório e subdiretórios.
Vamos então falar para o `chmod` mudar a permissão de maneira recursiva (`-R`) no diretório `loja/`:
chmod -R o=rx loja/ 
Vamos checar com o comando `ls` se a mudança ocorreu de fato:

Tudo certo! Agora, se acessarmos pelo navegador, devemos ver o site completo:

Sucesso! O site carregou, assim como todos os seus componentes.
Conseguimos alterar as permissões dos nossos arquivos, mas usamos apenas a opção para outros usuários (`o`). O que fazer caso eu queira alterar as permissões do usuário e do grupo dono do arquivo?
Como dar permissão de leitura, escrita e execução para usuário e grupo no Linux
Antes de mostrar como alterar a permissão do usuário e grupo dono de um arquivo ou diretório, vamos criar um arquivo de texto em qualquer lugar do sistema para ser usado como teste. No meu caso vou criar esse arquivo na área de trabalho:

Esse arquivo já contém algumas permissões que foram atribuídas por padrão no momento em que ele foi criado.
Essas permissões padrão são determinadas pelo valor `umask` do sistema, que normalmente é `022`, resultando em permissões `644` para arquivos (rw-r--r--) e `755` para diretórios (rwxr-xr-x)."
Vamos dizer para o `chmod` que queremos que o usuário dono do arquivo (`u`) tenha, além dessas permissões, a permissão de executar o arquivo.
Então eu posso falar para o `chmod` acrescentar (`+`) a permissão de execução para o usuário dono (`u`):
chmod u+x teste.txt 
Também podemos falar para o `chmod` retirar (`-`) a permissão de escrita do grupo dono (`g`):
chmod g-w teste.txt 
Se pedimos para listar esse arquivo e suas permissões, podemos ver as mudanças:
ls -l 
“Hum… mas se eu quiser mudar a permissão de todos os usuários em um único comando, como posso fazer?”
Nós podemos, por exemplo, falar para o `chmod` remover a permissão de execução do usuário dono do arquivo (`u-x`), acrescentar as opções de escrita e execução para o grupo dono (`g+wx`) e deixar os demais usuários apenas com a permissão de execução (`o=x`):
chmod u-x,g+wx,o=x teste.txt 
Pronto! Alteramos todas as permissões em apenas uma linha com um único comando. Se visualizarmos as permissões agora, veremos as mudanças:

Mas precisamos digitar muito para alterar todas as permissões. Existe alguma forma de ser mais direto na digitação?
Além de utilizar letras, chamado de modo simbólico, ou UGO (User, Group, Others), o `chmod` aceita também alguns números. Quando utilizamos números para alterar as permissões, dizemos que estamos utilizando o modo octal.
Modo octal no Linux: como usar chmod 777 e outras permissões
Permissões como chmod 777 liberam permissão total de pasta linux e são usadas para resolver rapidamente erros de acesso ou permissão negada, mas é importante conhecer os riscos dessa ação.
O modo octal recebe este nome, pois utilizamos oito números, de 0 a 7. Cada um desses números corresponde a uma letra, ou a um conjunto de letras, no modo simbólico:
- 1: permissão de execução (`x`)
- 2: permissão de escrita (`w`)
- 4: permissão de leitura (`r`)
Quando utilizamos o modo octal, podemos passar o modo de permissões de cada grupo de usuários. A ordem é sempre: usuário dono, grupo dono e outros usuários.
Então eu posso falar para o `chmod`, por exemplo, colocar a permissão de leitura para o usuário dono (`4`), para o grupo dono a de escrita (`2`) e a de execução para os demais usuários (`1`):
chmod 421 teste.txt 
Esse comando equivale a `chmod u=r,g=w,o=x teste.txt` no modo simbólico.
Mas só podemos utilizar essas opções com o modo octal?
Nós também conseguimos combinar essas permissões no modo octal. Por exemplo, se desejamos que o usuário dono do arquivo tenha a permissão de leitura (`4`) e escrita (`2`), basta somar o valor dessas permissões. Portanto teríamos `6`.
Já se queremos tirar todas as permissões, basta colocar `0`.
Para fazer o usuário dono ter todas as permissões (`7`) no arquivo, o grupo dono ter as permissões de leitura e escrita (`6`) e os demais usuários não tenham nenhuma permissão (`0`). Basta dizer isso ao `chmod`:
chmod 760 teste.txt 
Se listarmos as permissões, podemos checar se as mudanças funcionaram:

Nossas permissões foram atribuídas corretamente. :)
Para saber mais sobre permissões
Além do `chmod`, outro comando muito utilizado é o chown (change owner). Esse comando consegue mudar o usuário e grupo dono de um arquivo ou diretório e só pode ser executado pelo superusuário, ou pelo usuário administrador utilizando o comando `sudo`.
Devemos ter muito cuidado em dar permissões para os usuários que não fazem parte do grupo dono ou não são donos dos arquivos ou pastas.
Pois, dependendo da permissão, esses usuários conseguem ter acesso a um diretório ou arquivo no sistema. Conseguindo visualizar, alterar, ou até mesmo excluir seu conteúdo.
Riscos de segurança específicos:
- Nunca use chmod 777 em produção: concede permissões totais a todos os usuários, criando vulnerabilidade crítica para execução de código malicioso. Segundo especialistas, em 2026, esta é considerada "a opção nuclear" e deve ser evitada.
- Evite chmod -R 777 especialmente: aplicar recursivamente permissões totais pode comprometer todo um sistema em segundos.
- Para servidores web: use 644 para arquivos (leitura para todos, escrita só para dono) e 755 para diretórios. Arquivos de configuração sensíveis como wp-config.php devem ter 600 (acesso exclusivo ao dono).
Resumo: como alterar, liberar e configurar permissões no Linux?
Permissões fazem parte do sistema. Sem elas não conseguimos visualizar, alterar ou executar arquivos, entrar em diretórios ou listar seu conteúdo. Até mesmo para acessar um site na internet precisamos de permissões.
No Linux, conseguimos alterar a permissão de arquivos e diretórios usando um comando próprio para isso, o `chmod`. Esse comando nos permite alterar as permissões do usuário e grupo dono do arquivo ou diretório e dos demais usuários.
Mas antes de alterar, temos que entender quais são essas permissões e como podem ser representadas.
Aprenda ainda mais conosco
Gosta de Linux? Aqui na Alura temos uma trilha completa no sistema. Nela, você aprenderá comandos do sistema, sobre a árvore de diretórios, alguns comandos de rede, como adicionar usuários e grupos, além de muitas outras coisas.
Para temas relacionados, leia também: Entendendo as permissões especiais do Linux, Como recuperar a senha de root no Linux e consulte a documentação oficial do GNU chmod para aprofundar-se ainda mais.








