CHMOD: como aplicar permissões no Linux

As permissões desempenham um papel fundamental nos PCs Linux, e também em servidores VPS. O comando chmod permite configurar quem pode visualizar, modificar ou executar arquivos. Além disso, também acessar diretórios ou listar seu conteúdo.

Até mesmo para acessar um site hospedado na internet, precisamos que o servidor nos conceda permissões em suas regras para isso. Este artigo é um guia completo para aplicar permissões no Linux usando o comando chmod.

Ao criarmos diretórios e arquivos no Linux, determinadas permissões são vinculadas automaticamente pelo sistema operacional. Nem sempre essas permissões definidas por padrão pelo Linux são permissões que um site, sistema ou aplicação precisa.

Então, para liberarmos ou restringirmos acesso e deixarmos o ambiente web mais seguro, nós devemos mudar o nível de permissão dos diretórios e arquivos.

Porém, antes de sairmos alterando algo, devemos compreender quais são as permissões e como elas são representadas.

Desvendando as permissões no Linux

Existem dois modos de nós gerenciarmos as permissões. Em um deles, chamado de modo simbólico ou UGO (User, Group, Others), utilizamos os símbolos (+) ou (-) para adicionarmos ou removermos permissão e as letras (U),(G) e (O) e no outro modo utilizamos alguns números, no que é conhecido como modo octal.

Nas distribuições Linux, as permissões são distribuídas nestes três grupos: O criador do arquivo é classificado como o usuário dono do arquivo, o grupo dono do arquivo, que pode ter um ou mais usuários e por último, a propriedade outros usuários, que concede permissão aos usuários que não se enquadram nas duas primeiras classificações.

E em cada um destes grupos podemos ter permissão de escrita (identificada pela letra w, write), execução (x, execute) e leitura (representada pela letra r, read).

O que cada tipo de permissão chmod concede

Leitura (r): Concede ao usuário apenas visualizar o conteúdo que estiver em um diretório.

Escrita (w): Permite ao usuário alterar o conteúdo presente em diretórios e arquivos.

Execução (x): É o que nos permite acessar diretórios e executar comandos via terminal. O comando chmod +x permite executar arquivos no Linux. Além disso, é também o tipo de permissão que permite aos navegadores carregarem o conteúdo gráfico (design e layout) de um site hospedado no servidor.

Certo, agora que conhecemos as permissões e o que cada uma faz, precisamos um modo de descobrir quais estão em uso em um arquivo.

Permissões em arquivos e em diretórios: a diferença

Um detalhe que causa muita confusão: r, w e x significam coisas diferentes dependendo de estarem em um arquivo ou em um diretório.

Permissão Em um arquivo Em um diretório
r (leitura)Ver o conteúdo do arquivoListar os arquivos (ls)
w (escrita)Alterar o conteúdoCriar, apagar ou renomear arquivos dentro
x (execução)Executar como programaEntrar na pasta (cd) e acessar seu conteúdo

É por isso que o erro mais comum é definir uma pasta como 644 (sem o x) achando que basta a leitura: sem a permissão de execução, ninguém consegue entrar no diretório, e o site retorna erro. Pastas quase sempre precisam de 755, e arquivos, de 644.

Você já deve ter reparado que arquivos novos costumam nascer com 644 e pastas com 755, sem você definir nada. Isso é obra do umask, uma configuração do sistema que determina as permissões padrão de tudo que é criado. O chmod serve para alterar permissões depois; o umask define o ponto de partida.

Descobrindo quais permissões estão em uso

Para descobrirmos as permissões de um conteúdo, antes de tudo precisamos ir ao local em que o conteúdo está.

Então, com a ajuda do comando cd nós iremos navegar até o caminho em que está o arquivo.

cd /var/www/html/

Saída:

comando cd

Para que os arquivos sejam listados com suas respectivas permissões, é preciso indicar ao ls que a listagem precisa ser de forma longa, para isso, acrescenta-se o parâmetro (-l) ao comando.

ls -l

Saída:

comando ls -l pra ver as permissoes

Dessa forma, conseguimos obter informações adicionais. Mas, como o foco aqui é sobre permissões, iremos nos atentar somente à primeira coluna.

Divisão das permissões com chmod no Linux

Distribuída em dez caracteres, a primeira coluna sempre começa com um (-) indicando que o objeto é um arquivo ou diretório (d) e até mesmo link simbólico (l).

Os demais caracteres são divididos respectivamente entre as permissões do usuário proprietário, grupo proprietário e por fim, outros usuários.

-rwxr-xr-x Tipo – arquivo d pasta Dono rwx tudo (7) Grupo r-x ler + exec (5) Outros r-x ler + exec (5) Em octal: 755 r = leitura (4)  •  w = escrita (2)  •  x = execução (1) Cada grupo de 3 caracteres = permissões de dono, grupo e outros

Repare no exemplo acima: o primeiro caractere indica o tipo (- para arquivo, d para diretório, l para link simbólico). Os nove seguintes formam três grupos de três — as permissões do dono, do grupo e dos outros usuários, nessa ordem. Cada grupo mostra r (leitura), w (escrita) e x (execução), ou um - quando a permissão não existe.

divisao das permissoes em linux, para chmod

Quando não há um nível de permissão definido, o caractere representativo é o (-). Do contrário, é exibida a letra que corresponde à permissão.

Diante disso, já é possível dizermos quais são as permissões do exemplo acima. Começando pelo usuário proprietário, ele possui permissão total setadas (rwx), já o grupo proprietário possui poder de leitura e escrita (r-w), por fim, outros usuários estão com poder de leitura (r).

Como alterar as permissões no Linux usando chmod

Para que qualquer usuário possa visualizar todos os elementos do site é preciso que as permissões de diretórios e arquivos sejam organizadas.

Para tanto, utilizamos a ferramenta chamada chmod no Linux, pois, desejamos que propriedade outros usuários passem a ter permissão de leitura (r) na raiz do site.

Sendo assim, no terminal do Linux executamos o seguinte comando:

sudo chmod o=r site/

Saída:

comando chmod o=r site

Agora, listando o conteúdo através do comando ls -l veremos que ocorreram mudanças na organização das permissões.

Saída:

ls -l , com as permissoes marcadas

Enfim, permissão aplicada!  Mas, haverá ainda uma surpresa se a página for aberta via navegador, com certeza irá nos retornar o aviso de Forbidden.

Como nós vinculamos a permissão para leitura ao grupo outros usuários, somente ela não é suficiente para que a página carregue por completo.

É preciso que também haja permissão de execução (x).

Se anteriormente nós já alteramos a permissão para leitura na propriedade outros, agora, basta permitir a execução com a seguinte sintaxe:

sudo chmod o+x site/

Saída:

chmod o+x

Se formos acessar o site mais uma vez pelo navegador, com certeza haverá o carregamento da página.

navegador

A página carregou, porém, ainda está faltando algo em seu design. As imagens não carregaram, vamos analisar o porquê.

Nós precisaremos verificar se o conteúdo possui permissão suficiente para que seja carregado no navegador.

Então, vamos listar de forma detalhada o conteúdo que está dentro do diretório /site. Para isso, iremos utilizar o já conhecido ls -l:

ls -l site/

Saída:

ls -l

Como podemos observar, o conteúdo tem apenas concepção de leitura na propriedade outros usuários. Como vimos antes, essa permissão é insuficiente para carregar tudo o que precisamos no navegador.

Para solucionarmos o cenário, vamos mudar a permissão do conteúdo, acrescentando o poder de executar para eles.

Recursividade no chmod

Como agora temos subdiretórios e outros arquivos dentro do diretório /site, o jeito mais rápido e fácil para ajustar a permissão é utilizar o comando chmod juntamente com um parâmetro auxiliar.

Neste caso, o parâmetro mais adequado é o -R (Recursive). Este parâmetro faz uma “checagem” geral do que está em /site e aplica a permissão desejada em subdiretórios e arquivos contidos dentro do diretório em questão.

sudo chmod -R o=rx site/

Saída:

chmod -R recursivo

Então, com o auxílio do ls, vamos validar se a alteração de fato aconteceu:

Saída:

ls -l para ver as permissoes

Agora, vamos confirmar se o site está carregando com todo seu conteúdo, via navegador:

navegador

finalmente! O site está acessível com todo seu conteúdo.

Até aqui alteramos as permissões do conteúdo somente na propriedade outros usuários (o).

Mas, o que eu faço se eu precisar alterar as permissões para o proprietário e o grupo proprietário dos arquivos?

O cuidado com o -R em sites: o -R aplica o mesmo valor a tudo — e isso costuma ser um problema, porque arquivos e pastas precisam de permissões diferentes (pastas 755, arquivos 644). Aplicar chmod -R 755 num site daria execução a todos os arquivos, o que não é desejado. A forma correta de ajustar um site inteiro de uma vez é usar o find, separando pastas de arquivos:

# Todas as pastas para 755 find /var/www/html -type d -exec chmod 755 {} \; # Todos os arquivos para 644 find /var/www/html -type f -exec chmod 644 {} \;

Como alterar as permissões para usuário e grupo dono com chmod

Dando início ao exercício prático, nós iremos criar um arquivo qualquer em um lugar qualquer no Linux.

sudo vim exemplo.txt

Saída:

ls -l

Se nós executarmos o comando ls -l, veremos que este arquivo possui permissões que já foram definidas quando nós o criamos.

Agora, nós precisamos indicar ao chmod que inclua permissão de execução para o usuário dono do arquivo, aqui representado pela letra (u), além da permissão de leitura que ele já tem.

Então, nós podemos dizer ao chmod que para o usuário dono (u), seja adicionada (+) a permissão de execução (x) ao arquivo exemplo.txt

sudo chmod u+x exemplo.txt

Saída:

chmod u+x

E se caso nós quisermos remover a alguma permissão específica, como faremos?

Neste exemplo, com chmod vamos remover a permissão de escrita do grupo dono, representado pela letra (g), com a seguinte sintaxe:

sudo chmod g-w exemplo.txt

Saída:

ls

Acima, rodando o ls -l vemos a saída de como a permissão estava antes e a saída de como a permissão ficou após removermos a permissão de escrita do grupo dono.

E como nós podemos fazer se quisermos alterar a permissão para o usuário dono, grupo dono e outros em apenas um comando, como faremos?

Para exercitar essa resposta, vamos retirar a permissão de escrita do usuário dono do arquivo (u-w), adicionar a permissão de escrita e execução para o grupo dono (g+wx) e para os demais usuários teremos somente execução (o=x):

sudo chmod u-w,g+wx,o=x exemplo.txt

Saída:

comando ls

Perfeito! Em apenas uma linha de comando, alteramos todas as permissões que precisávamos.

Apesar de ser bem intuitivo, este modo de alteração nos faz digitar vários caracteres para mudarmos tudo que queremos.

Porém, há um jeito um pouco diferente de fazermos a mesma coisa.

Neste caso, estamos falando do modo octal, em que se faz uso de alguns números para alterarmos as permissões.

CHMOD 755, 777 e outras opções no modo octal

A tabela de permissões do chmod (referência rápida)

No modo octal, cada permissão vira um número: leitura (r) vale 4, escrita (w) vale 2 e execução (x) vale 1. Somando esses valores para cada grupo (dono, grupo, outros), chega-se ao número de cada dígito:

Número Permissões Significado
7rwxler + escrever + executar (4+2+1)
6rw-ler + escrever (4+2)
5r-xler + executar (4+1)
4r–apenas ler (4)
0nenhuma permissão

Juntando os três dígitos, temos as permissões mais usadas no dia a dia:

chmod Simbólico Quando usar
644rw-r–r–Arquivos de sites (HTML, imagens, config)
755rwxr-xr-xPastas e scripts executáveis
700rwx——Pastas privadas (só o dono acessa)
600rw——-Arquivos sensíveis, chaves SSH privadas
400r——–Somente leitura pelo dono (chaves)
777rwxrwxrwxAcesso total — evite (veja o aviso abaixo)

Cada um desses valores tem seus usos, vantagens e riscos. Explicamos todos em detalhe no artigo dedicado: chmod 755, 777 e outras opções no modo octal.

⚠️
Cuidado com o chmod 777

O 777 libera leitura, escrita e execução para qualquer usuário — o que é um risco de segurança sério. Quase nunca é a solução correta: se um tutorial manda usar 777 para resolver um erro, quase sempre há uma permissão mais segura (como 755 ou 644) que resolve. Use 777 apenas em casos muito específicos e controlados.

No chmod, o modo octal possui este nome devido a fazer uso de caracteres numéricos entre 0 e 7. O uso de octais é comum a usuários avançados. Trata-se de um modo mais avançado, normalmente usado em servidores VPS.

Neste outro artigo, explicamos em detalhes como configurar permissões em modo octal: chmod 755, 777 e outras opções no modo octal.

Permissões recomendadas para sites e servidores

Na prática de quem administra um site ou servidor, algumas permissões são quase padrão. Veja as mais usadas:

Arquivos e pastas de um site:

# Pastas do site: 755 (o servidor precisa "entrar" nelas) chmod 755 /var/www/html # Arquivos do site: 644 (leitura pelo servidor, sem execução) chmod 644 /var/www/html/index.html

Chaves e acessos SSH (o SSH é rigoroso: se a permissão estiver errada, ele recusa a chave):

chmod 700 ~/.ssh # a pasta .ssh chmod 600 ~/.ssh/id_rsa # a chave privada chmod 644 ~/.ssh/id_rsa.pub # a chave publica

Arquivos com segredos (senhas, variáveis de ambiente, tokens de API) devem ficar em 600 — só o dono lê e escreve, ninguém mais acessa. Para trabalhar com permissões via terminal em um servidor, você vai precisar de acesso SSH.

Outras opções disponíveis no comando chmod

Parâmetro -c (changes)

Ele é semelhante ao parâmetro -v, ou seja, o parâmetro -c serve para retornar o resultado apenas quando a mudança é feita.

Exemplo:

sudo chmod -c 755 exemplo.txt

Saída:

chmod 755 arquivo

Parâmetro -v (verbose)

Exibe um diagnóstico de saída para cada arquivo processado após cada permissão aplicada.

Exemplo:

Rodar a mesma permissão para todo o conteúdo que existir em um diretório:

sudo chmod -v 644 *

Saída:

chmod 644 -v

Parâmetro ‘-f’ (silent)

Quando utilizado, este parâmetro é responsável por eliminar grande parte das mensagens de erro que possam ocorrer.

Por exemplo, quando o usuário administrador não possui privilégios para modificar permissões, ao usar o parâmetro -f o aviso de falta de poder para executar a operação não irá aparecer na tela.

Portanto, precisamos ter cautela ao conceder permissões aos usuários que não pertencem ao grupo dono, ou aos que não são donos dos arquivos e diretórios. Pois, conforme for a permissão que configurarmos, os usuários indesejados conseguirão obter acesso ao conteúdo do sistema. Conseguindo, além de visualizar, também alterar e até mesmo excluí-los.

Permissões especiais: SUID, SGID e Sticky bit

Além dos três dígitos comuns, o chmod aceita um quarto dígito (à esquerda), que ativa permissões especiais. São recursos avançados, mas importantes de conhecer:

  • SUID (valor 4) — quando aplicado a um executável, faz o programa rodar com os privilégios do dono do arquivo, e não de quem o executou. O exemplo clássico é o comando passwd, que precisa de privilégios de root para alterar senhas. Ex.: chmod 4755 arquivo.
  • SGID (valor 2) — semelhante ao SUID, mas para o grupo. Em diretórios, faz com que arquivos criados ali herdem o grupo da pasta — útil em pastas compartilhadas por uma equipe. Ex.: chmod 2755 pasta.
  • Sticky bit (valor 1) — aplicado a diretórios, impede que um usuário apague arquivos de outros, mesmo tendo permissão de escrita na pasta. É o que protege a pasta /tmp, compartilhada por todos. Ex.: chmod 1777 /tmp.

Na listagem do ls -l, esses bits aparecem no lugar do x: um s indica SUID/SGID, e um t indica o sticky bit. Para a maioria dos sites e usuários, os três dígitos comuns bastam — mas conhecer os especiais ajuda a entender configurações de servidor mais avançadas.

Perguntas frequentes

O que é o comando chmod?
O chmod (change mode) é o comando do Linux usado para alterar as permissões de arquivos e diretórios — ou seja, definir quem pode ler, escrever ou executar cada um. As permissões se dividem entre três grupos: o dono, o grupo e os outros usuários.

O que significa chmod 755?
Significa dar ao dono permissão total (leitura, escrita e execução = 7) e ao grupo e aos outros usuários apenas leitura e execução (5). É a permissão mais usada para pastas e scripts em servidores de sites.

O que significa chmod 644?
Dá ao dono leitura e escrita (6) e aos demais apenas leitura (4). É a permissão padrão para arquivos comuns de um site, como HTML, imagens e arquivos de configuração.

Chmod 777 é perigoso?
Sim. O 777 libera leitura, escrita e execução para qualquer usuário, o que representa um risco de segurança sério. Só deve ser usado em casos muito específicos e controlados — na maioria das vezes, 755 ou 644 resolvem com segurança.

Qual a diferença entre o modo simbólico e o octal?
No modo simbólico, você usa letras e sinais (como u+x para adicionar execução ao dono). No modo octal, usa números (como 755). Os dois fazem a mesma coisa: o simbólico é melhor para alterar uma permissão específica; o octal, para definir tudo de uma vez.

Como vejo as permissões atuais de um arquivo?
Use o comando ls -l. A primeira coluna mostra as permissões no formato de dez caracteres (como -rwxr-xr-x): o primeiro indica o tipo e os nove seguintes, as permissões de dono, grupo e outros.

Precisa de acesso total ao seu servidor?

Gerenciar permissões via terminal exige acesso root — algo que só um VPS ou servidor Cloud oferece. Com os servidores VPS da Homehost, você tem controle completo do ambiente, com infraestrutura robusta e suporte em português.

Conhecer os servidores VPS

Conclusão

Em suma, agora que você conhece um pouco mais sobre permissões e a importância para a segurança do ambiente, com certeza está mais preparado e confiante para deixar suas aplicações com as devidas permissões. O comando chmod é similar ao comando chown, que serve para alterar o dono de um arquivo ou pasta.

Este artigo foi útil?

Obrigado pela resposta!
Picture of Marcio S

Marcio S

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!