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.
devlinux@lab-server:~$ ./scripts/send_metrics.sh
bash: ./scripts/send_metrics.sh: Permission deniedResolva
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.
devlinux@lab-server:~$ ./scripts/send_metric.sh
bash: ./scripts/send_metric.sh: No such file or directoryO 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.
aluno@desafio:~$ ls -l
-rw-r--r-- 1 aluno aluno 120 out 20 notas.txt
drwxr-xr-x 2 aluno aluno 4096 out 20 relatoriosA 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.
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.shO 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