Em ambientes Linux, a gestão de usuários e grupos é fundamental para a segurança e a organização das permissões de acesso aos recursos do sistema. Compreender como adicionar usuários a grupos ou modificar as atribuições de grupos para usuários existentes é uma habilidade essencial para administradores de sistemas. Este guia explora os comandos primários para essas operações: useradd e usermod, além de elucidar os conceitos de grupos primários e suplementares.
O sistema de gerenciamento de usuários do Linux distingue dois tipos de associações de grupo: o grupo principal (ou primário) e os grupos suplementares (ou adicionais). Cada usuário deve pertencer a um único grupo principal, que é normalmente criado automaticamente com o mesmo nome do usuário. Além disso, um usuário pode ser membro de múltiplos grupos suplementares, o que estende suas permissões de acesso a arquivos e diretórios compartilhados por esses grupos. As informações detalhadas de usuários e grupos são armazenadas nos arquivos /etc/passwd, /etc/shadow (para senhas) e /etc/group, respectivamente.
Criação de Novo Usuário e Atribuição a Grupos Suplementares
Para adicionar um novo usuário e associá-lo a um ou mais grupos suplementares, utiliza-se o comando useradd com a opção -G (maiúsculo). Se o grupo de destino ainda não existir, ele deve ser criado previamente.
Vamos considerar a criação de um usuário chamado devops_user e a inclusão dele ao grupo engenharia. Primeiramente, é prudente verificar se o grupo engenharia já existe no sistema. Esta verificação é geralmente realizada com permissões de superusuário (root).
# grep engenharia /etc/group
Se o comando não retornar nenhuma saída, o grupo precisa ser criado. Utilize groupadd para isso:
# groupadd engenharia
Agora, podemos criar o usuário devops_user e adicioná-lo ao grupo engenharia como um grupo suplementar:
# useradd -G engenharia devops_user
Após a criação, é crucial definir uma senha para o novo usuário:
# passwd devops_user
Para confirmar as associações de grupo do novo usuário, o comando id é bastante útil:
# id devops_user
A saída esperada mostrará o UID (User ID), GID (Group ID do grupo primário) e uma lista dos grupos aos quais o usuário pertence. Por exemplo:
uid=1001(devops_user) gid=1001(devops_user) groups=1001(devops_user),1002(engenharia)
Note que devops_user foi criado com seu próprio grupo principal (também chamado devops_user por padrão) e foi adicionado ao grupo engenharia como suplementar. Para adicionar o usuário a múltiplos grupos suplementares simultaneamente, basta separar os nomes dos grupos por vírgulas, sem espaços:
# useradd -G engenharia,auditoria,controle_qualidade devops_user
Definindo o Grupo Principal para um Novo Usuário
Diferente da opção -G, que adiciona a grupos suplementares, a opção -g (minúsculo) do comando useradd define o grupo principal de um novo usuário. Isso significa que o GID do usuário será o GID do grupo especificado.
Para criar o usuário sysadmin e fazer com que seu grupo principal seja infraestrutura:
# useradd -g infraestrutura sysadmin
# id sysadmin
A saída do comando id confirmaria essa associação, mostrando infraestrutura como o grupo principle:
uid=1003(sysadmin) gid=1004(infraestrutura) groups=1004(infraestrutura)
É importante que o grupo especificado com -g já exista no sistema.
Modificando Atribuições de Grupo para Usuários Existentes
Para usuários já existentes, o comando usermod é a ferramenta ideal para alterar as associações de grupo. Ele permite adicionar um usuário a grupos suplementares adicionais ou mudar seu grupo principal.
Adicionando um Usuário Existente a Grupos Suplementares
Se quisermos adicionar o usuário sysadmin a um grupo suplementar existente, por exemplo, seguranca, sem remover suas associações de grupo existentes, utilizamos usermod com as opções -a (append) e -G:
# usermod -a -G seguranca sysadmin
# id sysadmin
A opção -a é crucial aqui, pois sem ela, a opção -G sobrescreveria todos os grupos suplementares existentes do usuário, deixando-o apenas no grupo especificado.
Alterando o Grupo Principal de um Usuário Existente
Para mudar o grupo principal de um usuário, utiliza-se a opção -g com usermod. Por exemplo, para mudar o grupo principal de sysadmin para suporte:
# usermod -g suporte sysadmin
# id sysadmin
Removendo um Usuário de um Grupo Suplementar
Para remover um usuário de um grupo suplementar específico, o comando gpasswd com a opção -d (delete) é o mais adequado. Por exemplo, para remover devops_user do grupo auditoria:
# gpasswd -d devops_user auditoria
Note que este comando não pode ser usado para remover um usuário do seu grupo principal.
Ferramentas Comuns para Gerenciamento de Usuários e Grupos
Além dos comandos principais abordados, o Linux oferece uma gama de utilitários para a administração completa de usuários e grupos:
useradd: Cria novos usuários no sistema.adduser: Um script de alto nível que simplifica a criação de usuários, geralmente interagindo com o usuário para obter informações.passwd: Define ou altera a senha de um usuário.usermod: Modifica as propriedades de uma conta de usuário existente, como nome de login, diretório home, shell e associações de grupo.id: Exibe informações de ID (UID e GID) e grupos aos quais um usuário pertence.su: Permite alternar para outro usuário (ou root) no terminal atual.sudo: Permite que usuários autorizados executem comandos como outro usuário (geralmente root), sem a necessidade de conhecer a senha do usuário alvo, dependendo da configuração em/etc/sudoers.visudo: Edita o arquivo de configuração/etc/sudoersde forma segura.
Comandos para Grupos:
groupadd: Cria um novo grupo.groupdel: Exclui um grupo existente.groupmod: Modifica as propriedades de um grupo existente, como o nome ou GID.groups: Lista os grupos aos quais o usuário atual (ou um usuário especificado) pertence.gpasswd: Gerencia os membros de um grupo e suas senhas (para grupos que podem ter senhas).
A correta configuração de usuários e grupos é essencial para implementar um modelo de segurança robusto. Por exemplo, em um servidor web como LAMP, um usuário administrativo (digamos, adminweb) pode precisar modificar arquivos pertencentes ao usuário apache. Adicionar adminweb ao grupo apache (ou um grupo comum que ambos compartilham) permite que adminweb edite esses arquivos sem comprometer a segurança global do sistema ao conceder privilégios de root.