Fundamentos de Gerenciamento de Grupos Linux: groupadd, groupmod e Controle de Acesso
O Que Você Vai Aprender
- Sintaxe e uso principal de
groupadd,groupmodegroupdel - Como adicionar e remover membros de grupo com segurança usando
usermod -aGegpasswd - Como ler
/etc/groupe projetar controle de acesso com grupos
Resumo Rápido
- Criar um grupo ->
groupadd groupname - Adicionar um membro ->
usermod -aG groupname username(a flag-aé obrigatória -- omiti-la remove o usuário de todos os outros grupos) - Remover um membro ->
gpasswd -d username groupname - Alterações de grupo entram em vigor após re-login ou execução de
newgrp
O Que é groupadd?
groupadd cria um novo grupo no sistema. É o equivalente do gerenciamento de grupos ao useradd para contas de usuário.
# 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
Após a criação, o grupo aparece em /etc/group. Verifique com:
grep developers /etc/group # → developers:x:1500:
Sem -g, o sistema atribui o próximo GID disponível 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 "órfãos." Após a alteração, 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 usuário tem developers como seu grupo primário, a exclusão falha. Altere o grupo primário desse usuário 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 developersComo 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 é crítica. Sem ela, o comando substitui todos os grupos suplementares do usuário:
# 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 usuário de todos os outros grupos a que pertence.
Removendo Membros
sudo gpasswd -d alice developers
Adicionar a Múltiplos Grupos de Uma Vez
sudo usermod -aG developers,ops alice
Como Verificar Associações de Grupo
Alterações de grupo não se aplicam a sessões ativas -- é necessário 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. Não é 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 são armazenadas em/etc/gshadow; este campo raramente é usado - GID:
1500 - member-list: nomes de usuário separados por vírgula. Usuários que têm este como seu grupo primário não 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 são o mecanismo principal para controlar o acesso a recursos compartilhados. Aqui estão dois padrões práticos.
Padrão 1: Acesso a Diretório 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 é o bit setgid. Novos arquivos criados dentro do diretório herdam automaticamente o grupo developers, prevenindo fragmentação de propriedade quando múltiplos usuários trabalham juntos.
Padrão 2: Concedendo Privilégios sudo
No Ubuntu/Debian, adicione o usuário ao grupo sudo:
sudo usermod -aG sudo alice
No CentOS/RHEL/Fedora, use o grupo wheel:
sudo usermod -aG wheel alice
Alterações de associação de grupo entram em vigor somente após o usuário fazer re-login. Para verificar imediatamente, mude para o usuário com su - alice e execute sudo -l.
<section class="article-conclusion" id="article-conclusion">