Permissões no Linux

Cada arquivo tem um dono e uma regra: quem pode ler, quem pode mudar e quem pode executar.

Pinguim do Comandu com um escudo e pastas trancadas

Três perguntas

Permissão no Linux cabe em três verbos. Ler: dá para ver o conteúdo. Mudar: dá para editar ou apagar. Executar: dá para rodar, no caso de um programa ou um script.

Um arquivo pode deixar você ler e mesmo assim impedir a execução. São regras separadas. Ter uma não entrega as outras.

Dono, grupo e o resto

A mesma trinca se repete três vezes. A primeira vale para o dono do arquivo. A segunda vale para o grupo dele. A terceira vale para qualquer outra pessoa na máquina.

Por isso um colega pode só olhar o arquivo, e você pode editá-lo. Não é uma regra única. São três, lado a lado.

Resolva

Você consegue editar o relatório. Um colega abre o mesmo arquivo e só consegue ler. O que mudou?

O aviso que aparece

Quando a regra barra o comando, o terminal não fica em silêncio. Ele escreve Permission denied. A pasta existe. O arquivo existe. Falta permissão para aquela ação.

bash - comandu
devlinux@lab-server:~$ ./scripts/send_metrics.sh
bash: ./scripts/send_metrics.sh: Permission denied

Resolva

O script está na pasta e o terminal disse Permission denied na hora de rodar. O que falta?

Caminho errado é outro aviso

Permission denied significa que o caminho foi encontrado e a regra barrou. Se o nome estiver errado, o terminal escreve No such file or directory. Um é permissão. O outro é caminho.

bash - comandu
devlinux@lab-server:~$ ./scripts/send_metric.sh
bash: ./scripts/send_metric.sh: No such file or directory

O nome verdadeiro era send_metrics.sh. O terminal não chegou a olhar a permissão, porque não achou o arquivo.

Descubra

O comando respondeu No such file or directory. Qual é o primeiro conserto?

Ler a regra antes de mudar

ls -l mostra, junto do nome, letras como r, w e x. r é ler, w é mudar, x é executar. O traço no lugar de uma letra significa que aquela ação está desligada.

bash - comandu
aluno@desafio:~$ ls -l
-rw-r--r-- 1 aluno aluno  120 out 20 notas.txt
drwxr-xr-x 2 aluno aluno 4096 out 20 relatorios

A primeira letra diz o tipo. - é arquivo. d é pasta. Depois vêm nove letras, em três grupos: dono, grupo e os outros.

No notas.txt, o dono tem rw-: pode ler e mudar, não executar. Grupo e os outros têm r--: só ler.

Na pasta relatorios, o dono tem rwx. Numa pasta, o x não roda um programa. Ele deixa entrar com cd e alcançar o que está dentro. Sem esse x, a pasta pode aparecer no ls e mesmo assim recusar a entrada.

Descubra

Na listagem, o script tem r e w, e não tem x. Dá para abrir o texto dele?

O x que faltava no script

O script do começo foi encontrado. Faltou o x. Ler o texto continua valendo, se o r estiver lá. Rodar é outra permissão.

Primeiro você lê o ls -l. Só depois muda a regra. chmod u+x, seguido do nome, liga a execução para o dono. O u é o dono. O +x acrescenta o executar e deixa o resto como estava.

bash - comandu
devlinux@lab-server:~$ ls -l scripts/send_metrics.sh
-rw-r--r-- 1 devlinux devlinux 80 out 20 scripts/send_metrics.sh
devlinux@lab-server:~$ chmod u+x scripts/send_metrics.sh
devlinux@lab-server:~$ ls -l scripts/send_metrics.sh
-rwxr--r-- 1 devlinux devlinux 80 out 20 scripts/send_metrics.sh

O dono passou de rw- para rwx. Grupo e os outros continuam só com leitura. Aí o ./scripts/send_metrics.sh pode rodar.

Para se achar na pasta antes de olhar a regra, veja como navegar em pastas.

Categorias

Permissões