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 que 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)Então -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 problemas de permissões em servidores de produção, pois fornece todo o contexto que precisa numa única saída.
Compreender a Notação de Permissões Numéricas (Octal)
As permissões 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 |
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 de permissões completo:
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 (---)Verificar Permissões em Diretórios
Os diretórios utilizam o mesmo modelo de permissões, mas o significado de cada bit é ligeiramente diferente. Use ls -ld (note a flag -d) para inspecionar um diretório em si em vez do seu conteúdo:
ls -ld myfolderExemplo de saída:
drwxr-x--- 2 alice developers 4096 Aug 16 12:30 myfolderO d inicial confirma que isto é um diretório. As permissões decompõem-se como:
- Proprietário (
alice):rwx— Pode listar, criar/eliminar ficheiros e entrar no diretório - Grupo (
developers):r-x— Pode listar ficheiros e entrar, mas não pode criar ou eliminar - Outros:
---— Sem acesso whatsoever
> Importante: O bit de execução (x) num 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
Para além dos nove bits de permissão padrão, Linux suporta três bits de permissão especiais que fornecem controlo de acesso avançado:
1. setuid (s no bit de execução do proprietário)
Quando definido num ficheiro executável, o programa é executado com os privilégios do proprietário do ficheiro em vez dos do utilizador que chama. É assim que comandos como passwd permitem aos utilizadores normais modificar /etc/shadow (que é propriedade de 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)
Num ficheiro, o programa é executado com os privilégios do grupo. Num diretório, novos ficheiros criados dentro herdam automaticamente o grupo do diretório — útil para pastas de projeto 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 num diretório, apenas o proprietário do ficheiro (ou root) pode eliminar ou renomear ficheiros 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 sinaliza que o sticky bit está ativo.
Representação numérica de bits especiais:
| Bit Especial | Valor Numérico |
|---|---|
| setuid | 4000 |
| setgid | 2000 |
| Sticky bit | 1000 |
Então drwxrwxrwt = 1777 (1000 + 777).
Tabela de Referência de Permissões Completa
| Simbólico | Numérico | Significado num ficheiro | Significado num diretório |
|---|---|---|---|
--- | 0 | Sem acesso | Sem acesso |
--x | 1 | Apenas execução | Apenas entrar |
-w- | 2 | Apenas escrita | Modificar conteúdo (com x) |
-wx | 3 | Escrita + Execução | Entrar e modificar |
r-- | 4 | Apenas leitura | Listar nomes (requer x para ser útil) |
r-x | 5 | Leitura + Execução | Listar e entrar |
rw- | 6 | Leitura + Escrita | Listar e modificar (sem entrar) |
rwx | 7 | Acesso completo | Controlo completo |
Exemplos de Permissões do Mundo Real
Aqui estão os padrões de permissões mais comuns que encontrará na prática:
-rw-r--r-- (0644) — Ficheiro 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 ficheiros 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 completo. 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) — Ficheiro Privado
-rw------- 1 alice alice 1679 Aug 16 12:30 id_rsaApenas o proprietário pode ler ou escrever. Sem acesso para mais ninguém. Obrigatório para chaves privadas SSH — SSH recusará usar um ficheiro 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 de raiz web. O proprietário tem controlo completo; 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 aceder. 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 ficheiros, mas apenas o proprietário de cada ficheiro pode eliminar os seus próprios ficheiros.
Dicas Práticas para Ambientes de Servidor
Se gere um servidor Linux — quer seja um VPS a executar uma aplicação web, um servidor de correio protegido com um Certificado SSL, ou uma máquina alojando múltiplos domínios registados através de Registo de Domínios — aqui estão algumas práticas essenciais de permissões:
- Nunca defina 777 em ficheiros ou diretórios a menos que tenha uma razão muito específica e temporária. Ficheiros graváveis por todos são um risco de segurança major.
- Ficheiros de servidor web (por exemplo, sob
/var/www/) devem tipicamente ser644para ficheiros e755para diretórios, propriedade do seu utilizador de aplicação. - Chaves SSH devem ser
600para chaves privadas e644para chaves públicas. SSH impõe isto estritamente. - Ficheiros de configuração contendo senhas ou chaves API devem ser ###PPT
