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

Em vez de uog+x+w+r, também pode ser a+rwx, ou simplesmente +rwx.

E além do - e +, também dá pra usar =. A diferença é que o = limpa as permissões que existiam antes e seta somente o que for indicado, enquanto o + e - adiciona ou remove o que foi indicado, mas sem mexer nas já existentes.

Disclaimer nescessário!!! boa demais. As opções variadas nos dar sabores diferentes. perfeito!!

Cara, você me deu uma ajuda legal. Eu sempre me enrolo com isso, aí eu sempre coloco sudo chmod 7777 file. Parabêns!!!

O problema é que assim vc dá todas as permissões para qualquer usuário, dependendo do arquivo/diretório é uma falha de segurança enorme. Os números funcionam assim: `r` vale 4, `w` vale 2 e `x` vale 1. Então basta somar as permissões que vc quer colocar. Por exemplo, se eu quiser dar permissão de leitura e escrita (`r` e `w`), basta somar 4 e 2, ou seja, 6. E aí vc coloca 3 números, o primeiro é para o usuário dono do arquivo, o segundo é para o grupo e o terceiro é para os outros usuários. Por exemplo, `chmod 640 arquivo` dá permissão de leitura e escrita para o usuário, leitura para o grupo e nenhuma permissão para os demais.
Muito bem colocado!!! boa. Acabei não falando dos números, mas foi um excelente disclaimer!! muito obgdo!!
Uau! fico feliz demais com isso. muito obgdo pelo feedback!!

Po, muito legal a explicação! Vou deixar minha contribuiçãozinha também que acho relevante dizer...

O tal do chmod 777 meuarquivo.txt pode soar estranho ainda, mas vamos lá:

Como o Ryan falou, são três grupos de permissão: do "dono", do "grupo dono", e de "outros". Assim cada 7 (em chmod 777) representa um desses três grupos.

E o que significa o 7 (ou outro número)? Como são 3 permissões disponíveis (entre leitura, escrita e execução) para cada um dos grupos, são sempre 3 permissões exibidas, que podem ser exibidas nesse formato tradicional (rwx) ou em um formato decimal (como no caso o 7), mas é importante saber que elas são representações de um número binário. Portanto cada grupo (usuário, grupo ou outros) possui três bits, sendo um bit para cada permissão, nessa ordem: leitura, gravação, execução. Cada permissão concedida recebe um bit "1", e cada permissão não concedida recebe um bit "0". Portanto, a permissão total (leitura, gravação e escrita) seria: 111 (em binário), que se convertido para decimal é 7!

Assim, alguns exemplos: (Notação normal = Notação decimal = Notação em binário) rwx = 7 = 111 r-x = 5 = 101 r-- = 4 = 100 rw- = 6 = 110

Os bits mais representativos são os da esquerda, então lendo da direita para a esquerda, o primeiro bit tem valor de 1, o segundo tem valor de 2, o terceiro tem valor de 4, e assim por diante.

Espero ter contribuído para oesclarecimento de mais um ponto sobre permissões no Linux.

Que explicação massa!!! Muito obrigado pela contribuição. Rico de detalhes, 0 defeitos <3
Massa foi essa tua explicação acima meu querido! Já tá até salvo aqui para quando alguém perguntar eu passar logo o link :) Abraço! <3

Conhecimento importante para os profissionais da area de TI