Fundamentos de Gerenciamento de Grupos Linux: groupadd, groupmod e Controle de Acesso
O Que Voce Vai Aprender
- Sintaxe e uso principal de
groupadd,groupmodegroupdel - Como adicionar e remover membros de grupo com seguranca usando
usermod -aGegpasswd - Como ler
/etc/groupe projetar controle de acesso com grupos
Resumo Rapido
- Criar um grupo ->
groupadd groupname - Adicionar um membro ->
usermod -aG groupname username(a flag-ae 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 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 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">