Capítulo 004 — Permissões de Arquivos no Linux¶
Entender antes de decorar.
| Informação | Detalhes |
|---|---|
| Módulo | 03 — Linux |
| Nível | Iniciante |
| Tempo estimado | 15 a 20 minutos |
| Pré-requisito | Capítulo 003 — Comandos Essenciais de Navegação e Leitura de Arquivos |
Objetivo deste capítulo¶
Ao final deste capítulo, você será capaz de:
- interpretar a notação de permissões (rwx) mostrada em
ls -l; - diferenciar permissões de proprietário, grupo e outros;
- entender a diferença entre permissão de execução em um arquivo e em um diretório;
- usar
chmodem notação simbólica e numérica (octal); - usar
chownpara alterar proprietário e grupo de um arquivo; - reconhecer por que arquivos "world-writable" e bits SUID/SGID são pontos de atenção em uma investigação.
Como sempre, vamos começar utilizando nossa imaginação.¶
Continuando a investigação do servidor comprometido: enquanto navega por /tmp (lembra do capítulo 002?), você encontra um arquivo que chama atenção antes mesmo de você abrir o conteúdo:
Opção A
"É só um script qualquer, seguindo procurando outra coisa."
Opção B
"Essas permissões, sozinhas, já são um problema."
Antes de qualquer análise de conteúdo, essa linha já denuncia algo: qualquer usuário do sistema pode ler, modificar e executar esse arquivo. Ao final deste capítulo, você vai entender exatamente por que isso é tão grave.
Em uma investigação, permissões contam parte da história antes mesmo de você abrir o arquivo.
Lendo a notação de permissões¶
A string de permissões que aparece em ls -l tem 10 caracteres, divididos assim:
O primeiro caractere indica o tipo: - para arquivo comum, d para diretório, l para link simbólico. Os nove caracteres seguintes se dividem em três grupos de três, representando três "círculos" de acesso diferentes.
As três permissões: r, w, x¶
| Permissão | Sigla | Em um arquivo | Em um diretório |
|---|---|---|---|
| Leitura | r |
Ler o conteúdo do arquivo | Listar o conteúdo do diretório |
| Escrita | w |
Modificar o arquivo | Criar, renomear ou excluir itens dentro dele |
| Execução | x |
Executar o arquivo como programa/script | Entrar no diretório (navegar até ele) |
A pegadinha mais comum sobre permissão de execução
Em um diretório, a permissão x não significa "executar" o diretório — significa poder atravessá-lo com cd. Um diretório sem x para você, mesmo que tenha r, permite listar os nomes dos arquivos dentro dele, mas não permite entrar nem acessar o conteúdo desses arquivos.
Proprietário, grupo e outros — três círculos de acesso¶
Cada arquivo pertence a um usuário (proprietário) e a um grupo. As permissões são aplicadas em três círculos concêntricos de abrangência:
Proprietário → a pessoa (ou processo) dono do arquivo
Grupo → todos os usuários que pertencem ao grupo associado
Outros → todo o restante do sistema, sem exceção
No exemplo do início do capítulo, -rwxrwxrwx significa que todos os três círculos têm leitura, escrita e execução completas — não existe restrição nenhuma.
Mudando permissões com chmod¶
Notação simbólica¶
chmod u+x script.sh # adiciona execução para o proprietário (user)
chmod g-w script.sh # remove escrita do grupo
chmod o=r script.sh # define outros como apenas leitura
chmod a+x script.sh # adiciona execução para todos (all)
Notação numérica (octal)¶
Cada permissão tem um valor numérico: r = 4, w = 2, x = 1. Somando os valores de cada círculo, chegamos a um número de três dígitos:
| Octal | Significado |
|---|---|
755 |
proprietário: rwx (7) · grupo: r-x (5) · outros: r-x (5) — comum em scripts executáveis |
644 |
proprietário: rw- (6) · grupo: r-- (4) · outros: r-- (4) — comum em arquivos de dados |
700 |
proprietário: rwx (7) · grupo: --- (0) · outros: --- (0) — acesso restrito só ao proprietário |
777 |
todos com rwx completo — praticamente nunca deveria ser usado deliberadamente |
chown — mudando o proprietário¶
Esse comando altera tanto o proprietário quanto o grupo associado a um arquivo — útil, por exemplo, ao restaurar arquivos de um backup que pertenciam a outro usuário, ou ao corrigir permissões após uma investigação.
Por que isso importa tanto para segurança¶
Arquivos "world-writable"¶
Um arquivo com permissão de escrita para "outros" (o terceiro grupo de rwx) pode ser modificado por qualquer usuário do sistema — inclusive um atacante que tenha conseguido qualquer nível mínimo de acesso. Combinado com permissão de execução, como no 777 do início do capítulo, o risco se torna crítico: qualquer pessoa pode alterar o conteúdo do arquivo e ele ainda vai rodar.
SUID e SGID — permissões especiais¶
Existem dois bits especiais que merecem menção, mesmo neste capítulo introdutório: SUID (Set User ID) e SGID (Set Group ID). Quando aplicados a um executável, fazem com que ele rode com os privilégios do proprietário do arquivo, não de quem o executou.
Exemplo: um binário com SUID pertencente a root
Qualquer usuário que o executa → roda temporariamente com privilégios de root
Isso tem usos legítimos (o comando passwd, por exemplo, precisa desse mecanismo para funcionar), mas é também um dos vetores mais clássicos de escalonamento de privilégio quando configurado incorretamente ou presente em um binário que não deveria tê-lo. Analistas frequentemente auditam sistemas em busca de binários SUID inesperados como parte de uma investigação — vamos ver essa técnica com mais profundidade em capítulos futuros deste módulo.
Aplicação em um SOC¶
Ao identificar arquivos suspeitos¶
- prestar atenção especial a arquivos world-writable (
whabilitado para "outros"), sobretudo em diretórios como/tmp; - um script com permissão
777em um local temporário é motivo suficiente para investigação imediata, independente do conteúdo.
Ao auditar permissões críticas¶
- verificar arquivos de configuração sensíveis (por exemplo, dentro de
/etc) quanto a permissões excessivamente abertas; - procurar por binários com SUID/SGID fora do esperado, especialmente em locais não padronizados do sistema.
Ao documentar uma investigação¶
- registrar a notação completa de permissões encontrada (não só "estava aberto demais"), permitindo reconstrução exata do que foi observado.
Cenário prático — Decifrando o arquivo em /tmp¶
Voltando ao arquivo do início do capítulo:
Tipo: arquivo comum (
-).Proprietário (root): leitura, escrita e execução completas.
Grupo: leitura, escrita e execução completas.
Outros: leitura, escrita e execução completas — ou seja, qualquer usuário do sistema pode modificar e rodar esse script.
Localização:
/tmp, já identificado no capítulo 002 como área comum para estacionar arquivos maliciosos.Nome:
update.sh— um nome genérico, do tipo frequentemente escolhido para não chamar atenção em uma varredura superficial.
Somando tudo: um script com permissões totalmente abertas, num diretório clássico de estacionamento temporário, com nome genérico. Nenhum desses fatores prova sozinho que é malicioso — mas juntos, formam exatamente o tipo de padrão que justifica uma investigação de conteúdo imediata.
Perguntas de investigação¶
1. O que cada um dos 9 caracteres depois do tipo de arquivo representa em ls -l?
Três grupos de três caracteres (rwx), representando respectivamente as permissões de leitura, escrita e execução para o proprietário, o grupo e os demais usuários (outros).
2. Qual a diferença entre a permissão de execução em um arquivo e em um diretório?
Em um arquivo, execução permite rodá-lo como programa ou script. Em um diretório, execução permite atravessá-lo (entrar nele via cd), não "executá-lo" no sentido tradicional.
3. Como a notação octal 644 se traduz em permissões rwx?
644 equivale a rw-r--r--: o proprietário tem leitura e escrita (6 = 4+2), enquanto grupo e outros têm apenas leitura (4 cada).
4. Por que um arquivo com permissão 777 é considerado um risco de segurança?
Porque concede leitura, escrita e execução irrestritas a qualquer usuário do sistema, permitindo que qualquer pessoa modifique o conteúdo do arquivo e ele ainda seja executado normalmente.
5. O que é o bit SUID, e por que ele é relevante para investigações de escalonamento de privilégio?
É uma permissão especial que faz um executável rodar com os privilégios do proprietário do arquivo, não de quem o executa. Se um binário com SUID pertencente a um usuário privilegiado (como root) for mal configurado ou indevido, pode se tornar um caminho para um atacante obter privilégios elevados.
O que não fazer¶
- não use
chmod 777como solução genérica para "problemas de permissão" — resolve o erro, mas cria um risco maior; - não assuma que permissão de execução em um diretório significa "executar" o diretório;
- não ignore bits SUID/SGID durante uma auditoria, especialmente em binários fora de locais padronizados;
- não documente uma investigação com descrições vagas como "permissão estava aberta" — registre a notação exata.
Erros comuns¶
"chmod 777 resolve qualquer problema de permissão"¶
Não.
Resolve o sintoma imediato (erro de acesso), mas abre a porta para qualquer usuário do sistema modificar e executar o arquivo — trocando um problema pequeno por um risco muito maior.
"Permissão de execução em diretório significa que ele pode ser 'executado'"¶
Não.
Significa que é possível atravessá-lo (entrar nele). Diretórios não são "executados" no sentido de rodar como programas.
"SUID é só uma configuração técnica sem relevância de segurança"¶
Não.
É um dos vetores mais clássicos de escalonamento de privilégio quando presente em binários que não deveriam tê-lo, ou configurado incorretamente.
Resumo¶
Neste capítulo, aprendemos que:
- a notação de permissões em
ls -lse divide em tipo + três grupos de rwx (proprietário, grupo, outros); - execução em arquivo significa "rodar"; execução em diretório significa "atravessar";
- chmod altera permissões, tanto em notação simbólica quanto numérica (octal);
- chown altera proprietário e grupo de um arquivo;
- arquivos world-writable (especialmente combinados com execução) são um risco de segurança significativo;
- os bits SUID e SGID fazem um executável rodar com privilégios do proprietário, sendo um vetor clássico de escalonamento de privilégio quando mal configurados.
Não pergunte apenas:
"Esse arquivo tem permissão de execução?"
Pergunte também:
"Quem, exatamente, tem cada tipo de acesso a esse arquivo?"
"Essa permissão faz sentido para a localização e função desse arquivo?"
"Existe algum bit especial (SUID/SGID) que muda o que esse arquivo pode fazer?"
Permissão não é só sobre o que um arquivo faz. É sobre quem tem o poder de fazer alguma coisa com ele.
Checkpoint¶
Antes de seguir para o próximo capítulo, confirme se você consegue responder:
- [ ] O que os 10 caracteres de permissão em
ls -lrepresentam? - [ ] Qual a diferença entre execução em arquivo e em diretório?
- [ ] Como converter permissões rwx para notação octal e vice-versa?
- [ ] Como usar
chmodechown? - [ ] Por que um arquivo world-writable é um risco?
- [ ] O que é o bit SUID, e por que ele importa para investigação?
Glossário¶
| Termo | Definição |
|---|---|
| Permissão | Conjunto de regras (leitura, escrita, execução) que definem o que pode ser feito com um arquivo ou diretório. |
| rwx | Abreviação para read (leitura), write (escrita) e execute (execução). |
| chmod | Comando usado para alterar permissões de um arquivo ou diretório. |
| chown | Comando usado para alterar o proprietário e grupo de um arquivo. |
| Notação octal | Representação numérica das permissões, somando os valores 4 (r), 2 (w) e 1 (x) por círculo de acesso. |
| World-writable | Arquivo ou diretório com permissão de escrita liberada para qualquer usuário do sistema. |
| SUID / SGID | Bits especiais que fazem um executável rodar com os privilégios do proprietário ou grupo do arquivo, respectivamente. |
Referências¶
Próximo capítulo¶
No próximo capítulo, vamos sair dos arquivos parados e entrar no que está rodando no sistema — processos, como listá-los, e como identificar um processo que não deveria estar ali.
← Capítulo anterior: Comandos Essenciais de Navegação
Entender antes de decorar.