O Linux é um sistema operacional multiusuário, e graças a isso várias pessoas podem estar autenticadas e trabalhando em uma determinada máquina ao mesmo tempo.

Para garantir a segurança, como boa prática usuários não compartilham as credenciais de uma mesma conta, sendo que cada pessoa terá seu próprio usuário de acesso. Isto significa que, as melhores práticas ditam o uso de tantas contas de usuário quantas pessoas precisem de acesso à máquina.

Mas é esperado que dois ou mais usuários precisem compartilhar o acesso a determinados recursos do sistema, como diretórios e arquivos. Sendo assim, é necessário saber como criar e gerenciar usuários e grupos no Linux, para atingir ambos os objetivos - maior segurança com contas individuais, e compartilhamento de recursos entre usuários.

Neste artigo você verá como gerenciar usuários e grupos em distribuições Linux baseadas em Debian, como Ubuntu e Mint, fazendo isso com comandos bash no console do terminal.

Adicionar novo grupo no Linux

Vamos iniciar adicionando um novo grupo no sistema.

A sintaxe padrão é

groupadd <nome-do-grupo>;

Como exemplo vamos criar um grupo que depois usaremos para permitir acesso aos games instalados no sistema:

groupadd games

Adicionar um grupo existente a um usuário Linux

Após ter criado o grupo, ou mesmo para grupos que já existiam no sistema, você pode adicionar os usuários a ele.

É importante que você saiba: um usuário pode estar inserido em vários grupos em um mesmo sistema.

Utilizamos o comando usermod para adicionar um usuário a um grupo já existente, sua sintaxe é:

usermod -a -G <groupname> <username>

O parâmetro -a significa append, isto é, você está solicitando que seja adicionada a informação do grupo ao usuário, sem que os grupos já associados a ele sejam excluídos ou substituídos.

O parâmetro -G significa Lista de Grupos, isto é, permite que você passe uma lista separada por vírgula com o nome de grupos a serem adicionados ao usuário.

Continuando nosso exempo, vamos adicionar o grupo games ao usuário mazer:

usermod -a -G games mazer

Alterar o grupo primário de um usuário

Os usuários em Linux possuem um grupo primário e secundários.

O grupo primário é aquele registrado no arquivo /etc/passwd, configurado quando uma conta é criada. Quando um usuário cria um arquivo, seu grupo primário ou principal é associado ao arquivo.

Por exemplo, uma sequência de comandos para verificar meu usuário, ler sua entrada no /etc/passwd, que mostra o GUID do usuário, e então criar um novo arquivo vazio e listar o mesmo para demonstrar que o grupo principal (mostrado como nome e não o GUID) é associado como permissão ao arquivo:

whoami
  mazer
grep mazer /etc/passwd
  mazer:x:1066:1066:Ademir Mazer Junior:/home/mazer:/bin/bash
             ^
             |
             +-------- grupo principal

touch novoarquivo
ls -l novoarquivo

-rw-rw-r-- 1 mazer mazer 0 Jul 16 15:22 novoarquivo
                   ^
                   |
                   +-------- grupo principal

Muito bem, e se você deseja alterar o grupo principal de seu usuário? Deve utilizar o comando usermod novamente, com a sintaxe:

usermod -g <groupname> <username>

O parâmetro -g (minúsculo) significa id de grupo, isto é, você está indicando o grupo a ser definido como primário para o usuário.

Se quisermos alterar então o grupo primário de mazer para games:

usermod -g games mazer

Consultando os grupos de um usuário

Se desejamos verificar os grupos de um usuário sem os seus ids, usamos a sintaxe:

groups <username>

Por exemplo, para consultar o usuário mazer e seus grupos:

groups mazer
mazer : mazer adm cdrom sudo dip www-data plugdev lpadmin sambashare games

Se desejamos verificar os grupos juntamente com os ids, usamos o comando id:

id <username>

Exemplo para nosso usuário mazer, que mostre os nomes de seus grupos e os repectivos ids:

id mazer
uid=1000(mazer) gid=1000(mazer) grupos=1000(mazer),4(adm),24(cdrom),27(sudo),30(dip),33(www-data),46(plugdev),108(lpadmin),110(sambashare)

Adicionar um novo usuário e definir grupos para ele em um comando

Por fim, se você deseja adicionar um novo usuário ao sistema Linux, e em uma única linha de comando atribuir um grupo, podemos usar a sintaxe:

useradd -g <groupname> username

Um exemplo seria adicionar o usuário marcos ao grupo ftp e na sequência definir sua senha:

useradd -G ftp marcos
passwd marcos

Conclusões

Gerenciar grupos e usuários em Linux é uma tarefa corriqueira para administradores de sistema, e eventualmente necessária para usuários mais avançados.

Apesar de existirem mais situações e comandos disponíveis, estes que apresentei neste artigo devem cobrir o uso mais comum de gerenciamento de grupos em Linux por linha de comando no console do terminal.

Caso precise de uma explicação para um contexto diferente, deixa um comentário para eu complementar o artigo.