Atualizado: 24/10/2024

Gerenciando Grupos - Linux

No Linux, um usuário pode ser membro de diferentes grupos. Antes de tudo, cada usuário tem pelo menos um grupo principal. (Se um usuário não tiver um grupo principal, ele não poderá entrar no sistema). Normalmente, ao criar um usuário, opara ele é atribuído um grupo principal com o mesmo nome.

Além disso, o usuário pode pertencer a grupos adicionais. A diferença mais importante entre o grupo principal e outros grupos é que o grupo principal automaticamente se torna o grupo proprietário de qualquer novo arquivo criado pelo usuário.

Obtendo o Grupo

O identificador do grupo principal ou GID do usuário é armazenado no quarto campo do arquivo /etc/passwd. Por exemplo, obtenha informações sobre o usuário superuser1 deste arquivo:

programicio@Programicio:~$ sudo grep superuser1 /etc/passwd
superuser1:x:1001:1001::/home/superuser1:/bin/sh

Aqui, vemos que o grupo do usuário é 1001. Vamos obter apenas o valor do quarto campo:

programicio@Programicio:~$ sudo grep superuser1 /etc/passwd | cut -d : -f 4
1001

O comando groups permite obter todos os grupos do usuário. Este comando recebe o nome do usuário como argumento. Por exemplo, obtenha a lista de grupos do usuário root:

programicio@Programicio:~$ groups root
root : root

Como podemos ver, root pertence ao grupo com o mesmo nome. Se o nome não for especificado, é exibida a lista de grupos do usuário atual:

programicio@Programicio:~$ groups
programicio adm cdrom sudo dip plugdev users lpadmin

Adicionando um Grupo com groupadd

O comando groupadd adiciona um novo grupo ao sistema. Ele tem a seguinte sintaxe:

groupadd [options] GROUP

O parâmetro obrigatório GROUP é o nome do grupo. Também podem ser passados parâmetros opcionais, dos quais destacamos os seguintes:

  • -g, --gid GID: define o GID para o novo grupo.

  • -p, --password PASSWORD: aplica uma senha para o novo grupo.

  • -U, --users USERS: define a lista de usuários membros deste grupo.

Por exemplo, vamos criar o grupo developers:

sudo groupadd developers

Obtendo Grupos

Todos os grupos criados são armazenados no arquivo /etc/group. Se o abrirmos, veremos um conteúdo semelhante ao seguinte:

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
.................
programicio:x:1000:
superuser1:x:1001:
developers:x:1002:

Cada linha no arquivo descreve um grupo específico e é composta por quatro campos separados por dois pontos:

  • O primeiro campo representa o nome do grupo.

  • O segundo campo armazena a senha do grupo (o caractere ! significa que a senha não é permitida para este grupo). Na maioria dos grupos, o campo de senha contém o símbolo x, o que indica que a informação sobre a senha do grupo está armazenada no arquivo /etc/gshadow. No entanto, na prática, senhas de grupos são raramente usadas, e em algumas distribuições Linux, o arquivo /etc/gshadow nem sequer existe.

  • O terceiro campo contém o identificador único do grupo ou GID.

  • O último campo contém os nomes dos membros do grupo (apenas para usuários para os quais este não é o grupo principal).

Quando um usuário cria um arquivo, seu grupo principal é automaticamente atribuído como grupo proprietário do arquivo. Isso significa que todos os membros de um grupo geralmente podem acessar o arquivo.

Por Que Usar uma Senha de Grupo?

Se um usuário quiser criar arquivos cujo grupo proprietário seja diferente do grupo principal, ele pode usar o comando newgrp. Por exemplo, newgrp developers define developers como o grupo principal do usuário. Este comando funcionará sem problemas se o usuário for membro do grupo developers. No entanto, se o usuário não for membro desse grupo, o console solicitará que ele insira a senha do grupo.

Verificando a Existência de um Grupo

Podemos verificar a existência de um grupo usando o comando cat /etc/group | grep nome_do_grupo:

programicio@Programicio:~$ cat /etc/group | grep developers
developers:x:1002:

Aqui, vemos que o GID do grupo developers é 1002.

Adicionando um Usuário a um Grupo

Por exemplo, digamos que anteriormente criamos um usuário superuser1:

sudo useradd superuser1

Vamos adicionar esse usuário ao grupo developers:

programicio@Programicio:~$ sudo usermod -aG developers superuser1
programicio@Programicio:~$ id superuser1
uid=1001(superuser1) gid=1001(superuser1) groups=1001(superuser1),1002(developers)

Ao verificar o grupo developers, veremos que há um novo usuário:

programicio@Programicio:~$ cat /etc/group | grep developers
developers:x:1002:superuser1

Ao verificar o grupo developers, veremos que há um novo usuário:

programicio@Programicio:~$ cat /etc/group | grep developers
developers:x:1002:superuser1

Modificando um Grupo com groupmod

O comando groupmod altera um grupo existente:

groupmod [options] GROUP

O parâmetro obrigatório GROUP é o nome do grupo. Também podem ser passados parâmetros opcionais, entre os quais destacamos os seguintes:

  • -a, --append: adiciona os usuários especificados na opção -U ao grupo, sem remover os membros já existentes.

  • -g, --gid GID: altera o identificador do grupo para o GID especificado.

  • -n, --new-name NEW_GROUP: muda o nome do grupo para NEW_GROUP.

  • -p, --password PASSWORD: altera a senha do grupo.

  • -U, --users USERS: define a lista de usuários membros do grupo.

Por exemplo, para mudar o nome do grupo developers para testers:

sudo groupmod -n testers developers

Verificando a Integridade do Grupo com grpck

O comando grpck verifica a integridade dos grupos. Ele assegura que todas as grupos listadas no arquivo /etc/group tenham entradas válidas no arquivo de senhas /etc/passwd. O comando é executado da seguinte forma:

sudo grpck -r /etc/passwd

Removendo um Grupo com groupdel

O comando groupdel remove um grupo:

groupdel [options] GROUP

O parâmetro obrigatório GROUP é o nome do grupo. Por exemplo, para remover o grupo testers:

sudo groupdel -f testers

A opção -f permite forçar a remoção do grupo, mesmo que seja o grupo principal de algum usuário.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com