Compreendendo Permissões de Arquivo Linux e Como Gerenciá-las
As permissões de ficheiros Linux são um dos aspectos mais fundamentais — e mais mal compreendidos — da administração de sistemas. Quer esteja a gerir um servidor web de produção, a implementar aplicações ou a escrever scripts de automação, uma compreensão sólida do modelo de permissões Linux é inegociável. Se errar, corre o risco de violações de dados, implementações quebradas ou serviços bloqueados. Se acertar, tem um framework de segurança poderoso e granular a trabalhar a seu favor.
Este guia cobre tudo o que precisa de saber: como funciona o modelo de permissões, como ler e modificar permissões, como gerir a propriedade e como lidar com bits de permissão avançados como SUID, SGID e o sticky bit.
O Modelo de Permissões de Ficheiros Linux Explicado
Cada ficheiro e diretório num sistema Linux tem um conjunto de direitos de acesso atribuídos. Estes direitos são divididos entre três classes de utilizador e três tipos de permissão.
As Três Classes de Utilizador
| Classe | Descrição |
|---|---|
| proprietário | O utilizador que é proprietário do ficheiro |
| grupo | Todos os utilizadores pertencentes ao grupo atribuído do ficheiro |
| outros | Todos os outros no sistema |
Os Três Tipos de Permissão
| Permissão | Símbolo | Significado |
|---|---|---|
| leitura | r | Ver conteúdo do ficheiro ou listar conteúdo do diretório |
| escrita | w | Modificar um ficheiro ou diretório |
| execução | x | Executar um ficheiro como um programa, ou entrar/atravessar um diretório |
Em conjunto, estes nove bits (três classes × três permissões) definem o perfil completo de controlo de acesso para cada objeto no sistema de ficheiros.
Como Ver Permissões de Ficheiro com ls -l
A forma mais rápida de inspecionar permissões é com o comando ls -l:
ls -l myscript.shExemplo de saída:
-rwxr-xr-- 1 alice devs 2048 Jan 25 10:00 myscript.shEis como ler a cadeia de permissões carácter por carácter:
| Caracteres | Significado |
|---|---|
- | Tipo de ficheiro (- = ficheiro regular, d = directório, l = ligação simbólica) |
rwx | Permissões do Proprietário: leitura, escrita, execução |
r-x | Permissões do Grupo: leitura, execução (sem escrita) |
r-- | Permissões de Outros: apenas leitura |
Portanto, neste exemplo, alice (o proprietário) tem acesso total, membros do grupo devs podem ler e executar o ficheiro, e todos os outros podem apenas lê-lo.
Alterando Permissões com chmod
O comando chmod modifica permissões de ficheiros. Suporta dois modos: simbólico e numérico (octal).
Modo Simbólico
O modo simbólico usa letras e operadores para adicionar (+), remover (-), ou definir (=) permissões:
chmod u+x myscript.sh # Add execute permission for the owner
chmod g-w myscript.sh # Remove write permission from the group
chmod o=r myscript.sh # Set read-only for others (exactly)
chmod a+x myscript.sh # Add execute for all (owner, group, others)As classes de destino são: u (utilizador/proprietário), g (grupo), o (outros), a (todos).
Modo Numérico (Octal)
Cada tipo de permissão tem um valor numérico: r = 4, w = 2, x = 1. Adiciona-os em conjunto para obter um único dígito por classe.
| Octal | Binário | Permissões |
|---|---|---|
7 | 111 | rwx |
6 | 110 | rw- |
5 | 101 | r-x |
4 | 100 | r-- |
0 | 000 | --- |
Exemplos comuns:
chmod 755 myscript.sh # Owner: rwx | Group: r-x | Others: r-x
chmod 644 file.txt # Owner: rw- | Group: r-- | Others: r--
chmod 700 script.sh # Owner: rwx | Group: --- | Others: ---
chmod 600 secret.key # Owner: rw- | Group: --- | Others: ---> Referência rápida: 755 é o padrão para scripts e diretórios públicos. 644 é o padrão para ficheiros de configuração legíveis. 600 é ideal para chaves privadas e credenciais sensíveis.
Gerir a Propriedade com chown e chgrp
As permissões só fazem sentido no contexto da propriedade. Os comandos chown e chgrp permitem-lhe atribuir ficheiros ao utilizador e grupo corretos.
Alterar o Proprietário do Ficheiro
chown alice file.txtAlterar o Grupo
chgrp devs file.txtAlterar Proprietário e Grupo Simultaneamente
chown bob:admins file.txtAplicar Alterações Recursivamente
A flag -R aplica alterações de propriedade a um diretório e a todo o seu conteúdo — essencial ao configurar raízes de documentos do servidor web:
chown -R www-data:www-data /var/www/html/Este é um passo crítico ao implementar aplicações web num ambiente de VPS Hosting, garantindo que o processo do seu servidor web tem o acesso correto para servir ficheiros.
Bits de Permissão Especiais: SUID, SGID e Sticky Bit
Além dos nove bits de permissão padrão, Linux suporta três modos especiais que modificam o comportamento padrão de formas importantes.
1. SUID — Set User ID
Aplica-se a: Ficheiros executáveis
Quando o bit SUID está definido num executável, ele é executado com os privilégios do proprietário do ficheiro, não do utilizador que o iniciou.
chmod u+s /usr/bin/passwdls -l output:
-rwsr-xr-x 1 root root 54256 Jan 10 08:00 /usr/bin/passwdRepare no s no lugar do x do proprietário. É assim que /usr/bin/passwd pode atualizar /etc/shadow (um ficheiro propriedade de root) mesmo quando executado por um utilizador regular.
> Nota de segurança: Tenha muito cuidado ao definir SUID em scripts personalizados. Um binário SUID mal configurado é um vetor clássico de escalação de privilégios.
2. SGID — Set Group ID
Aplica-se a: Ficheiros executáveis e diretórios
- Em ficheiros: O ficheiro é executado com os privilégios de grupo do proprietário do grupo do ficheiro.
- Em diretórios: Novos ficheiros criados dentro do diretório herdam automaticamente o grupo do diretório, em vez do grupo primário do utilizador que os criou.
chmod g+s /opt/projectls -l output:
drwxr-sr-x 2 alice devs 4096 Jan 25 10:00 /opt/projectSGID em diretórios é extremamente útil para pastas de desenvolvimento partilhadas onde múltiplos membros da equipa precisam de propriedade de grupo consistente em todos os novos ficheiros.
3. Sticky Bit
Aplica-se a: Diretórios
Quando o sticky bit está definido num diretório, apenas o proprietário do ficheiro (ou root) pode eliminar ou renomear esse ficheiro — mesmo que outros utilizadores tenham permissão de escrita no diretório.
chmod +t /shared/folderls -ld output para /tmp:
drwxrwxrwt 10 root root 4096 Jan 28 12:00 /tmpO t no final indica que o sticky bit está ativo. É por isso que /tmp é gravável por todos, mas os utilizadores não conseguem eliminar os ficheiros temporários uns dos outros.
Compreender umask — Controlo de Permissões Padrão
Quando um novo ficheiro ou diretório é criado, Linux não lhe atribui permissões máximas. Em vez disso, aplica uma umask (máscara de criação de ficheiros do utilizador) que subtrai permissões do padrão.
Verificar a Sua umask Atual
umaskSaída comum: 0022
Como a umask Funciona
| Objeto | Máximo Padrão | Com umask `0022` | Resultado |
|---|---|---|---|
| Ficheiro | 666 (rw-rw-rw-) | 666 - 022 | 644 (rw-r–r–) |
| Diretório | 777 (rwxrwxrwx) | 777 - 022 | 755 (rwxr-xr-x) |
> Nota: Linux nunca define o bit de execução em ficheiros recém-criados por padrão, independentemente da umask.
Definir uma umask Temporária
umask 0077 # New files: 600 (rw-------), New dirs: 700 (rwx------)Isto é útil em scripts que criam ficheiros temporários sensíveis. Para uma alteração permanente, adicione o comando umask ao ficheiro de perfil da sua shell (por exemplo, ~/.bashrc ou /etc/profile).
Correções de Permissões Recursivas
Uma tarefa comum no mundo real é redefinir permissões em todo um diretório de projeto — por exemplo, após uma implantação ruim ou um upload FTP que danificou as permissões. A chave é definir permissões diferentes para diretórios e arquivos, já que diretórios precisam do bit de execução para serem navegáveis.
# Set all directories to 755
find /var/www/myapp -type d -exec chmod 755 {} ;
# Set all files to 644
find /var/www/myapp -type f -exec chmod 644 {} ;Se sua aplicação tem scripts executáveis específicos, corrija-os separadamente depois:
chmod 755 /var/www/myapp/bin/*.shEste padrão é essencial para qualquer pessoa que gerencie ambientes de hospedagem web. Se você está executando aplicações PHP, Python, ou Node.js em um VPS com cPanel, permissões de arquivo incorretas são uma das causas mais comuns de 403 Forbidden erros e falha na execução de scripts.
Referência Prática de Permissões para Cenários Comuns
| Cenário | Permissões Recomendadas | Comando |
|---|---|---|
| Ficheiros web públicos (HTML, CSS, JS) | 644 | chmod 644 index.html |
| Diretórios web | 755 | chmod 755 /var/www/html |
| Scripts PHP/Python | 644 ou 755 | Depende do método de execução |
| Chaves SSH privadas | 600 | chmod 600 ~/.ssh/id_rsa |
Diretório .ssh | 700 | chmod 700 ~/.ssh |
| Diretório de projeto partilhado | 2775 (SGID) | chmod 2775 /opt/project |
| Diretório temporário com escrita global | 1777 (sticky) | chmod 1777 /tmp/shared |
| Ficheiros de configuração com segredos | 600 | chmod 600 .env |
Permissões de Ficheiros Linux e Segurança do Servidor
Compreender permissões de ficheiros não é apenas um exercício académico — tem implicações diretas e práticas para a segurança e estabilidade do servidor.
Erros de segurança comuns a evitar:
- Definir
777em diretórios web. Isto dá a todos acesso de leitura, escrita e execução — uma vulnerabilidade crítica se o seu servidor for comprometido ou se for possível injeção de código PHP. - Deixar ficheiros de configuração legíveis por todos. Ficheiros como
.env,wp-config.phpou credenciais de base de dados devem ser600ou640no máximo. - Ignorar propriedade. Mesmo que as permissões pareçam corretas, se o utilizador errado for proprietário de um ficheiro, o seu servidor web ou daemon de aplicação pode não conseguir lê-lo.
chownrecursivo em diretórios do sistema. Executarchown -Rdescuidadamente em/etcou/usrpode danificar todo o seu sistema.
Se está a executar um ambiente de produção em Dedicated Servers, implementar uma política de permissões rigorosa é um dos primeiros passos de endurecimento que deve tomar após a configuração inicial.
Para equipas que gerem múltiplos sites ou aplicações, VPS Control Panels podem simplificar a gestão de permissões através de gestores de ficheiros gráficos, embora a proficiência em linha de comandos continue a ser essencial para configurações avançadas.
Referência Rápida de Comandos
# View permissions
ls -l filename
ls -ld directory/
# Change permissions (symbolic)
chmod u+x file # Add execute for owner
chmod g-w file # Remove write for group
chmod o=r file # Set read-only for others
chmod a+r file # Add read for all
# Change permissions (numeric)
chmod 755 file # rwxr-xr-x
chmod 644 file # rw-r--r--
chmod 600 file # rw-------
chmod 700 file # rwx------
# Change ownership
chown user file
chgrp group file
chown user:group file
chown -R user:group directory/
# Special bits
chmod u+s file # Set SUID
chmod g+s directory # Set SGID
chmod +t directory # Set sticky bit
# umask
umask # Show current umask
umask 0022 # Set umask for session
# Recursive fixes
find /path -type d -exec chmod 755 {} ;
find /path -type f -exec chmod 644 {} ;Conclusão
As permissões de ficheiros Linux formam a base da segurança do sistema, controlo de acesso multi-utilizador e implementação fiável de aplicações. O modelo é elegante na sua simplicidade — três classes, três tipos de permissão, alguns bits especiais — mas poderoso o suficiente para proteger tudo, desde uma máquina de desenvolvimento pessoal até um servidor de produção de alto tráfego.
Dominar chmod, chown, umask e os bits de permissão especial dá-lhe a confiança para implementar aplicações corretamente, resolver erros de acesso rapidamente e reforçar a segurança dos seus servidores contra acesso não autorizado.
Quer esteja a começar com Alojamento Web Partilhado ou a escalar para um ambiente de Alojamento VPS totalmente gerido, uma compreensão sólida das permissões de ficheiros Linux é uma das competências de maior alavancagem que pode desenvolver como administrador de sistemas ou programador. Invista o tempo para compreendê-la profundamente — os seus servidores (e os seus utilizadores) agradecer-lhe-ão.
em todos os serviços de alojamento