Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Linux Servidores Virtuais Sistemas Operativos

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

ClasseDescrição
proprietárioO utilizador que é proprietário do ficheiro
grupoTodos os utilizadores pertencentes ao grupo atribuído do ficheiro
outrosTodos os outros no sistema

Os Três Tipos de Permissão

PermissãoSímboloSignificado
leiturarVer conteúdo do ficheiro ou listar conteúdo do diretório
escritawModificar um ficheiro ou diretório
execuçãoxExecutar 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.sh

Exemplo de saída:

-rwxr-xr-- 1 alice devs 2048 Jan 25 10:00 myscript.sh

Eis como ler a cadeia de permissões carácter por carácter:

CaracteresSignificado
-Tipo de ficheiro (- = ficheiro regular, d = directório, l = ligação simbólica)
rwxPermissões do Proprietário: leitura, escrita, execução
r-xPermissõ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.

OctalBinárioPermissões
7111rwx
6110rw-
5101r-x
4100r--
0000---

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.txt

Alterar o Grupo

chgrp devs file.txt

Alterar Proprietário e Grupo Simultaneamente

chown bob:admins file.txt

Aplicar 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/passwd

ls -l output:

-rwsr-xr-x 1 root root 54256 Jan 10 08:00 /usr/bin/passwd

Repare 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/project

ls -l output:

drwxr-sr-x 2 alice devs 4096 Jan 25 10:00 /opt/project

SGID 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/folder

ls -ld output para /tmp:

drwxrwxrwt 10 root root 4096 Jan 28 12:00 /tmp

O 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

umask

Saída comum: 0022

Como a umask Funciona

ObjetoMáximo PadrãoCom umask `0022`Resultado
Ficheiro666 (rw-rw-rw-)666 - 022644 (rw-r–r–)
Diretório777 (rwxrwxrwx)777 - 022755 (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/*.sh

Este 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árioPermissões RecomendadasComando
Ficheiros web públicos (HTML, CSS, JS)644chmod 644 index.html
Diretórios web755chmod 755 /var/www/html
Scripts PHP/Python644 ou 755Depende do método de execução
Chaves SSH privadas600chmod 600 ~/.ssh/id_rsa
Diretório .ssh700chmod 700 ~/.ssh
Diretório de projeto partilhado2775 (SGID)chmod 2775 /opt/project
Diretório temporário com escrita global1777 (sticky)chmod 1777 /tmp/shared
Ficheiros de configuração com segredos600chmod 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 777 em 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.php ou credenciais de base de dados devem ser 600 ou 640 no 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.
  • chown recursivo em diretórios do sistema. Executar chown -R descuidadamente em /etc ou /usr pode 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.