Linux e suas permissões: entendendo permissões e as letras estranhas nos arquivos e diretórios no linux 💡
Alguma vez na sua vida vc já usou o chmod
Talvez vc já tenha se deparado com erros de execução, modificação, ou até leitura de arquivos ou diretórios no linux, e descobriu que a solução para os seus problemas era o famoso: chmod 777 meuarquivo.txt, chmod 775 meuarquivo.txt ou até mesmo chmod +x meuarquivodenovo.txt. Mas afinal, oque significa isso??
Permissões
Os arquivos e diretórios no linux são gerenciados atraves de permissões para garantir a integridade do mesmo, evitando possiveis ediçoes de arquivos de outros usuários "Sem querer", ou execução de um programa que não poderia ser executado. Então para evitar problemas, ao criar um arquivo, automaticamente o linux associa seu grupo de usuário e usuário aquele arquivo, dando algumas permissões iniciais.
Vamos ver oque acontece quando vc cria um arquivo no linux com o seguinte comando:
$ touch meuarquivodeteste.txt
Ao executar esse comando, ele cria um arquivo de texto pra mim, e se eu executar o comando:
$ ls -l
(O parametro -l me mostrará mais detalhes dos arquivos e pastas, incluindo as permissões)
Ao executar, vc verá algo semelhante a isso:
-rw-rw-r-- 1 ryandias ryandias 0 ago 7 17:48 meuarquivodeteste.txt
Vamos fragmentar essa saída:
- -rw-rw-r--: O primeiro traço(-) indica que é um arquivo, caso fosse um diretório, no lugar do traço seria a letra d, algo como: drw-rw-r--;
- rw-: As três primeiras letras representa as permissões do usuário que criou o arquivo ou diretório. r é de read, oque significa que o criador pode ler. O w é de write, oque significa que o criador pode escrever/modificar aquele arquivo. E o traço(-) representa a ultima letra que seria o x de execute, quando no lugar da letra possui um traço, significa em binário o interruptor 0, oque significa que a permisão não foi dada;
- rw-: Pela segunda vez temos a mesma linha da anterior, mas essas são as opções dadas ao grupo daquele usuário. Já tendo em mente que vc sabe oque são as letras, sabe que o grupo de usuário tem as mesmas permissões que o criador: ler, escrever e o traço(-) significa que ele não pode executar;
- r--: A ultima parte representa a permissão de outros usuários do sistema. Tendo em vista que a unica permissão que ele possui é a r (Leitura) e que lhe falta a de escrita e execução;
- ryandias ryandias 0 ago 7 17:48 meuarquivodeteste.txt: Aqui está apenas indicando o meu grupo de usuário que criou aquele arquivo (ryandias) e o usuário que criou ele (ryandias) e logo após algumas informações, como o tamanho do arquivo (0), mes (agosto) e nome do arquivo (Caso queira ver o tamanho do arquivo formatado em bytes, Kb ou mb...use: ls -lh);
Dando permissões
Antes de sairmos dando permissões adoidados, vamos conhecer algumas letrinhas. A letra u significa users, a letra g significa group users e a letra o significa Others/Others Users. Sabendo disso, podemos brincar com essas letras. Agora que vc já sabe oque significam as letras de permissões: r, w e x, podemos executa-las com o seguinte comando:
$ sudo chmod u+x meuarquivodeteste.txt
Ao usar o ls -l
, vc terá novas permissões, algo como:-rwxrw-r-- 1 ryandias ryandias 0 ago 7 17:48 meuarquivodeteste.txt
, repare que antes, a primeira coluna era: -rw-, mas agora é -rwx. Quando usamos o simbolo de + junto a uma permissão, estanis dizendo que desejamos adicionar uma permissão, o u(usuário) é a entidade a qual queremos adicionar, caso queira remover basta correr:$ sudo chmod u-x meuarquivodeteste.txt
(Agora no lugar de +, usamos - para remover).
Quero dar todas as permissões a todos os usuários (u, g, o)
Ok! Use:sudo chmod uog+x+w+r meuarquivodeteste.txt
assim, teremos algo como: -rwxrwxrwx
, isso significa que qualquer usuário no sistema tem direito de executar, ler ou até mesmo modificar esse arquivo, ou diretório...
O Fim
Espero poder ter trago pelo menos 1% de conhecimento a vc. Peço um pouco de compreensão caso tenha faltado dizer algo, sou novo nisso de passar o meu conhecimento. Estou pensando em começar a criar uns conteúdos sobre linux com conteúdos bem legais como hierarquia de pastas, conversão de binários para decimal, mais sobre o shell do linux e algumas coisas "menos normais", como o squid, containers sem docker (Processos), comandos e cutucar um pouco das interfaces de cada distro, pretendo postar esses conteúdos no instagram: @ryandias.md