Tutorial de Linux / Permissões de arquivos e uso de sudo: ler, alterar e verificar
As permissões de arquivos no Linux determinam se o proprietário, os integrantes do grupo proprietário e os demais usuários podem ler (r), escrever (w) ou executar (x) um objeto. O sudo permite que um usuário autorizado execute um comando como outro usuário, normalmente o administrador. Diante de uma falha de acesso, examine primeiro a propriedade e as permissões; use privilégios elevados apenas na operação que precisa deles.
O notes.txt das primeiras consultas será criado na seção de prática com chmod. Prepare esse arquivo em uma pasta nova e só então volte às consultas iniciais. A aula de usuários, grupos e propriedade de arquivos explica as identidades usadas aqui.
Verificar sua identidade e o proprietário do arquivo
A permissão não é um número isolado: importam o usuário e os grupos do processo atual, o proprietário e o grupo do arquivo, além das permissões dos diretórios no caminho. Consulte a sessão com id e o alvo com ls -l e stat. Os exemplos pressupõem Bash no Linux e utilitários GNU; a opção stat -c não é universal. Execute a prática com arquivos seus, sem sudo.
id
ls -l notes.txt
stat -c '%A %a %U %G %n' notes.txt
Na saída ilustrativa -rw-r----- 1 learner editors ... notes.txt, o primeiro - indica um arquivo regular. Os três conjuntos seguintes, rw-, r-- e ---, correspondem ao proprietário, ao grupo proprietário e aos demais usuários. learner e editors são nomes fictícios; o seu resultado será diferente. No GNU stat, %A mostra a forma simbólica, %a a forma octal, %U e %G os nomes do proprietário e do grupo, e %n o nome do arquivo.
Nas permissões básicas, essas categorias não são somadas para conceder acesso: se o processo corresponde ao proprietário, vale a categoria do proprietário; caso contrário, verifica-se a correspondência com o grupo e, por fim, a categoria dos demais usuários. Permissões de grupo mais amplas não compensam automaticamente um bit ausente na categoria do proprietário. Listas de controle de acesso podem acrescentar regras a essa avaliação. Se nomes não puderem ser resolvidos, confira os identificadores numéricos com ls -ln notes.txt ou stat -c '%u %g %n' notes.txt; um nome ausente não prova que não exista proprietário.
O que r, w e x permitem em arquivos e diretórios?
As mesmas letras autorizam operações diferentes conforme o tipo de objeto. Essa diferença explica por que um arquivo pode ter leitura permitida e ainda assim não ser acessível pelo caminho usado.
| Permissão | Arquivo regular | Diretório |
|---|---|---|
r |
Ler o conteúdo | Ler os nomes das entradas |
w |
Modificar o conteúdo | Permissão necessária para criar, excluir e renomear entradas |
x |
Permitir a execução de um arquivo executável | Atravessar o diretório para alcançar entradas de nome conhecido |
Para abrir um arquivo, o processo precisa poder atravessar os diretórios do caminho. Em um diretório, r permite ler a lista de nomes, mas não substitui x para alcançar cada entrada; ter x sem r pode permitir acessar um nome conhecido sem listar o diretório. Criar, excluir ou renomear entradas normalmente exige w e x no diretório correspondente.
Excluir um arquivo costuma depender das permissões do diretório pai, e não do bit w do próprio arquivo. O sticky bit restringe a remoção ou renomeação por usuários sem privilégios em diretórios compartilhados, como /tmp. Listas de controle de acesso (ACLs), atributos do sistema de arquivos, uma montagem somente para leitura e políticas como SELinux também podem limitar operações. Portanto, os nove bits comuns não explicam necessariamente toda falha de acesso.
Alterar as permissões de um arquivo de prática com chmod
Crie uma pasta nova no seu diretório pessoal. Se linux-course-17-practice já existir, escolha outro nome e ajuste as duas primeiras linhas. Execute uma linha de cada vez: se mkdir ou cd falhar, pare antes de executar printf. Confirme a pasta atual com pwd e que ela é a pasta nova; a saída de pwd, sozinha, não comprova que o cd anterior funcionou. O redirecionamento > cria ou substitui notes.txt na pasta atual.
mkdir ~/linux-course-17-practice
cd ~/linux-course-17-practice
printf 'private notes\n' > notes.txt
ls -l notes.txt
chmod u=rw,g=r,o= notes.txt
stat -c '%A %a %n' notes.txt
O chmod altera os bits de modo; para um arquivo seu, normalmente não exige privilégios administrativos. u representa o proprietário, g o grupo proprietário e o os demais usuários. O operador = substitui as permissões daquela categoria pelo conjunto indicado. Assim, u=rw,g=r,o= define leitura e escrita para o proprietário, leitura para o grupo e nenhuma permissão básica para os demais.
Em um sistema de arquivos Linux que ofereça essas permissões, a última linha deve mostrar -rw-r----- 640 notes.txt. A primeira listagem pode ter outro modo, conforme a criação do arquivo e a máscara umask. Se o resultado final não for 640, confirme o erro do comando e o comportamento da montagem; não conclua que a mudança foi aplicada só porque não apareceu uma mensagem. Em camadas de compatibilidade no Windows, a interpretação ou a alteração desses bits pode diferir da usada pelo Linux.
Na notação octal, some r=4, w=2 e x=1 separadamente em cada categoria. Por isso, 640 corresponde a rw-, r-- e ---. Agora mude para 600, que concede leitura e escrita apenas ao proprietário nos bits comuns, e verifique:
chmod 600 notes.txt
stat -c '%A %a %n' notes.txt
O resultado esperado é -rw------- 600 notes.txt. Em contraste, chmod g+r notes.txt acrescenta leitura para o grupo ao modo existente, e chmod o-rwx notes.txt retira as três permissões dos demais usuários. Escolha entre substituir uma categoria com = e alterar bits específicos com + ou -. Para voltar ao modo de prática anterior, use chmod u=rw,g=r,o= notes.txt e confirme 640 com stat; isso restaura aquele modo básico da prática, não uma configuração arbitrária de ACLs.
Inspecionar as permissões do diretório separadamente
Dentro da pasta de prática recém-criada, faça um diretório chamado private. Se ele já existir, não prossiga com o mesmo nome. O modo 700 concede ao proprietário as permissões básicas de listar, atravessar e modificar as entradas, sem concedê-las ao grupo ou aos demais usuários.
mkdir private
chmod 700 private
ls -ld private
stat -c '%A %a %n' private
A linha do stat deve ser drwx------ 700 private nesse ambiente Linux. A opção -d faz ls mostrar o próprio diretório, em vez de seu conteúdo. Se você retirar x por engano, até o proprietário sem privilégios especiais pode perder o acesso aos arquivos internos; no diretório de prática, chmod u+x private repõe esse bit. Privilégios administrativos e regras adicionais precisam ser considerados antes de tratar 700 como uma garantia absoluta de isolamento.
Aplicar o mesmo número à árvore inteira com chmod -R é fácil de errar: arquivos regulares e diretórios têm necessidades diferentes de x. Não aplique os comandos desta prática recursivamente a dados existentes ou a pastas de outros usuários. Registre o estado anterior e escolha o alcance da alteração antes de modificar dados reais.
Quando e como usar sudo?
O sudo executa um comando como outro usuário conforme a política de autorização da conta atual. O alvo padrão costuma ser root, mas isso depende da política; não é toda conta que recebe acesso administrativo. Consulte suas permissões com sudo -l, que pode solicitar autenticação. Uma recusa pode indicar que a conta não está autorizada; erros de autenticação ou configuração também precisam ser interpretados pela mensagem apresentada.
sudo -l
Use sudo comando quando aquela operação específica precisar de privilégios e estiver autorizada. Se um arquivo de outro usuário estiver inacessível, confirme primeiro a política de acesso desejada, em vez de abrir as permissões indiscriminadamente. O sudo, por si só, não altera permanentemente o proprietário: quem pode fazer isso é o comando executado. Um programa iniciado como administrador também pode criar arquivos pertencentes ao administrador; confira a pasta de destino e o que ele escreve.
O redirecionamento de saída é preparado pelo shell atual antes da execução do comando. Assim, em sudo echo ... > arquivo-protegido, o shell tenta abrir o destino com seus próprios privilégios; elevar apenas echo não eleva essa abertura. A aula de redirecionamentos e pipes no Bash explica essa ordem. Para editar uma configuração autorizada, considere sudoedit: ele usa uma cópia temporária editada como o usuário que o chamou e depois tenta gravar a alteração, conforme a política.
Arquivos da política sudoers devem ser editados com visudo, que coordena o acesso e verifica a sintaxe antes de instalar a alteração. Não altere a política apenas para contornar uma recusa. Uma verificação de sintaxe reduz o risco de perder acesso por um erro de escrita, mas não comprova que uma regra conceda somente os privilégios pretendidos; a autorização precisa ser revisada separadamente.
Como diagnosticar uma falha de permissão?
- Consulte o usuário e os grupos da sessão com
id. Se a conta ganhou outro grupo, confirme se o processo atual recebeu essa associação; uma sessão já aberta pode conservar os grupos anteriores. - Inspecione proprietário, grupo e modo do alvo com
ls -loustat. Para o diretório em si, usels -ld. Diferencie uma falha de resolução de nomes da ausência de um identificador numérico. - Confira a permissão de travessia em cada diretório pai. Se o utilitário
nameido pacote util-linux estiver disponível,namei -l caminho, com o caminho real no lugar decaminho, ajuda a examinar cada componente. - Se os bits básicos não explicarem a falha, investigue ACLs, SELinux, montagem somente para leitura, atributos e sticky bit. Não comece por
chmod 777: essa alteração pode ampliar o acesso sem resolver a causa. - Defina o acesso necessário, aplique a menor mudança adequada e teste novamente como o usuário que precisa realizar a operação. Se precisar desfazer, restaure o estado registrado antes da alteração, incluindo regras adicionais que tenham sido modificadas.
Ao terminar, confira sua posição com pwd antes de organizar a pasta de prática. Mantenha a limpeza limitada à pasta nova e aos arquivos que você criou; não use dados de produção nem arquivos de outros usuários como alvo dos exercícios de chmod.
Fontes primárias
O manual do GNU Coreutils explica a estrutura dos bits de modo e a alteração de permissões. No Linux, path_resolution(7) detalha a busca pelo caminho; namei(1) descreve a inspeção de seus componentes. Os manuais sudo(8), sudoers(5) e visudo(8) descrevem execução, autorização e edição da política.




