Usuários, grupos e permissões no Linux (Ubuntu)

Ao contrário do que muitos pensam, trabalhar com usuários, grupos e permissões no Linux é bem mais simples do que podem imaginar. Para este tutorial vou utilizar o Ubuntu para demonstrar como as coisas são precisas no Linux, diferente de outros sistemas operacionais pagos e que tornam este processo algo bem mais complexo.

No Linux, todos os diretórios e arquivos são marcados com permissões para seu proprietário, seu grupo e “todos”. Tais permissões são “read” (ler), “write” (escrever) e “execute” (executar). Se pegarmos apenas as iniciais nessa mesma ordem, teremos “rwx”.

Essas permissões têm valores binários que podem ser combinados para determinar diferentes tipos de acessos para diferentes usuários e grupos. Por exemplo, um usuário poderia ler (r) e executar (x) um arquivo, mas não poderia escrever (w) nele, por outro lado, outro usuário poderia ter controle total (rwx) nesse mesmo arquivo, podendo até mesmo apagá-lo da pasta.

Um usuário que tem controle total em determinado arquivo, terá os bits de cada uma das permissões ligados (com valor 1):

rwx
111

Utilizando a conversão de binário para decimal, sabemos que 111 daria 7 (sete), portanto, essa é a maior permissão que um usuário poderia ter em um arquivo ou diretório.

Se um usuário não tem determinada permissão, o bit referente àquela permissão estará desligado (valor 0). Por exemplo, um usuário que não pode escrever em um arquivo ou diretório teria a seguinte permissão:

r-x
101

Novamente, utilizando a conversão de binário para decimal, 101 seria 5.

Como temos três possibilidades diferentes (rwx) e dois estados (0 ou 1), podemos ter 8 combinações diferentes de permissões em arquivos e diretórios Linux. São elas:

rwx
111 = 7 (Ler, escrever e executar)

rw-
110 = 6 (Ler e escrever)

r-x
101 = 5 (Ler e executar)

r--
100 = 4 (Ler)

-wx
011 = 3 (Escrever e executar)

-w-
010 = 2 (Escrever)

--x
001 = 1 (Executar)

---
000 = 0 (Nenhuma permissão)

Observe que um traço “-” representa o bit desligado daquela permissão, ou seja, sem permissão. Além disso, diretórios recebem um “d” inicial. Exemplo:

drwx

Agora que você entendeu como as permissões funcionam, vamos ver como tais permissões são aplicadas a arquivos e pastas.

Permissões para proprietário, grupo e todos

No Linux sempre temos três tipos permissões, que são para o proprietário do arquivo ou diretório (o cara que o criou), para o grupo e para todos. Portanto, temos três combinações de “rwx” divididas em três grupos.

Por exemplo, uma pasta poderia ter a seguinte permissão:

# Exemplo
drwxr-x--- usuário grupo

Veja o exemplo acima detalhado abaixo:

  • d: É um diretório (pasta)
  • rwx: Permissão do proprietário do diretório (7 – controle total)
  • r-x: Permissão do grupo do diretório (5 – Ler e executar)
  • : Permissão para todos (0 – sem premissões)
  • usuario: O Proprietário do arquivo
  • grupo: O grupo do arquivo

Perceba que em uma única linha tudo é descrito para você, ou seja, permissões do proprietário, grupo e todos, além dos nomes do proprietário e do grupo.

Para visualizar as permissões de qualquer coisa dentro do Linux, tanto para arquivos quando diretórios utilizamos o comando “ls -l” ou “ls -l /caminho/da/pasta“.

ls -l /caminho/da/pasta

Veja um exemplo na imagem abaixo:

Listando permissões no Linux

Listando permissões no Linux

Vou pegar uma linha da imagem acima e detalhar para você entender melhor:

-rw-rw-r-- 1 todoespacoonline todoespacoonline 5 Jun 5 4:30 a
^^  ^  ^   ^ ^                ^                ^ ^          ^
||  |  |   | |                |                | |          |
||  |  |   | |                |                | |          Nome do arquivo
||  |  |   | |                |                | Data da última modificação
||  |  |   | |                |                Tamanho do arquivo
||  |  |   | |                Grupo do arquivo ou diretório
||  |  |   | Proprietário do arquivo
||  |  |   Número de links 
||  |  Permissões para "todos" (rwx)
||  Permissões para o grupo (todoespacoonline)
|Permissões para o proprietário do arquivo (todoespacoonline)
Se é um arquivo (-) ou diretório (d)

Isso é exibido para todos os arquivos e diretórios da pasta que você escolheu.

Alterando permissões de arquivos e pastas no Linux

Utilizamos o comando chmod para alterar permissões de arquivos e pastas no Linux. Este comando tem o seguinte formato:

chmod [permissões] [arquivo/diretório] [-R]

Para [permissões] eu devo indicar quais serão as permissões para o proprietário, para o grupo e para todos utilizando os números que representam a permissão que desejo. Por exemplo, se eu quero que o proprietário tenha permissão total, o grupo apenas de leitura e execução e todos nenhuma, eu teria que indicar 750.

Para [arquivo/diretório] eu simplesmente indico o caminho do local onde desejo alterar as permissões.

O [-R] é opcional, caso você esteja alterando permissões de diretórios, ele indicará que o chmod deverá alterar as permissões de todos os arquivos dentro daquele diretório de maneira recursiva. Caso você não o utilize, nenhum arquivo dentro do diretório terá suas permissões alteradas, apenas o diretório pai.

Observação: Somente o Superusuário poderá alterar permissões de arquivos e pastas, portanto, é necessário utilizar sudo antes do comando. Exemplo:

sudo chmod 750 pasta/ -R

Veja um exemplo real na imagem abaixo:

Permissões alteradas para 750

Permissões alteradas para 750

Tudo é bastante preciso no Linux, ou seja, agora que é proprietário daquela pasta terá controle total, que for do grupo daquela pasta terá apenas leitura e execução e que não fizer parte desse círculo não terá permissão nenhuma.

Alterando o proprietário e grupo de arquivos e diretórios

Agora que você já está fera nas permissões do Linux, podemos começar a manipular quem é dono e qual é o grupo de determinado arquivo ou pasta.

Para alterar o proprietário de um arquivo ou pasta qualquer, utilizamos o comando “chown” (change owner). Este comando tem a seguinte sintaxe:

chown [novo proprietário] [caminho/da/pasta/arquivo] [-R]

Para [novo proprietário] utilizamos o nome de usuário do novo proprietário.

Para [caminho/da/pasta/arquivo] indicamos o caminho da pasta ou do arquivo que queremos alterar.

O [-R] serve para pastas e indica “modo recursivo”, ou seja, altere a pasta e todos os arquivos dentro dela. Ele é opcional.

Por exemplo, vou mostrar como está as permissões de uma pasta na imagem abaixo. Repare no proprietário.

Proprietário atual de todos os arquivos dentro da pasta

Proprietário atual de todos os arquivos dentro da pasta

Agora vou executar o seguinte comando:

sudo chown todoespacoonline /home/todoespacoonline/Área\ de\ Trabalho/teste/ -R

Veja agora como ficou o resultado:

Agora temos um novo proprietário

Agora temos um novo proprietário

Agora o usuário “todoespacoonline” é dono da pasta e de todos os arquivos dentro dela.

Para modificar o grupo de arquivos e pastas dentro do Linux, utilizamos o comando “chgrp” (change group) com a seguinte sintaxe:

chgrp [novo grupo] [caminho/pasta/arquivo] [-R]

O [novo grupo] é o nome do novo grupo, [caminho/pasta/arquivo] é o caminho da pasta ou arquivo e [-R] indica para alterar todos os arquivos dentro daquela pasta.

Por exemplo, agora vou alterar apenas o grupo de um único arquivo com o comando:

sudo chgrp todoespacoonline teste/i.jpg

Veja como ficou o resultado:

Grupo do arquivo i.jpg modificado para todoespacoonline

Grupo do arquivo i.jpg modificado para todoespacoonline

Agora o grupo do arquivo i.jpg também é todoespacoonline.

Observação: Sempre que você cria um usuário dentro do Linux, um grupo também será criado com o mesmo nome daquele usuário.

Gerenciando usuários no Linux

Criar usuários no Linux é mais simples ainda, você só precisa digitar:

sudo adduser nomeusuario

E o sistema irá perguntar algumas informações para você. Veja um exemplo na imagem abaixo:

Novo usuário criado no sistema

Novo usuário criado no sistema

Neste processo todo, você já preenche todos os dados daquele usuário, até mesmo a senha para ele. Caso queira alterar a senha desse usuário posteriormente, utilize o comando:

sudo passwd nomeusuario

Veja:

Alterando a senha de um usuário

Alterando a senha de um usuário

E a senha do usuário será alterada de maneira simples assim!

Se você precisa ver todos os usuários presentes no sistema, simplesmente olhe no arquivo /etc/passwd. Por exemplo:

cat /etc/passwd

Assim você vai ver, além dos usuários que você criou, milhares de outros usuários que o sistema e programas utilizam.

cat /etc/passwd

cat /etc/passwd

Para apagar qualquer usuário do Linux, utilize userdel, exemplo:

sudo userdel nomeusuario

Veja:

Apagando um usuário

Apagando um usuário

E pronto, agora aquele usuários não existe mais.

Para adicionar qualquer usuário em um novo grupo, utilize novamente adduser, porém agora mencione o grupo que deseja.

sudo adduser nomeusuario nomegrupo

E agora o usuário”nomeusuario” está no grupo “nomegrupo“.

Por exemplo, se eu quiser dar o privilégio de utilização do “sudo” (superusuário) para qualquer usuário ficaria assim:

sudo adduser nomeusuario sudo

Veja o resultado:

Adicionando um usuário no grupo sudo

Adicionando um usuário no grupo sudo

Tome cuidado com isso, pois o usuário agora poderá executar praticamente tudo dentro do sistema utilizando “sudo comando…“.

Para remover um usuário de qualquer grupo, utilize deluser, veja:

sudo deluser nomeusuario sudo

E agora o usuário não faz mais parte daquele grupo.

Removendo usuário do grupo

Removendo usuário do grupo

Agora vamos ver como gerenciar grupos no Linux.

Gerenciando grupos no Linux

Para criar qualquer grupo no Linux, basta utilizar addgroup, veja:

sudo addgroup financeiro

Veja o resultado:

Criando grupo

Criando grupo

Para apagar qualquer grupo utilize delgroup, veja:

sudo delgroup financeiro

O resultado:

Apagando o grupo

Apagando o grupo

Já falamos como adicionar e remover usuários de um grupo, agora veja como listar todos os usuários que estão no mesmo grupo.

Primeiramente, lembre-se que todos os grupos do Linux estão gravados no arquivo “/etc/group”, portanto, você pode listar os dados desse arquivos assim:

cat /etc/group

E o resultado seria algo parecido com a imagem abaixo:

Listando todos os grupos

Listando todos os grupos

Para listar usuários de um grupo em específico, digite o seguinte:

grep nomegrupo /etc/group

Por exemplo, veja todos os usuários do grupo sudo do meu Ubuntu:

Perceba que os nomes de usuários são separados por vírgula

Perceba que os nomes de usuários são separados por vírgula

Tudo é bem simples e direto assim!

Vídeo tutorial

Abaixo um vídeo tutorial para ajudar ainda mais no seu aprendizado:

Link do vídeo: https://youtu.be/S2h92LNcEz8

Espero ter ajudado!