Olá!
Hoje vou abordar sobre permissões no Linux! Se você trabalha em um ambiente que utiliza Linux ou até mesmo faz o uso dele no dia a dia, por algum motivo deve ter se deparado com essa imagem:
E se você não entendeu ou ainda não entende o que esse monte de letras (na marcação em vermelho) significa, fique tranquilo pois é normal, apenas ignorei por um período como usuário, mas como um Administrador de Sistemas Operacionais GNU/Linux tive que correr atrás para entender pois é essencial.
Neste artigo pretendo ser simplista para que você leitor (novo em ambientes GNU/Linux) possa entender e praticar e ter o conceito base sobre permissões e conseguir atuar seja em casa ou no trabalho. Para os veteranos, espero poder agregar um pouco mais, e estou aberto a feedbacks sobre qualquer ponto ou equívocos! No final do artigo, listarei comandos não explicados.
Quero poder confortá-lo afirmando que por mais assustador que pareça, trabalhar com permissões em Linux é tranquilo, porém um grande problema quando mal aplicado. Isso envolve outros aspectos mais voltado a segurança e não é o nosso foco!
Quando realizamos a criação de um diretório ou arquivo ambos recebem uma permissão automaticamente definida pelo “umask” (User Mask – Máscara de Usuário, mas por ora iremos ignorar esse comando/função para não estender o assunto principal) e podemos ver isso criando um diretório:
Mas é importante informar que as permissões aplicadas acima dizem respeito a um usuário “não root” que não possui acessos privilegiados, veja quando criado um diretório com acesso a conta root:
Arquivos e diretórios criados pelo root tende a ser mais restritivo comparado ao criado por um usuário comum.
Quando falamos em permissões já definidas automaticamente pelo sistema ela muda entre usuário comum e root e isso é válido para criação de arquivos:
Note, estou conectado com o usuário ‘eduardo’ e podemos ver a seguinte “configuração” de permissionamento para o diretório ‘Eduardo’
# drwxrwxr-x
Vamos entender essa saída acima!
d = Diretório
r = Leitura (Read)
w = Escrita (Write)
x = Execução (Execution)
Na coluna de permissão vou trabalhar com 4 campos conforme a imagem a seguir:
Primeiro campo: (File Type) informa o tipo de arquivo como o próprio nome já diz (no Linux temos outros valores para esse campo, deixarei links de referência) e na saída do meu comando ‘ls -l’ vimos que se trata de um diretório, logo a saída foi drwxrwxr-x
Segundo campo: (Owner) se trata do proprietário do diretório (drwxrwxr-x).
Terceiro campo: O grupo (Group) do usuário que criou a pasta (drwxrwxr-x).
Quarto campo: Outros usuários (Other Users) que diz respeito as permissões dos outros usuários ao diretório/arquivo criado (drwxrwxr-x).
Essas informações são o básico para seu início no entendimento de permissões. Sabendo “ler” o que o primeiro campo da saída do comando ls -l nos diz, podemos avançar para etapa de aplicar e ajustar as permissões conforme a necessidade.
APLICANDO PERMISSÕES
Para aplicarmos permissões neste primeiro artigo vamos utilizar o método que vou nomeá-lo como [Permissão por Letras], pois ficará mais fácil a compreensão.
(!) Existe formas diferente para aplicação de permissionamento em sistemas Linux
Para aplicar permissões em arquivos e diretórios iremos utilizar o comando CHMOD. Temos o comando CHOWN para alterar as permissões de proprietário e grupo de arquivo/diretório veja em vermelho os campos que podemos alterar:
# chown à Define quem é o proprietário e grupo do Arquivo.
# chmod à Define quem tem permissão para (ler e editar) o Arquivo/Diretório.
Estou usando uma máquina virtual com o S.O Kali Linux mas você pode usar outra distribuição! Vamos realizar alguns testes para melhor entendimento no assunto
Realizei a criação de alguns usuários (eduardo, joaquim e thayna) para os exemplos:
Para cada usuário criado com o comando adduser um diretório também é criado, atente-se as permissões aplicadas:
Cada usuário tem direito de atuar (ler, escrever e executar) em seu respectivo diretório pois, -|rxw|—|— isso significa que ninguém mais com exceção do usuário root (ou usuário com privilégios aumentados) podem acessar o diretório de outro usuário, muito menos ler e gravar, vamos ao exemplo:
Usuário Joaquim tentando acessar o diretório do usuário Pedro:
Veja a saída do comando “cd pedro”, Permissão Negada para acessar a pasta, e o motivo é devido a não permissão de execução, vamos agora aplicar a permissão de execução para o diretório do usuário Pedro.
Explicando a imagem acima, basicamente foi realizado:
1. O acesso ao usuário Root para que pudéssemos aplicar a permissão de execução “x” a pasta Pedro.
2. Verificado as permissões da pasta do usuário Pedro com o comando “ls -l”.
3. Usado o comando CHMOD para alterar os atributos de permissões da pasta Pedro.
4. Feito o login na conta do usuário Joaquim
5. Feito o acesso a pasta do Pedro
Podemos notar na imagem que não recebemos uma mensagem de “Permissão Negada” e isso acontece devido a permissão de execução (x) aplicada no 3 campo de permissões ( -|—|—|–x ) que representa (Other Users) outros usuários.
Vamos entender o comando CHMOD:
# chmod <u,g,o><+,-><rwx>
Quando utilizamos o comando chmod devemos informar quais atributos e para qual “campo”(proprietário, grupo ou outros) queremos alterar as permissões, e em seguida informar se queremos adicionar ou remover (+ ou -) atributos de leitura, escrita e execução (rwx) no arquivo ou diretório! No exemplo da imagem informamos que, a pasta [pedro] deveria permitir a execução a pasta de outros usuários (joaquim)
# chmod o+x /home/pedro
(!) Importante se atentar ao caminho do diretório/arquivo ao qual se pretende aplicar ou remover permissões, prefira sempre usar o caminho absoluto*
Agora que aplicamos a permissão de execução será que podemos ver o que existe dentro da pasta do usuário pedro? Se a sua resposta for não, você acertou, veja:
A permissão de execução lhe dá o direito de acessar o diretório, mas não de ler o conteúdo que existe dentro dela. Para que seja possível realizar a leitura da pasta, iremos aplicar a permissão de leitura a pasta para outros usuários
Para aplicar a permissão de leitura (r) seguiremos executando o comando anterior, mas alterando o valor de atributo:
# chmod o+r /home/pedro
Veja o resultado do comando:
Agora com a permissão de leitura (r) podemos “enxergar” os arquivos dentro do diretório. Essa permissão é autoexplicativa, nos permite “ver o que existe dentro do diretório, ou até mesmo ler um arquivo com comandos como “cat” ou editor de texto.
Para finalizarmos, vamos aplicar a permissão de gravação (w) ou se preferir, permissão de escrita, onde nos dará privilégios para poder criar ou remover arquivos/diretórios.
Seguiremos com o mesmo comando, mas se atentando novamente ao atributo, e sem esquecer também é claro, dos grupos (Owner, Group e Others Users), e neste exemplo estou aplicando para o grupo Other Users!
# chmod o+w /home/pedro
Só para validarmos, se acessarmos o diretório do Pedro, não será possível criar um diretório/arquivo dentro dele, veja:
Aplicando a permissão:
# chmod o+w /home/pedro
Agora vamos testar a criação de um diretório na pasta do Pedro, usando o usuário Pedro e Thayna!
Perfeito! Como podemos ver, agora podemos ler, gravar e executar dentro da pasta Pedro de qualquer usuário criado no sistema!
Lembrando, esse tutorial é apenas para entendermos como aplicarmos permissões, mas em um sistema em produção as permissões devem ser bem aplicadas. Um caso em que você pode aplicar permissões de forma mais abrangente, seria em uma pasta Pública. Em outros casos, prefira restringir o máximo o acesso a diretórios.
Caso tenha chegado ao final do artigo, quero agradecer a leitura, e espero ter contribuido de alguma forma!
Em breve volto com mais!
Comandos Usados
su – Permite se conectar em outro usuário no terminal.
mkir – Criação de pasta
touch – Criar arquivos
ls -l – Listar conteudo de um diretório em formato de lista
chmod – Altera os atributos de permissão de cada pasta/arquivo (rwx)
Deixe um comentário