Estrutura de Arquivos e Permissões Linux para Servidores Web

Permissões Linux servidor web. Vamos organizar isso de forma completa e prática, cobrindo estrutura de arquivos no Linux/servidor e permissões, de maneira que fique fácil de entender e aplicar.


1️⃣ Estrutura de arquivos em sistemas Linux

O Linux segue um hierarquia padrão de diretórios (Filesystem Hierarchy Standard – FHS). Aqui estão os principais diretórios que você vai encontrar:

DiretórioFinalidade principal
/Diretório raiz. Todos os arquivos e diretórios estão dentro dele.
/binComandos essenciais do sistema, disponíveis para todos os usuários. Ex: ls, cat.
/sbinComandos de administração do sistema, geralmente só para root. Ex: iptables.
/usrProgramas, bibliotecas e documentação de usuário. Subdiretórios comuns: /usr/bin, /usr/lib.
/usr/localSoftware instalado manualmente (fora do gerenciador de pacotes).
/etcArquivos de configuração do sistema e serviços. Ex: /etc/passwd, /etc/ssh/sshd_config.
/varDados variáveis: logs, bancos de dados, emails. Ex: /var/log, /var/www.
/homeDiretórios pessoais dos usuários. Ex: /home/germano.
/tmpArquivos temporários. Normalmente limpo a cada reinício.
/devArquivos de dispositivos (hardware). Ex: /dev/sda.
/procSistema de arquivos virtual com informações do kernel e processos. Ex: /proc/cpuinfo.
/libBibliotecas essenciais do sistema. Ex: /lib/x86_64-linux-gnu/.

2️⃣ Permissões de arquivos e diretórios

Cada arquivo ou diretório tem 3 tipos de permissão:

  1. Leitura (r) – Pode ver o conteúdo do arquivo ou listar o diretório.
  2. Escrita (w) – Pode modificar o arquivo ou criar/excluir arquivos no diretório.
  3. Execução (x) – Pode executar o arquivo (se for um programa) ou entrar no diretório.

E essas permissões são divididas entre 3 categorias de usuários:

CategoriaSignificado
u (user)Dono do arquivo
g (group)Grupo do arquivo
o (others)Todos os outros usuários

Exemplo de ls -l:

-rwxr-xr--
  • rwx → dono pode ler, escrever e executar
  • r-x → grupo pode ler e executar, mas não escrever
  • r-- → outros podem apenas ler

2.1 Modificando permissões

  • Usando símbolos:
chmod u+x arquivo.txt   # adiciona permissão de execução ao dono
chmod g-w arquivo.txt   # remove permissão de escrita do grupo
chmod o+r arquivo.txt   # adiciona permissão de leitura para outros
  • Usando números (octal):
ValorPermissão
0
1–x
2-w-
3-wx
4r–
5r-x
6rw-
7rwx

Exemplo:

chmod 754 arquivo.txt
# 7 = rwx dono
# 5 = r-x grupo
# 4 = r-- outros

2.2 Proprietário e grupo

  • Para ver dono e grupo: ls -l arquivo.txt
  • Para alterar dono: chown usuario arquivo.txt
  • Para alterar grupo: chgrp grupo arquivo.txt

Exemplo:

chown germano arquivo.txt
chgrp admins arquivo.txt

2.3 Permissões especiais

  • SUID (Set User ID): executa com permissões do dono do arquivo.
  • SGID (Set Group ID): executa com permissões do grupo ou herda grupo em diretórios.
  • Sticky bit: em diretórios, só permite que o dono exclua arquivos próprios. Ex: /tmp.

Exemplo:

chmod 4755 programa    # SUID
chmod 2755 pasta       # SGID
chmod +t /tmp          # Sticky bit

Vamos criar um mapa visual da estrutura de diretórios do Linux com permissões recomendadas para servidores web, destacando o que é seguro para produção.


Estrutura de diretórios Linux – Servidor Web

/
├── bin/           # Comandos essenciais
│   └── perm: 755
├── sbin/          # Comandos administrativos
│   └── perm: 755
├── etc/           # Configurações do sistema
│   └── perm: 755
│       └── sshd_config, nginx.conf, etc.: 600-644
├── var/           # Dados variáveis
│   ├── log/       # Logs do sistema e serviços
│   │   └── perm: 755 (arquivos: 600-644)
│   ├── www/       # Diretórios de sites
│   │   └── perm: 755 (arquivos do site: 644)
│   └── tmp/       # Temporários
│       └── perm: 1777 (sticky bit)
├── home/          # Diretórios de usuários
│   └── usuario/   # Seu usuário
│       └── perm: 700-750 (segurança pessoal)
├── usr/           # Software e bibliotecas
│   ├── bin/       # Programas instalados
│   │   └── perm: 755
│   └── local/     # Softwares instalados manualmente
│       └── perm: 755
├── lib/           # Bibliotecas essenciais
│   └── perm: 755
├── dev/           # Dispositivos do sistema
│   └── perm: 600-666 (gerido pelo kernel)
├── proc/          # Sistema de arquivos virtual
│   └── perm: 555 (somente leitura)
└── tmp/           # Temporários
    └── perm: 1777 (sticky bit)

💡 Dicas de permissões para servidores web

  1. Arquivos do site: 644 (leitura para todos, escrita só para dono) chmod 644 /var/www/html/index.php
  2. Pastas do site: 755 (leitura e execução para todos, escrita só para dono) chmod 755 /var/www/html
  3. Arquivos sensíveis de configuração: 600-640 chmod 600 /etc/nginx/nginx.conf
  4. Diretórios temporários: 1777 (sticky bit) chmod 1777 /tmp
  5. Evitar 777: nunca dê permissão total para todos, risco de invasão.
estrutura de diretórios linux

FAQ

Quais são as permissões recomendadas para arquivos de sites no Linux?

Para arquivos de sites, use 644 (leitura para todos, escrita só para o dono). Para pastas, use 755.

O que é o sticky bit e onde ele é usado?

O sticky bit protege diretórios temporários, permitindo que apenas o dono exclua arquivos. Exemplo: /tmp com permissão 1777.

Por que não devo usar permissão 777 em servidores web?

Permissão 777 permite que qualquer usuário modifique arquivos, aumentando o risco de invasão.

Qual a diferença entre dono, grupo e outros no Linux?

Dono é o usuário que possui o arquivo, grupo define permissões para usuários do mesmo grupo, e outros aplica a todos os demais.

Como proteger arquivos de configuração sensíveis no Linux?

Configure permissões 600-640 para arquivos críticos como /etc/nginx/nginx.conf, garantindo que apenas o root ou o dono possa lê-los.