Permissões de arquivos
Esta aula aborda o sistema de permissões de arquivos no Linux, explicando o modelo rwx, os comandos chmod (nos modos octal e simbólico), chown e chgrp para alterar proprietário e grupo, e o umask para definir permissões padrão. O conteúdo inclui exemplos práticos e exercícios para fixação.
No Linux, cada arquivo e diretório possui um conjunto de permissões que determinam quem pode ler, escrever e executar. Essas permissões são fundamentais para a segurança e o funcionamento do sistema. Nesta aula, vamos explorar o modelo rwx, como alterar permissões com chmod, mudar proprietário e grupo com chown e chgrp, e controlar permissões padrão com umask.
Dominar permissões é essencial para administrar sistemas multiusuário e garantir que apenas usuários autorizados tenham acesso a arquivos sensíveis. Vamos começar entendendo a representação simbólica e numérica das permissões.
Modelo rwx
As permissões no Linux são divididas em três grupos: dono (owner), grupo (group) e outros (others). Para cada grupo, existem três permissões: leitura (r), escrita (w) e execução (x). A ausência de uma permissão é representada por um hífen (-).
Por exemplo, a string rwxr-xr-- significa: dono tem permissão total (rwx), grupo tem permissão de leitura e execução (r-x), e outros têm apenas leitura (r--). Para diretórios, a permissão de execução (x) permite entrar no diretório (usar cd).
Para visualizar as permissões, use ls -l. Exemplo:
$ ls -l arquivo.txt
-rw-r--r-- 1 user group 1024 Mar 10 10:00 arquivo.txtO primeiro caractere indica o tipo (- para arquivo, d para diretório). Os próximos nove caracteres são as permissões em três grupos de três.
chmod (octal e simbólico)
O comando chmod altera as permissões de arquivos e diretórios. Existem duas formas: simbólica e octal (numérica).
Modo simbólico: Usa letras para indicar quem (u=user, g=group, o=others, a=all) e operadores (+ para adicionar, - para remover, = para definir exatamente). Exemplo: chmod u+x arquivo.sh adiciona permissão de execução ao dono.
$ chmod u+x script.sh
$ chmod g-w dados.txt
$ chmod o=r relatorio.pdfModo octal: Cada permissão tem um valor numérico: r=4, w=2, x=1. Somam-se os valores para cada grupo, formando um número de três dígitos (dono, grupo, outros). Exemplo: 755 significa rwxr-xr-x (7=4+2+1, 5=4+1).
$ chmod 755 script.sh
$ chmod 644 arquivo.txtÉ comum usar 755 para scripts executáveis e 644 para arquivos regulares. Diretórios geralmente usam 755 para permitir acesso.
chown e chgrp
O comando chown altera o proprietário (e opcionalmente o grupo) de um arquivo. Apenas o root pode mudar o dono, mas o dono pode mudar o grupo se for membro do novo grupo. Sintaxe: chown [dono][:grupo] arquivo.
$ sudo chown maria arquivo.txt
$ sudo chown maria:dev equipe.txt
$ sudo chown :admin dados.dat # muda apenas o grupoJá chgrp altera apenas o grupo. É equivalente a chown :grupo.
$ chgrp dev projeto.txtPara alterar recursivamente em diretórios, use a opção -R (cuidado!).
umask
O umask define as permissões padrão para novos arquivos e diretórios. Ele funciona como uma máscara que subtrai permissões do valor máximo (666 para arquivos, 777 para diretórios). O valor do umask é um número octal de três dígitos.
Por exemplo, umask 022 resulta em permissões 644 para arquivos (666 - 022 = 644) e 755 para diretórios (777 - 022 = 755). Umask 077 cria arquivos com 600 e diretórios com 700.
$ umask 022
$ touch novo.txt
$ ls -l novo.txt
-rw-r--r-- 1 user group 0 Mar 10 10:00 novo.txtPara ver o umask atual, digite umask sem argumentos. Para alterar permanentemente, coloque o comando no arquivo de inicialização do shell (~/.bashrc).
Boas práticas
Sempre use o modo octal para scripts, pois é mais preciso. Evite permissões 777 a menos que necessário. Para diretórios compartilhados, considere usar o sticky bit (chmod +t) para evitar que usuários deletem arquivos alheios. Lembre-se de que permissões de execução em scripts são essenciais para rodá-los.
Referências
Exercícios
Qual comando adiciona permissão de execução para o grupo no arquivo
script.sh?✓ Resposta:chmod g+x script.shUsando modo octal, quais permissões resultam de
chmod 750em um arquivo?✓ Resposta: Dono: rwx (7), Grupo: r-x (5), Outros: --- (0). Ou seja,rwxr-x---.Como alterar o proprietário do diretório
/projetopara o usuáriojoaoe grupodevrecursivamente?✓ Resposta:sudo chown -R joao:dev /projetoQual o umask necessário para que novos arquivos tenham permissão 640 e novos diretórios 750?
✓ Resposta: Para arquivos: 666 - 640 = 026. Para diretórios: 777 - 750 = 027. O umask deve ser 027 (o maior valor entre os dois, ou use 026 se quiser apenas arquivos, mas o comum é usar 027). Resposta:umask 027Qual comando torna o arquivo
dados.txtsomente leitura para todos?✓ Resposta:chmod a=r dados.txtouchmod 444 dados.txt