Permissões de Arquivos no Linux/Windows

 https://www.firewall.cx/images/stories/linux-introduction-file-permissions-3.gif

Como rwx, chmod e os valores numéricos definem quem pode ler, alterar ou executar qualquer arquivo no sistema

O controle invisível

Todo arquivo em um sistema Unix-like carrega regras invisíveis.

Essas regras determinam quem pode:

  • Ler

  • Modificar

  • Executar

Sem elas, qualquer usuário poderia alterar arquivos críticos, comprometer contas, inserir código malicioso ou destruir o ambiente inteiro.

Permissões não são detalhe técnico.
São a primeira linha de defesa do sistema operacional.


Entendendo o rwx

Cada arquivo possui três tipos básicos de permissão:

  • r, read, leitura

  • w, write, escrita

  • x, execute, execução

Exemplo real:

-rwxr-xr--

Isso representa três blocos:

rwx r-x r--
user group others

Significado:

  • user, dono do arquivo

  • group, grupo associado

  • others, todos os demais usuários


Visualizando permissões com ls -l

Comando:

ls -l

Exemplo:

-rwxr-xr-- 1 shadows users 2048 Feb 13 script.sh

Vamos desmontar:

  • Primeiro caractere: tipo do arquivo

  • Dono: shadows

  • Grupo: users

  • Permissões:

    • dono: rwx

    • grupo: r-x

    • outros: r--


O primeiro caractere, tipo do arquivo

O primeiro símbolo indica o tipo:

SímboloTipo
-Arquivo comum
dDiretório
lLink simbólico
cDispositivo de caractere
bDispositivo de bloco
sSocket
pPipe

Exemplo:

drwxr-xr-x pasta/

O "d" indica diretório.


O sistema numérico das permissões

Cada permissão tem valor numérico:

  • r = 4

  • w = 2

  • x = 1

Somando os valores, temos:

ValorPermissão
0---
1--x
2-w-
3-wx
4r--
5r-x
6rw-
7rwx

Exemplo:

chmod 755 arquivo

Significa:

  • 7, dono, rwx

  • 5, grupo, r-x

  • 5, outros, r-x


Entendendo o chmod

chmod significa change mode.

Sintaxe numérica:

chmod 755 arquivo

Sintaxe simbólica:

chmod u+x arquivo

Significados:

  • u, user

  • g, group

  • o, others

Exemplos:

Permitir execução:

chmod +x script.sh

Remover escrita:

chmod -w arquivo.txt

Permissões em diretórios

Diretórios interpretam permissões de forma diferente:

  • r permite listar conteúdo

  • w permite criar ou remover arquivos

  • x permite acessar o diretório

Sem x, o diretório não pode ser acessado, mesmo que tenha r.


Ownership, dono e grupo

Permissões funcionam dentro de um contexto de propriedade.

Exemplo:

-rwx------ shadows users script.sh

Mesmo com rwx, outro usuário não pode acessar.

Ownership define autoridade.

Alterar dono:

sudo chown usuario arquivo

Alterar dono e grupo:

chown usuario:grupo arquivo

Permissões especiais, SUID, SGID e Sticky Bit


Existem três permissões avançadas.

SUID, Set User ID

Valor: 4 na casa especial.

chmod 4755 arquivo

Resultado:

-rwsr-xr-x

Quando executado, roda com permissões do dono.

Exemplo real:

/usr/bin/passwd

Permite alterar senha sem acesso direto ao /etc/shadow.


SGID, Set Group ID

Valor: 2

chmod 2755 pasta

Arquivos criados dentro herdam o grupo da pasta.

Muito usado em ambientes colaborativos.


Sticky Bit

Valor: 1

chmod 1777 /tmp

Resultado:

drwxrwxrwt

Usuários não podem remover arquivos de outros usuários.

Essencial para diretórios públicos.


Permissões padrão e umask

Todo arquivo nasce com permissões padrão.

Arquivos: 666
Diretórios: 777

Mas o sistema aplica um filtro chamado umask.

Ver valor atual:

umask

Exemplo:

022

Resultado:

Arquivos: 666 - 022 = 644
Diretórios: 777 - 022 = 755

Isso explica por que arquivos não vêm executáveis por padrão.


Links simbólicos

lrwxrwxrwx link -> arquivo

Links simbólicos ignoram permissões próprias.

A segurança depende do arquivo alvo.


Auditoria de segurança prática

Ver tudo:

ls -la

Buscar permissões perigosas:

find / -perm 777 2>/dev/null

Buscar SUID:

find / -perm -4000 2>/dev/null

Esses comandos são rotina em auditorias e pentests.


Cenário real de risco

Script inseguro:

-rwxrwxrwx backup.sh

Qualquer usuário pode alterar.

Se root executar, o sistema pode ser comprometido.

Exemplo extremo:

chmod 777 /etc/passwd

Permitir modificação de contas do sistema.

Permissões incorretas são vetor comum de privilege escalation.


ACLs no Linux, controle granular

Além do chmod tradicional, Linux suporta ACL.

Ver ACL:

getfacl arquivo

Definir ACL:

setfacl -m u:usuario:rwx arquivo

Permite controle refinado além do modelo clássico.


Equivalência no Windows

O Windows utiliza ACLs, Access Control Lists.


Permissões comuns:
  • Leitura

  • Gravação

  • Execução

  • Modificação

  • Controle total

Diferença central:

Linux usa modelo simples e direto.
Windows usa modelo mais granular e detalhado.

Equivalência básica:

LinuxWindows
rRead
wWrite
xExecute
rwxFull Control


Perspectiva ofensiva e defensiva

Permissões incorretas permitem:

  • Privilege escalation

  • Execução arbitrária

  • Persistência

  • Movimento lateral

Permissões corretas implementam:

  • Princípio do menor privilégio

  • Isolamento

  • Integridade

  • Controle estrutural

Permissões são o firewall interno do sistema de arquivos.

No NoirCode, o futuro é digital, e você já faz parte dele! 

Veja também: