O sistema de permissões do Linux é baseado no princípio do privilégio mínimo. Isso significa que usuários e processos devem ter acesso estritamente ao que necessitam para trabalhar, reduzindo a superfície de ataque em caso de vulnerabilidades.
Neste guia prático, abordamos como criar usuários, agrupá-los e controlar o acesso a arquivos e diretórios usando comandos essenciais de terminal.
1. Criando e Gerenciando Usuários
Nunca execute sua aplicação ou compartilhe contas usando o usuário root diretamente. Crie contas individuais e com privilégios limitados.
Comandos úteis:
- Criar usuário:
sudo adduser nome_usuario
(O comando adduser cria automaticamente a pasta home do usuário e solicita a criação da senha). - Deletar usuário:
sudo deluser nome_usuario - Adicionar usuário ao grupo sudo (administrador):
sudo usermod -aG sudo nome_usuario
2. Criando e Gerenciando Grupos
Grupos facilitam o compartilhamento de diretórios entre múltiplos usuários (por exemplo, desenvolvedores que precisam editar os mesmos arquivos de um site no WordPress).
Como estruturar:
- Crie o grupo de trabalho:
sudo groupadd devteam - Adicione os usuários ao grupo:
sudo usermod -aG devteam usuario1sudo usermod -aG devteam usuario2
3. Alterando Donos de Arquivos com chown
Cada arquivo e pasta no Linux pertence a um usuário e a um grupo. O comando chown (change owner) altera essa propriedade.
Uso prático:
Para definir o usuário www-data e o grupo devteam como donos de uma pasta de aplicação web recursivamente (todas as subpastas): sudo chown -R www-data:devteam /var/www/meusite
4. Gerenciando Permissões com chmod
O comando chmod (change mode) define quem pode ler (r), gravar (w) ou executar (x) arquivos e diretórios.
As permissões são distribuídas para três classes:
- Dono (User - u)
- Grupo (Group - g)
- Outros (Others - o)
Representação Numérica (Octal):
4= Ler (read)2= Gravar (write)1= Executar (execute)
Somando os valores, geramos a permissão. Por exemplo:
7(4+2+1): Permissão total (ler, gravar e executar).6(4+2): Ler e gravar.5(4+1): Ler e executar.4: Apenas ler.
Exemplos comuns de chmod:
chmod 755 arquivo.sh: Permite que o dono faça tudo, enquanto o grupo e outros podem apenas ler e executar (comum para scripts públicos).chmod 600 id_rsa: Permite que apenas o dono leia e escreva no arquivo (obrigatório para chaves privadas SSH).chmod -R 775 /var/www: Dá permissão total ao dono e grupo de desenvolvimento, e leitura/execução a outros.
5. Exemplo: usuário de deploy e a pasta do site
Conta sem senha de login, grupo do site, dono e permissão. O 2775 nos diretórios liga o bit setgid: arquivo novo herda o grupo web.
sudo adduser --disabled-password --gecos "" deploy
sudo groupadd --force web
sudo usermod -aG web deploy
sudo mkdir -p /var/www/meusite
sudo chown -R deploy:web /var/www/meusite
sudo find /var/www/meusite -type d -exec chmod 2775 {} \;
sudo find /var/www/meusite -type f -exec chmod 664 {} \;
id deploy
namei -l /var/www/meusite
id mostra os grupos. namei -l mostra a permissão de cada pasta no caminho. A chave pública entra com modo 600, e o diretório .ssh com 700:
sudo -u deploy mkdir -p /home/deploy/.ssh
sudo -u deploy chmod 700 /home/deploy/.ssh
echo 'ssh-ed25519 AAAA... deploy@notebook' | sudo -u deploy tee /home/deploy/.ssh/authorized_keys
sudo chmod 600 /home/deploy/.ssh/authorized_keys
Troque AAAA... pela chave real. chmod 777 não entra nesse roteiro: qualquer usuário do servidor passaria a escrever na aplicação.
Conclusão
Manter o controle correto de proprietários e permissões é um dos pilares de segurança de qualquer servidor Linux. Aplicando o chown e chmod corretos, você evita brechas de segurança de arquivos confidenciais sem prejudicar o funcionamento das suas aplicações.