Seu navegador não oferece leitura em voz alta. Você pode ler o guia normalmente.
Permissões de arquivos no Linux caem em prova de forma previsível: dado um modo como rwxr-x---, qual o número? Dado um chmod, como o arquivo fica? Dada uma umask, qual a permissão de um arquivo novo? Este guia aprofunda o que o guia de Windows e Linux comparados apresenta, com as conversões conferidas por cálculo executado.
A estrutura de 10 caracteres
A saída de ls -l começa com dez caracteres, por exemplo -rwxr-xr--:
| Posição | Significado |
|---|---|
| 1 | tipo: - arquivo comum, d diretório, l link simbólico |
| 2 a 4 | permissões do dono (user) |
| 5 a 7 | permissões do grupo (group) |
| 8 a 10 | permissões dos outros (others) |
Cada trio é r (leitura), w (escrita) e x (execução), com - quando falta a permissão. O sistema aplica uma única classe: se você é o dono, valem as permissões do dono, mesmo que as do grupo sejam mais amplas.
Valores octais
Cada permissão vale um número: r = 4, w = 2, x = 1. Soma-se por trio.
| rwx | Conta | Octal |
|---|---|---|
rwx |
4 + 2 + 1 | 7 |
rw- |
4 + 2 | 6 |
r-x |
4 + 1 | 5 |
r-- |
4 | 4 |
-wx |
2 + 1 | 3 |
--x |
1 | 1 |
--- |
0 | 0 |
Modos comuns, conferidos na conversão:
| Octal | Símbolos | Uso típico |
|---|---|---|
| 755 | rwxr-xr-x |
programas e diretórios públicos |
| 644 | rw-r--r-- |
arquivos de texto comuns |
| 600 | rw------- |
arquivos privados do dono |
| 700 | rwx------ |
diretório privado |
| 750 | rwxr-x--- |
dono total, grupo lê e entra, outros nada |
| 640 | rw-r----- |
dono edita, grupo lê |
| 664 | rw-rw-r-- |
dono e grupo editam |
| 444 | r--r--r-- |
somente leitura para todos |
Exemplo de leitura reversa: rwxr-x--- vira 7 (dono), 5 (grupo) e 0 (outros), ou seja, 750.
O que r, w e x significam em diretórios
Em arquivos, o sentido é direto. Em diretórios, muda:
r: listar os nomes dentro do diretório.w: criar, renomear e apagar entradas dentro dele (em geral combinado comx).x: atravessar o diretório, isto é, acessar itens dentro dele pelo nome e usá-lo como parte de um caminho.
Consequência cobrada: para apagar um arquivo, o que importa é a permissão de escrita no diretório, não no arquivo.
chmod em notação simbólica
Formato: chmod [quem][operador][permissões] arquivo. Quem: u (dono), g (grupo), o (outros), a (todos). Operador: + acrescenta, - remove, = define exatamente.
Cálculos conferidos a partir de um arquivo inicial:
| Modo inicial | Comando | Modo final |
|---|---|---|
| 644 | chmod u+x |
744 (rwxr--r--) |
| 755 | chmod go-w |
755 (já não havia w para grupo e outros) |
| 644 | chmod go= |
600 (rw-------) |
| 640 | chmod g+x |
650 (rw-r-x---) |
| qualquer | chmod a+r |
acrescenta leitura a todos |
Observe a segunda linha: remover o que já não existe não altera nada, e isso é uma pegadinha comum. Em notação octal, chmod 750 arquivo substitui o modo inteiro de uma vez. A opção -R aplica a todo o conteúdo de um diretório, o que pede cuidado: dar x a todos os arquivos comuns raramente é desejável.
umask: o que sai do modo padrão
Programas criam arquivos pedindo, em geral, o modo 666 (sem execução) e diretórios com 777. A umask é uma máscara de bits que remove permissões desse padrão: modo final = padrão com os bits da umask desligados.
| umask | Arquivo novo (666) | Diretório novo (777) |
|---|---|---|
| 022 | 644 | 755 |
| 027 | 640 | 750 |
| 077 | 600 | 700 |
| 002 | 664 | 775 |
Como calcular: subtraia dígito a dígito, sem emprestar (o resultado nunca é negativo). Com umask 022 e arquivo 666: 6-0=6, 6-2=4, 6-2=4, resultando em 644. Para ser exato, a operação é “padrão E (NÃO umask)”; a subtração dígito a dígito dá o mesmo resultado para as umasks comuns. Observe que arquivos novos não nascem executáveis, mesmo com umask 000: o padrão de 666 não tem x. A umask de um terminal de teste foi 022. O comando umask sem argumentos mostra o valor vigente; o valor padrão varia por sistema e configuração.
Bits especiais
Um quarto dígito, à esquerda, guarda três bits especiais: 4 (setuid), 2 (setgid) e 1 (sticky).
| Bit | Efeito em arquivo executável | Efeito em diretório |
|---|---|---|
| setuid (4) | executa com a identidade do dono do arquivo | sem efeito usual |
| setgid (2) | executa com o grupo do arquivo | arquivos novos herdam o grupo do diretório |
| sticky (1) | sem efeito usual hoje | só o dono do arquivo (ou do diretório) pode apagar ou renomear entradas |
O sticky bit é a razão pela qual diretórios compartilhados de arquivos temporários, onde todos escrevem, não permitem que um usuário apague os arquivos de outro. Em ls -l, aparece como t no lugar do x dos outros; o setuid, como s no lugar do x do dono. O modo 4755 é setuid mais rwxr-xr-x.
Setuid em programa é sensível do ponto de vista de segurança: uma falha nesse programa pode dar a um usuário comum os privilégios do dono. Por isso, auditorias procuram esses arquivos.
Mudando dono e grupo
chown usuario arquivo: muda o dono.chgrp grupo arquivo: muda o grupo.chown usuario:grupo arquivo: muda os dois.
Em geral, só o administrador (root) pode mudar o dono; o dono pode mudar as permissões.
Passo a passo para questões
- Separe o modo em três trios e ignore o primeiro caractere.
- Converta cada trio em um número.
- Para
chmodsimbólico, aplique a mudança só ao grupo citado. - Para umask, parta de 666 (arquivos) ou 777 (diretórios) e remova os bits da máscara.
- Releia o enunciado: pode pedir a permissão de quem é “outros”.
Erros comuns
- Achar que a umask se soma ao modo, em vez de ser removida dele.
- Esperar arquivos novos executáveis por padrão.
- Esquecer que permissão para apagar vem do diretório.
- Trocar a ordem dono, grupo e outros.
- Confundir
chmod(permissões) comchown(propriedade).
Fontes e atualização
Não há norma oficial brasileira sobre permissões em Linux; o conteúdo segue as convenções do padrão POSIX e a prática das distribuições. As conversões foram conferidas por cálculo executado, e os efeitos de ls e stat não puderam ser testados em sistema de arquivos Linux real nesta redação; por isso, o guia se limita ao que é padrão consolidado. Confira o edital: a banca pode adotar uma distribuição específica.
Próximos passos
- Aprenda os comandos em Linux: pipes, redirecionamento, grep e find.
- Compare com o Windows em Windows e Linux comparados.
- Veja o controle de acesso em controle de acesso e medidas de segurança.