Linux > Entendendo as permissões no Linux

2777 Views
Tempo de leitura: 3 Minutos 
Atualizado em:

O permissionamento de arquivos e diretórios no GNU/Linux é baseado em usuários e grupos com permissões ou restrições de leitura, escrita e execução.

Todo arquivo/diretório possui um dono e um grupo. O dono é um usuário do sistema, e o grupo pode conter diversos usuários do sistema. Podemos aplicar permissões para o dono, para o grupo e para quem não for dono nem fizer parte do grupo. Chamamos este terceiro de “outros”.

Portanto, ao aplicarmos permissão para arquivos e diretórios, o faremos considerando esse três elementos: Owner, Group e Others.

Permissões

As permissões do Linux são atribuídas através do comando chmod seguido de um parâmetro que pode ser um número de 3 caracteres com valores de 0 à 7.

Cada um dos três números atribuem, respectivamente, permissão para o dono, grupo e outros.

Por exemplo:

chmod 753 arquivo
      |||_ outros
      ||__ grupo
      |___ dono

As permissões podem ser leitura (“R”, read), escrita (“W”, write), execução (“X”, execution) ou a mistura de algumas dessas permissões e até a ausência de permissão. A ausência de permissão é representada pelo caractere “-“. Cada uma dessas permissões possui um valor numérico.

Leitura (R)
Escrita (W)
Execução (X)
Ausência (-)
4
2
1
0

É importante fixar o que representam as letras R, W e X, além do hífen, para saber identificar a permissão existente em um arquivo ou diretório.

Vamos montar uma permissão para atribuir a um arquivo. Para isso, primeiro, vamos identificar o valor numérico a ser utilizado no comando chmod

Dono
Grupo
Outros
Leitura
Escrita
Execução
Leitura
Escrita
Execução
Leitura
Escrita
Execução
4
2
1
4
2
1
4
2
1
Sim
Sim
Sim
Sim
Não
Sim
Sim
Não
Não
7
5
4

Nosso comando ficará assim:

chmod 754 arquivo

Consultando permissões

Podemos consultar as permissões de arquivos com o comando ls -l e/ou com stats. Vejamos a permissão de um diretório fictício chamado “teste07” usando o comando ls -l teste07:

drwx rw- ---. 2 root impress 4096 Jun  3 13:27 teste07
  |   |   |       |      |_ Grupo do diretório
  |   |   |       |________ Dono do diretório
  |   |   |________________ Permissão de Outros
  |   |____________________ Permissão do Grupo
  |________________________ Permissão do Dono

Neste caso:

Usuário
Permissão Alfanumérica
Conversão de Permissão
Permissão Numérica
Dono:
root
r w x
4+2+1
7
Grupo:
impress
r w –
4+2+0
6
Outros
– – –
0+0+0
0

Portanto, a permissão do diretório “teste07” é 760.

Observação: O amigo leitor pode ter notado que o primeiro conjunto de permissão, no caso a permissão do owner, está “drwx” e não apenas “rwx”. Esse “d” não faz parte da permissão. É um caractere que indica se tratar de um diretório. Se fosse um arquivo seria “-rwx” e se fosse um symlink seria “lrwx”.

Agora ficou fácil, não é?

Alterando permissões de arquivos com chmod:

Nos exemplos anteriores vimos como calcular a permissão de arquivos e diretórios. Para facilitar, vejamos uma relação das permissões em alfanuméricos com seus valores em hexadecimal.

Permissão
Hexadecimal
Descrição da Permissão
– – –
0
Ausência de Permissão
– – x
1
Apenas Execução
– w –
2
Apenas Escrita
– w x
3
Escrita e Execução
r – –
4
Apenas Leitura
r – x
5
Leitura e Execução
r w –
6
Leitura e Escrita
r w x
7
Leitura, Escrita e Execução

Agora vejamos alguns exemplos:

  • Quero setar permissão apenas de leitura para todos:
  • chmod 444 diretorio
  • Quero setar permissão total apenas para o dono:
  • chmod 700 diretorio

    Aplicando permissão recursivamente:

    Podemos aplicar uma permissão recursivamente com o parâmetro “-R” de forma que todo o diretório e subdiretórios e arquivos também recebam esta permissão. Exemplo:

    chmod -R 750 diretorio

    Alterando owner/group com chown:

    Caso queira mudar o dono e grupo de um arquivo/diretório, basta utilizar o comando chown. A sintaxe do comando é esta:

    chown novo-usuario:novo-grupo arquivo

    Exemplo:

    chown wil:impress fotos-praia

    Dica de LPI: O comando chown serve para definir o owner e group de arquivo, mas ele é um comando para definir o owner. Para definir o group existe um comando específico que é o comando chgrp. Então, ao se deparar com perguntas como “Qual é o comando para definir group de um arquivo ou diretório?”, lembre-se disso.

    Alterando owner/group recursivamente:

    Caso queira alterar o owner e group recursivamente, basta utilizar o parâmetro “-R”.

    chown -R wil:impress fotos-praia

    Conclusão

    Como vimos, o permissionamento no GNU/Linux não é um bicho de 7 cabeças. Considerando owner e group, pode-se setar permissões ou restrições de forma que esse arquivo/diretório será acessado somente pelas pessoas corretas para fazer somente aquilo que a permissão lhes permite. Compreender ao menos a teoria do permissionamento do GNU/Linux é fundamental para todos que trabalham com esta plataforma.

    Qualquer dúvida que venha surgir no amigo leitor, estou a disposição.

    Abraços!

    8 - 1

    Thank You For Your Vote!

    Sorry You have Already Voted!