Grupos e Usuários em Linux: O que você precisa saber?
Tags: linux, sysadmin, devops
Published: 2023-09-26 02:20:19

No universo do Linux, os conceitos de grupos e usuários desempenham um papel crucial na administração de sistemas, garantindo a segurança e a gestão das permissões 🐧. 

Neste artigo, vamos desvendar o que são grupos e usuários no Linux de uma maneira fácil de entender, para que, mesmo se você está começando sua jornada no Linux, possa ter um controle melhor sobre quem pode fazer o quê no seu sistema. Vamos começar! 🚀

## Conhecendo as Bases

Os **usuários** nada mais são do que pessoas que interagem com o sistema Linux. Cada usuário possui sua própria identidade, área de trabalho e permissões específicas. É como ter várias contas em um computador, uma para cada pessoa que utiliza o sistema.

Mas você pode estar se perguntando: "Qual a vantagem de ter vários usuários em uma mesma máquina e por que eu iria querer fazer isso?" 

![Gif animado do Batman no formato Cartoon pensativo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdquxlwuqcbviqq8lp5s.gif)

Embora em máquinas pessoais seja comum ter apenas um usuário (você mesmo), a ideia de vários usuários em um sistema brilha em cenários onde várias pessoas precisam acessar o mesmo computador ou servidor. Veja como isso faz sentido:

* **Empresas**: Cada funcionário teria sua conta de usuário para acessar recursos compartilhados e manter seus próprios arquivos privados.

* **Escolas**: Alunos e professores podem ter contas separadas para manter a privacidade de suas notas e materiais de ensino.

* **Servidores da web**: Diferentes equipes, como desenvolvedores, analistas de banco de dados e suporte, podem ter contas separadas para acessar apenas o que é necessário para suas funções.

Essa organização facilita a administração do sistema, permite o compartilhamento controlado de recursos e garante a segurança, pois cada usuário só pode acessar o que lhe é permitido.

Imagine sua máquina como uma casa onde você é o proprietário (admin), mas ocasionalmente recebe visita ou permite que outras pessoas usem algumas áreas. Ter vários usuários permite:

* **Privacidade**: Cada usuário tem sua própria área protegida por senha, mantendo seus arquivos e configurações pessoais seguros.

* **Compartilhamento seletivo**: Você pode compartilhar sua máquina com familiares ou colegas, dando a eles contas de usuário separadas para que usem sem acesso aos seus dados privados.

* **Controle de acesso**: É possível definir permissões para cada usuário, permitindo ou restringindo o acesso a arquivos e programas. Isso é útil em ambientes onde você deseja limitar o que outras pessoas podem fazer.

No entanto, à medida que as necessidades e funções dos usuários se tornam mais complexas, a organização em grupos se torna ainda mais necessária. 

Vamos agora explorar como os grupos de permissões podem simplificar ainda mais essa gestão e garantir que seu sistema Linux funcione de maneira eficiente e segura. 🗃️💻

Enquanto os usuários representam pessoas individuais no Linux, os grupos de permissões funcionam como categorias ou clubes que podem incluir vários usuários com interesses ou necessidades semelhantes.

* **Grupo "Desenvolvedores"**: Este grupo incluiria todos os usuários envolvidos no desenvolvimento de software. Eles podem ter permissões para acessar ferramentas de desenvolvimento específicas e pastas relacionadas.

* **Grupo "Administradores"**: Os administradores, como o nome sugere, são responsáveis por gerenciar o sistema. Eles têm acesso completo para realizar tarefas de manutenção, configuração e administração.

* **Grupo "Usuários Comuns"**: Este grupo é composto por usuários regulares que têm permissões padrão, permitindo apenas o uso cotidiano do sistema.

## Colocando em Prática

Mãos à obra! Aqui, mostrarei como criar usuários, definir senhas, criar um arquivo com conteúdo, criar um grupo, atribuir permissões ao grupo e demonstrar como o acesso é controlado. 


![Thanos sucumbindo com a legenda: "Just Do It"](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g9770oo54nnvyobavf05.gif)

### Criando Usuários

Primeiro, vamos criar dois novos usuários, um chamado `horacio` e outro chamado `rosita`. Existem duas formas comuns de fazer isso:

```bash
sudo useradd horacio

# ou

sudo adduser rosita
```

Note que ambos os comandos, `useradd` e `adduser`, são utilizados para criar novos usuários no sistema Linux, mas diferem em alguns aspectos importantes.

#### useradd
> O comando useradd é uma ferramenta de linha de comando mais básica e direta para adicionar novos usuários ao sistema. Ele realiza a tarefa fundamental de criar um novo usuário, mas não fornece uma interface interativa amigável durante o processo. 

#### adduser
> Por outro lado, o comando adduser é uma ferramenta mais amigável e interativa para criar novos usuários. Ele apresenta uma série de perguntas durante o processo de criação, como o nome completo do usuário, senha e grupos adicionais, tornando a tarefa mais simples para iniciantes.

> O adduser também cuida automaticamente de várias configurações padrão, como a criação de uma pasta inicial para o usuário em `/home` e a atribuição de um shell padrão.

![Execução dos comandos useradd e adduser](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tyns5hh169xagb7rck2l.png)


### Adicionando Senhas aos Usuários

Agora que os usuários estão criados, é importante adicionar senhas a eles para garantir a segurança das contas. Caso você tenha criado seu usuário utilizando o comando `adduser`, esse processo não é necessário, utilize para usuários criados com `useradd`. Você pode fazer isso usando o comando:

```shell
sudo passwd horacio
```

O sistema solicitará que você insira e confirme a senha para o usuário horacio.

### Criando um Arquivo e Controlando o Acesso

Vamos criar um arquivo de exemplo na pasta inicial do usuário horacio:

⚠️ Lembre-se que o usuário horacio foi criado com o comando `useradd`, logo, precisaremos fazer algumas configurações de forma manual.

![Criando a pasta inicial do usuario horacio](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjaegqt4jmx8ippdbgz3.png)

Para criar o diretório inicial, utilize o comando:

```bash
sudo mkdir /home/horacio
```
Com a pasta inicial do novo usuário criada, é importante que você dê as devidas permissões a ele. Certifique-se de ter privilégios administrativos.

Use o comando chown para alterar o proprietário e o grupo do diretório `/home/horacio` para o usuário "horacio" e seu grupo principal.

```bash
sudo chown -R horacio:horacio /home/horacio
```
A opção -R é usada para fazer a alteração recursivamente, o que significa que todos os arquivos e subdiretórios dentro de `/home/horacio` também terão suas permissões atualizadas.

Para garantir que o usuário "horacio" tenha acesso total ao seu diretório pessoal, você pode usar o comando chmod para definir as permissões da seguinte maneira:

```bash
sudo chmod 700 /home/horacio
```

Isso definirá as permissões do diretório `/home/horacio` para que apenas o proprietário (usuário "horacio") tenha acesso total, enquanto o grupo e outros não têm permissões de leitura, gravação ou execução.

Depois de executar esses comandos, o diretório `/home/horacio` deve estar configurado corretamente com as permissões adequadas para o usuário "horacio" acessar e gerenciar seu próprio espaço pessoal. Feito isso, execute os comandos abaixo para entrar como horacio e criar um arquivo:

```bash
su horacio # Entrar como horacio

echo "You Have No Power Here!" > /home/horacio/gandalf-the-gray.txt # Criar arquivo
```

![Resultado da criacao do arquivo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/otpjrn1ju5tf9f3fsla5.png)


Agora, tente acessar esse arquivo usando o usuário rosita. Primeiro, entre como rosita e então tente acessar o arquivo:

```bash
su rosita # Entrando como rosita

cat /home/horacio/gandalf-the-gray.txt
```

Você deve ver uma mensagem informando que o acesso foi negado, porque rosita não tem permissão para acessar o arquivo de horacio.

![Tentando acessar o arquivo de horacio, conectado como rosita](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lrcwaq7ckaig614spjt0.png)

### Criando um Grupo

Vamos criar um grupo chamado "dogs", que pode ser útil em um cenário de colaboração:

```shell
sudo groupadd dogs
```

### Adicionando Permissões ao Grupo

Agora, vamos adicionar permissões ao grupo "dogs" para acessar a pasta do usuário horacio:

```shell
sudo chown :dogs /home/horacio
sudo chmod 770 /home/horacio
```

Isso permite que todos os membros do grupo "dogs" (ainda não adicionados) acessem a pasta do usuário horacio.

### Adicionando Usuários ao Grupo

Agora, vamos adicionar rosita ao grupo "dogs":

```shell
sudo usermod -aG dogs rosita
```

### Testando as Permissões

Agora que rosita faz parte do grupo "dogs", ela deve ser capaz de acessar a pasta de horacio. Tente acessar o arquivo de exemplo novamente:

```shell
cat /home/horacio/gandalf-the-gray.txt
```

![Rosita acessando horacio](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8sfp1ye6pl9xyldn81y2.png)

Você deverá conseguir acessar o arquivo sem problemas. Isso demonstra como as permissões de grupo podem controlar o acesso a recursos em um sistema Linux.

## Considerações Finais

Com esse artigo você pode ver o quão simples é criar e gerenciar grupos e usuários em um sistema Linux com confiança. Essas habilidades essenciais garantem a segurança, organização e eficiência no controle de acessos. Parabéns por ter chegado até aqui! 🚀🐧

### Bônus

Para encerrar este artigo, gostaria de mencionar algumas dicas adicionais:

- **`whoami`**: Use o comando `whoami` para descobrir quem está conectado atualmente.

- **`su` para Alterar Usuário**: O comando `su` permite alternar para outro usuário no sistema com a devida permissão.

- **Permissões**: O sistema de permissões octal no Linux utiliza números de 3 dígitos para representar as permissões de leitura, gravação e execução em um arquivo ou diretório. Cada dígito representa um conjunto de permissões: o primeiro para o **proprietário**, o segundo para o **grupo** e o terceiro para **outros**. O número "7" concede permissão total (leitura, gravação e execução), "5" concede leitura e execução, "4" concede apenas leitura, "0" nega todas as permissões. Por exemplo, "770" significa permissão total para proprietário e grupo, enquanto nega todas as permissões para outros.

Com isso, você pode ter uma boa visão sobre grupos e usuários no Linux, obrigado e até a próxima! 👋