Fundamentos de Gerenciamento de Grupos Linux: groupadd, groupmod e Controle de Acesso

Fundamentos de Gerenciamento de Grupos Linux: groupadd, groupmod e Controle de Acesso

O Que Voce Vai Aprender

  • Sintaxe e uso principal de groupadd, groupmod e groupdel
  • Como adicionar e remover membros de grupo com seguranca usando usermod -aG e gpasswd
  • Como ler /etc/group e projetar controle de acesso com grupos

Resumo Rapido

  • Criar um grupo -> groupadd groupname
  • Adicionar um membro -> usermod -aG groupname username (a flag -a e obrigatoria -- omiti-la remove o usuario de todos os outros grupos)
  • Remover um membro -> gpasswd -d username groupname
  • Alteracoes de grupo entram em vigor apos re-login ou execucao de newgrp

O Que e groupadd?

groupadd cria um novo grupo no sistema. E o equivalente do gerenciamento de grupos ao useradd para contas de usuario.

# Uso basico
sudo groupadd developers

# Especificar um GID explicitamente
sudo groupadd -g 1500 developers

# Criar um grupo de sistema (GID abaixo de 1000)
sudo groupadd -r sysgroup

Apos a criacao, o grupo aparece em /etc/group. Verifique com:

grep developers /etc/group
# → developers:x:1500:

Sem -g, o sistema atribui o proximo GID disponivel dentro do intervalo definido em /etc/login.defs (GID_MIN a GID_MAX, tipicamente 1000-60000).

Como Modificar um Grupo com groupmod

groupmod altera o nome ou GID de um grupo.

# Renomear um grupo
sudo groupmod -n newdevelopers developers

# Alterar o GID
sudo groupmod -g 1600 developers

Alterar um GID deixa arquivos existentes com o GID antigo como "orfaos." Apos a alteracao, corrija os arquivos afetados com:

find / -gid OLD_GID -exec chgrp NEW_GID {} \;

Como Excluir um Grupo com groupdel

groupdel remove um grupo de /etc/group.

sudo groupdel developers

Se algum usuario tem developers como seu grupo primario, a exclusao falha. Altere o grupo primario desse usuario primeiro:

# Encontrar usuarios cujo GID primario corresponde a developers
awk -F: '$4 == "1500" {print $1}' /etc/passwd

# Alterar o grupo primario, depois excluir
sudo usermod -g othergroup username
sudo groupdel developers

Como Adicionar ou Remover Membros de Grupo

Adicionando Membros

# usermod -aG (recomendado -- funciona com multiplos grupos)
sudo usermod -aG developers alice

# gpasswd -a (util quando gerenciando grupos diretamente)
sudo gpasswd -a alice developers

A flag -a (append) em usermod -aG e critica. Sem ela, o comando substitui todos os grupos suplementares do usuario:

# Perigoso: remove alice de TODOS os outros grupos e define apenas 'developers'
sudo usermod -G developers alice   # sem flag -a

Este erro remove silenciosamente o usuario de todos os outros grupos a que pertence.

Removendo Membros

sudo gpasswd -d alice developers

Adicionar a Multiplos Grupos de Uma Vez

sudo usermod -aG developers,ops alice

Como Verificar Associacoes de Grupo

Alteracoes de grupo nao se aplicam a sessoes ativas -- e necessario um re-login.

# Grupos do usuario atual
groups

# Grupos de outro usuario
groups alice
id alice

# Verificar /etc/group diretamente
grep developers /etc/group
# → developers:x:1500:alice,bob

Para ativar um novo grupo sem fazer re-login, use newgrp:

newgrp developers

newgrp cria um subshell com o grupo alvo ativo. Digite exit para retornar ao shell original. Nao e adequado para uso dentro de scripts shell.

Entendendo o Formato /etc/group

Cada linha em /etc/group segue este formato:

groupname:password:GID:member-list

Exemplo:

developers:x:1500:alice,bob,carol
  • groupname: developers
  • password: x -- senhas shadow sao armazenadas em /etc/gshadow; este campo raramente e usado
  • GID: 1500
  • member-list: nomes de usuario separados por virgula. Usuarios que tem este como seu grupo primario nao aparecem nesta lista.
# Listar todos os grupos
cat /etc/group

# Ordenar por GID numericamente
sort -t: -k3 -n /etc/group

Projetando Controle de Acesso com Grupos

Grupos sao o mecanismo principal para controlar o acesso a recursos compartilhados. Aqui estao dois padroes praticos.

Padrao 1: Acesso a Diretorio Compartilhado

# Configurar /srv/project para o grupo developers
sudo groupadd developers
sudo mkdir -p /srv/project
sudo chown root:developers /srv/project
sudo chmod 2775 /srv/project   # bit setgid

# Adicionar alice ao grupo
sudo usermod -aG developers alice

O 2 em chmod 2775 e o bit setgid. Novos arquivos criados dentro do diretorio herdam automaticamente o grupo developers, prevenindo fragmentacao de propriedade quando multiplos usuarios trabalham juntos.

Padrao 2: Concedendo Privilegios sudo

No Ubuntu/Debian, adicione o usuario ao grupo sudo:

sudo usermod -aG sudo alice

No CentOS/RHEL/Fedora, use o grupo wheel:

sudo usermod -aG wheel alice

Alteracoes de associacao de grupo entram em vigor somente apos o usuario fazer re-login. Para verificar imediatamente, mude para o usuario com su - alice e execute sudo -l.

<section class="article-conclusion" id="article-conclusion">

Resumo

Tarefa Comando Notas
Criar grupo groupadd groupname GID atribuido automaticamente
Renomear grupo groupmod -n newname oldname GID inalterado
Alterar GID groupmod -g GID groupname Corrija GIDs de arquivos manualmente
Excluir grupo groupdel groupname Falha se e grupo primario de um usuario
Adicionar membro usermod -aG group user Flag -a e obrigatoria
Remover membro gpasswd -d user group Entra em vigor apos re-login
Verificar associacao groups user / id user --

Pontos-chave:

  • Omitir -a de usermod -aG e o erro mais comum no gerenciamento de grupos -- remove silenciosamente o usuario de todos os outros grupos
  • Alteracoes de grupo requerem um re-login, ou use newgrp para ativa-las na sessao atual
  • O bit setgid (chmod g+s) faz diretorios propagarem a propriedade de grupo para novos arquivos automaticamente

</section>