Permissões em Linux

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:

Não foi fornecido texto alternativo para esta 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:

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem
Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

# 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:

Não foi fornecido texto alternativo para esta imagem

Para cada usuário criado com o comando adduser um diretório também é criado, atente-se as permissões aplicadas:

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

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.

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

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:

Não foi fornecido texto alternativo para esta imagem

Aplicando a permissão:

# chmod o+w /home/pedro

Não foi fornecido texto alternativo para esta imagem

Agora vamos testar a criação de um diretório na pasta do Pedro, usando o usuário Pedro e Thayna!

Não foi fornecido texto alternativo para esta imagem

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

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *