Como Verificar Permissões de Arquivo no Linux: Um Guia Completo
Linux alimenta a maioria dos servidores do mundo — desde ambientes de VPS Hosting até Servidores Dedicados de nível empresarial — e com razão. É rápido, estável e construído com segurança no seu núcleo. Um dos pilares mais fundamentais dessa segurança é o sistema de permissões de ficheiros: um mecanismo preciso e elegante que controla exatamente quem pode ler, modificar ou executar qualquer ficheiro ou diretório no sistema.
Quer seja um programador a implementar uma aplicação web, um administrador de sistemas a reforçar um servidor, ou um iniciante a aprender a linha de comandos, compreender como verificar e interpretar permissões de ficheiros em Linux é uma competência inegociável. Este guia cobre tudo o que precisa de saber — desde o básico do modelo de permissões até aos bits especiais avançados — com comandos práticos e exemplos do mundo real.
O Que São Permissões de Ficheiros Linux?
Cada ficheiro e diretório em Linux tem um conjunto de permissões anexado. Estas permissões definem quais ações são permitidas e por quem. Existem três tipos de permissão principais:
| Permissão | Símbolo | O Que Faz num Ficheiro | O Que Faz num Diretório |
|---|---|---|---|
| Leitura | r | Ver o conteúdo do ficheiro | Listar os nomes dos ficheiros dentro |
| Escrita | w | Modificar ou eliminar o ficheiro | Criar ou remover ficheiros dentro |
| Execução | x | Executar o ficheiro como um programa | Entrar (navegar para) o diretório |
Estas três permissões são aplicadas independentemente a três categorias de utilizadores distintas:
- Proprietário (utilizador) — O utilizador que é proprietário do ficheiro, normalmente o seu criador.
- Grupo — Qualquer utilizador que pertença ao grupo atribuído do ficheiro.
- Outros — Todos os outros no sistema.
Esta matriz de permissões três-por-três dá aos administradores Linux controlo granular e poderoso sobre o acesso a cada recurso no sistema.
Como Verificar Permissões de Ficheiros: O Comando ls -l
O método mais rápido e mais comumente utilizado para verificar permissões de ficheiros é o comando ls -l (formato de listagem longa).
ls -l file.txtExemplo de saída:
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 file.txtVamos decompor cada componente desta saída:
- rw- r-- r-- 1 alice developers 1024 Aug 16 12:30 file.txt
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ └─ Filename
│ │ │ │ │ │ │ │ └─ Last modified
│ │ │ │ │ │ │ └─ File size (bytes)
│ │ │ │ │ │ └─ Group name
│ │ │ │ │ └─ Owner name
│ │ │ │ └─ Number of hard links
│ │ │ └─ Others' permissions
│ │ └─ Group's permissions
│ └─ Owner's permissions
└─ File type (- = regular file, d = directory, l = symlink)Portanto -rw-r--r-- diz-nos:
- Proprietário (
alice): Leitura + Escrita (rw-) - Grupo (
developers): Apenas leitura (r--) - Outros: Apenas leitura (
r--)
Verificar Permissões para Múltiplos Ficheiros
Para ver permissões de todos os ficheiros num diretório de uma vez:
ls -la /var/www/htmlA flag -a inclui ficheiros ocultos (aqueles que começam com um ponto). Isto é especialmente útil ao auditar diretórios de servidores web num ambiente de Alojamento Web Partilhado ou VPS.
Obter Informações Detalhadas de Permissões com stat
Para uma análise mais completa — incluindo representações simbólicas e numéricas — use o comando stat:
stat file.txtExemplo de saída:
File: file.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 131073 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)
Access: 2024-08-16 12:30:00.000000000 +0000
Modify: 2024-08-16 12:30:00.000000000 +0000
Change: 2024-08-16 12:30:00.000000000 +0000A linha-chave é:
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)Isto dá-lhe:
- Notação numérica (octal):
0644 - Notação simbólica:
-rw-r--r-- - ID de Utilizador (UID) e ID de Grupo (GID) com os seus nomes legíveis
O comando stat é inestimável ao resolver erros de permissões em servidores de produção, pois fornece todo o contexto necessário numa única saída.
Compreender a Notação de Permissão Numérica (Octal)
As permissões do Linux podem ser expressas como números, que é o formato utilizado por comandos como chmod. Cada tipo de permissão é atribuído um valor:
| Permissão | Valor Numérico |
|---|---|
Leitura (r) | 4 |
Escrita (w) | 2 |
Execução (x) | 1 |
Sem permissão (-) | 0 |
Você calcula o valor de permissão para cada categoria de utilizador adicionando os valores em conjunto:
| Combinação | Cálculo | Valor Numérico |
|---|---|---|
rwx | 4 + 2 + 1 | 7 |
rw- | 4 + 2 + 0 | 6 |
r-x | 4 + 0 + 1 | 5 |
r-- | 4 + 0 + 0 | 4 |
--- | 0 + 0 + 0 | 0 |
Um número octal de três dígitos representa o conjunto completo de permissões:
0644 → Owner: 6 (rw-) | Group: 4 (r--) | Others: 4 (r--)
0755 → Owner: 7 (rwx) | Group: 5 (r-x) | Others: 5 (r-x)
0700 → Owner: 7 (rwx) | Group: 0 (---) | Others: 0 (---)Verificando Permissões em Diretórios
Diretórios usam o mesmo modelo de permissão, mas o significado de cada bit é ligeiramente diferente. Use ls -ld (note a flag -d) para inspecionar um diretório em si em vez de seu conteúdo:
ls -ld myfolderExemplo de saída:
drwxr-x--- 2 alice developers 4096 Aug 16 12:30 myfolderO d inicial confirma que se trata de um diretório. As permissões se dividem em:
- Proprietário (
alice):rwx— Pode listar, criar/deletar arquivos e entrar no diretório - Grupo (
developers):r-x— Pode listar arquivos e entrar, mas não pode criar ou deletar - Outros:
---— Sem acesso algum
> Importante: O bit de execução (x) em um diretório significa a capacidade de entrar nele (ou seja, usar cd). Sem x, um utilizador não pode navegar para o diretório mesmo que tenha permissão de leitura. Esta é uma fonte comum de confusão para principiantes.
Bits de Permissão Especiais: setuid, setgid e Sticky Bit
Além dos nove bits de permissão padrão, Linux suporta três bits de permissão especiais que fornecem controle de acesso avançado:
1. setuid (s no bit de execução do proprietário)
Quando definido em um arquivo executável, o programa é executado com os privilégios do proprietário do arquivo em vez dos do utilizador que o chama. É assim que comandos como passwd permitem que utilizadores regulares modifiquem /etc/shadow (que é propriedade do root).
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Mar 27 2023 /usr/bin/passwdO s na posição de execução do proprietário indica setuid.
2. setgid (s no bit de execução do grupo)
Em um arquivo, o programa é executado com os privilégios do grupo. Em um diretório, novos arquivos criados dentro herdam automaticamente o grupo do diretório — útil para pastas de projetos partilhadas.
ls -ld /shared/project
drwxrwsr-x 2 alice developers 4096 Aug 16 12:30 /shared/project3. Sticky Bit (t no bit de execução de outros)
Quando definido em um diretório, apenas o proprietário do arquivo (ou root) pode eliminar ou renomear arquivos dentro dele, mesmo que outros tenham permissão de escrita. Esta é a configuração padrão para /tmp:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpO t no final indica que o sticky bit está ativo.
Representação numérica dos bits especiais:
| Bit Especial | Valor Numérico |
|---|---|
| setuid | 4000 |
| setgid | 2000 |
| Sticky bit | 1000 |
Portanto drwxrwxrwt = 1777 (1000 + 777).
Tabela de Referência Completa de Permissões
| Simbólico | Numérico | Significado num Ficheiro | Significado num Diretório |
|---|---|---|---|
--- | 0 | Sem acesso | Sem acesso |
--x | 1 | Apenas executar | Apenas entrar |
-w- | 2 | Apenas escrever | Modificar conteúdos (com x) |
-wx | 3 | Escrever + Executar | Entrar e modificar |
r-- | 4 | Apenas ler | Listar nomes (requer x para ser útil) |
r-x | 5 | Ler + Executar | Listar e entrar |
rw- | 6 | Ler + Escrever | Listar e modificar (sem entrar) |
rwx | 7 | Acesso completo | Controlo total |
Exemplos de Permissões no Mundo Real
Aqui estão os padrões de permissão mais comuns que você encontrará na prática:
-rw-r--r-- (0644) — Arquivo Padrão
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 config.txtO proprietário pode ler e escrever. Grupo e outros podem apenas ler. Típico para arquivos de configuração e conteúdo web.
-rwxr-xr-x (0755) — Script Executável ou Binário
-rwxr-xr-x 1 alice developers 4096 Aug 16 12:30 deploy.shO proprietário tem acesso total. Todos os outros podem ler e executar, mas não podem modificar. Padrão para scripts shell, binários de servidor web e executáveis públicos.
-rw------- (0600) — Arquivo Privado
-rw------- 1 alice alice 1679 Aug 16 12:30 id_rsaApenas o proprietário pode ler ou escrever. Sem acesso para ninguém mais. Obrigatório para chaves privadas SSH — SSH recusará usar um arquivo de chave com permissões mais amplas.
drwxr-xr-x (0755) — Diretório Público Padrão
drwxr-xr-x 5 alice developers 4096 Aug 16 12:30 public_htmlComum para diretórios raiz da web. O proprietário tem controle total; outros podem navegar e entrar.
drwx------ (0700) — Diretório Privado
drwx------ 3 alice alice 4096 Aug 16 12:30 .sshCompletamente privado. Apenas o proprietário pode acessar. Obrigatório para o diretório ~/.ssh.
drwxrwxrwt (1777) — Gravável por Todos com Sticky Bit
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpTodos podem criar arquivos, mas apenas o proprietário de cada arquivo pode deletar seus próprios arquivos.
Dicas Práticas para Ambientes de Servidor
Se você gerencia um servidor Linux — seja um VPS executando uma aplicação web, um servidor de correio protegido com um SSL Certificate, ou uma máquina hospedando múltiplos domínios registrados através de Domain Registration — aqui estão algumas práticas essenciais de permissões:
- Nunca defina 777 em arquivos ou diretórios a menos que você tenha uma razão muito específica e temporária. Arquivos graváveis por todos são um risco de segurança importante.
- Arquivos do servidor web (por exemplo, sob
/var/www/) devem ser tipicamente644para arquivos e755para diretórios, pertencentes ao seu usuário de aplicação. - Chaves SSH devem ser
600para chaves privadas e644para chaves públicas. SSH impõe isso rigorosamente. - Arquivos de configuração contendo senhas ou chaves API devem ser
600ou640no máximo. - Use
findpara auditar permissões em uma árvore de diretórios:
# Find all world-writable files (potential security risk)
find /var/www -type f -perm -o+w
# Find all SUID files (for security auditing)
find / -type f -perm -4000 2>/dev/nullReferência Rápida de Comandos
| Tarefa | Comando |
|---|---|
| Listar permissões de um ficheiro | ls -l filename |
| Listar permissões de todos os ficheiros num diretório | ls -la /path/to/dir |
| Verificar permissões do próprio diretório | ls -ld /path/to/dir |
| Obter detalhes completos incluindo permissões numéricas | stat filename |
| Alterar permissões (simbólico) | chmod u+x filename |
| Alterar permissões (numérico) | chmod 755 filename |
| Alterar proprietário do ficheiro | chown user:group filename |
| Alterar permissões recursivamente | chmod -R 755 /path/to/dir |
| Encontrar ficheiros com permissões de escrita universal | find . -perm -o+w -type f |
Conclusão
Compreender as permissões de ficheiros Linux não é apenas um exercício académico — é uma habilidade prática e diária para qualquer pessoa que gira servidores, implementa aplicações ou trabalha num ambiente Linux. Para resumir os pontos-chave:
- Use
ls -lpara uma visão geral rápida e legível das permissões em ficheiros e diretórios. - Use
statquando precisar tanto de representações simbólicas como numéricas, juntamente com detalhes de propriedade. - Domine ambas as notações — simbólica (
rwx) e numérica (755,644) — pois diferentes ferramentas e documentação usam ambas de forma intercambiável. - Lembre-se da diferença de diretório: o bit de execução (
x) num diretório significa a capacidade de entrar nele, não de o executar. - Esteja ciente dos bits especiais — setuid, setgid e sticky bit — pois aparecem frequentemente em sistemas de produção e têm implicações significativas de segurança.
A gestão adequada de permissões é uma pedra angular da segurança Linux. Quer esteja a executar um projeto pessoal em VPS Hosting ou a administrar uma frota de Servidores Dedicados, acertar nas permissões desde o início irá poupá-lo de vulnerabilidades de segurança, aplicações danificadas e inúmeras horas de resolução de problemas no futuro.
em todos os serviços de alojamento