Como listar todos os utilizadores de um grupo no Linux

Laptop Linux mostrando um prompt do bash

No Linux, os ficheiros têm três conjuntos de permissões. Um conjunto é para o grupo do ficheiro. Antes de alocar um ficheiro a um grupo, tu pode verificar quem são os membros do grupo.

Permissões de ficheiros e diretórios

ficheiros e diretórios no Linux têm  um conjunto de permissões  para o proprietário, outro conjunto para o grupo ao qual o ficheiro está alocado e permissões para todos que não estão em uma das duas categorias anteriores.

Cada conjunto de permissões define se os membros dessa categoria podem ler, gravar ou executar o ficheiro. No caso de um diretório, a ação de execução equivale a ser capaz de

 cd 

no diretório.

O grupo padrão para um ficheiro ou diretório é o grupo padrão do proprietário. Geralmente é  a pessoa que o criou . As permissões do grupo são usadas para permitir que um conjunto de utilizadores tenha acesso controlado aos ficheiros e diretórios dos outros membros desse grupo.

Por exemplo, tu pode ter uma equipe de desenvolvedores, uma equipe de documentação, uma equipe de pesquisa e assim por diante. Os membros de cada equipe podem ser  adicionados a um grupo com nome adequado , para ajudar na colaboração. Os utilizadores podem estar em vários grupos ao mesmo tempo.

É um esquema simples, mas robusto. Mas se seus ficheiros forem confidenciais, tu poderá se sentir mais feliz verificando quem são os membros do grupo antes de compartilhar seu trabalho com eles. Existem diferentes maneiras de fazer isto. Mas tome nota. Os dois métodos recomendados com mais frequência são problemáticos.

O ficheiro /etc/groups

O ficheiro “/etc/group” contém dois pontos “

 : 

” lista delimitada de grupos e membros do grupo. Cada linha possui quatro campos.

  • Nome : O nome exclusivo do grupo.
  • palavra-passe : Não usada. isto sempre conterá “x”.
  • ID do grupo : o identificador exclusivo do grupo.
  • utilizadores : uma lista delimitada por vírgulas dos membros do grupo. A lista geralmente está vazia para contas de sistema e daemon.
Recomendado:  Como limpar cookies e dados de sites no Android

Para despejar o conteúdo do ficheiro na janela do terminal, tu pode usar

 cat 

, mas é mais conveniente poder percorrer o conteúdo do ficheiro com less.

menos /etc/grupo
Usando cat para ver o conteúdo do arquivo /etc/group

A maioria das entradas no topo da lista não tem membros, embora o grupo “adm” tenha dois e o grupo “cdrom” tenha um.

A primeira parte do arquivo /etc/groups no visualizador de menos arquivos

Se quisermos descobrir os grupos em que um utilizador específico está, podemos usar greppara pesquisar entradas com o nome da conta do utilizador. Esta não é a nossa tarefa em mãos. Queremos ver todos os membros de um grupo, não os grupos aos quais uma pessoa pertence. Mas é instrutivo darmos uma olhada.

grep "dave" /etc/group
A lista de grupos dos quais o usuário Dave é membro

As entradas que contêm a string “dave” são listadas para nós. E escondido entre eles está um sinal de que as coisas podem não ser tão simples como pensávamos.

Quando um utilizador é adicionado ao Linux , a ação padrão é colocá-lo em um grupo com o mesmo nome de sua conta de utilizador. Este é o seu grupo principal. Quaisquer outros grupos aos quais eles são adicionados são conhecidos como grupos secundários.

O problema é que os utilizadores não estão listados como membros de seus grupos primários. É por isto que o grupo “dave” não mostra nenhum membro, embora o utilizador “dave” seja membro desse grupo.

É claro que os administradores do sistema podem alterar o grupo principal de qualquer utilizador para qualquer outro grupo. isto significa que um utilizador pode ser membro de qualquer grupo, mas não será listado como tal no ficheiro “/etc/group”. este é um problema.

A segunda questão é que o ficheiro “/etc/group” não é uma única fonte de verdade. As instalações modernas do Linux podem armazenar informações de utilizadores e grupos em mais locais do que “/etc/passwd” e “/etc/group”, especialmente em situações corporativas onde serviços como o Lightweight Directory Access Protocol são  implantados  . Ao olhar apenas para um lugar, tu pode não estar vendo o quadro geral.

Em nosso cenário de teste, criamos quatro grupos para um departamento de desenvolvimento. Eles são:

  • resteam : A equipe de pesquisa.
  • devteam : A equipe de desenvolvimento.
  • pvqteam : A equipe de verificação e qualidade do produto.
  • docteam : A equipe de documentação.
Recomendado:  Olá, Microsoft, pare de instalar aplicativos no meu PC sem perguntar

Adicionamos pessoas a essas equipes. Algumas pessoas estão em mais de uma equipe. Se abrirmos o ficheiro “/etc/group” lesse rolarmos até o final do ficheiro, veremos os novos grupos e membros do grupo. Pelo menos tantos membros quanto o ficheiro “/etc/group” conhece.

A parte inferior do arquivo /etc/group no visualizador de menos arquivos

Se quisermos extrair um único grupo, podemos pesquisar usando grep. O sinal de intercalação ” ^” representa o início de uma linha.

grep "^devteam" /etc/group
Usando grep para extrair os membros de um único grupo

isto extrai a entrada “devteam” do ficheiro e lista todos os membros do grupo. Ou não?

O comando getent

O getentcomando verifica vários bancos de dados em busca de informações de grupos de utilizadores, não apenas “/etc/group”. Usaremos getentpara nos mostrar os grupos de utilizadores.

grupo getente
Usando getent para listar todos os grupos definidos

Usar getentcom a group opção produz — nesta máquina de teste — os mesmos resultados que usar o ficheiro “/etc/group”. isto ocorre porque não estamos usando LDAP ou qualquer outro serviço de nomenclatura centralizado. Portanto, não há outras fontes para getentreferência.

A saída do grupo getent mostrando os grupos e membros

Não é nenhuma surpresa, então, que os resultados correspondam aos do ficheiro “/etc/group”. Talvez o que estejamos vendo realmente seja a realidade da situação. Talvez tudo seja simples e – neste computador – o que tu vê é o que tu obtém? Vamos reservar um julgamento sobre isto.

O getentcomando pode analisar um único grupo para nós. Veremos o grupo “devteam”.

equipe de desenvolvimento do grupo getent
Usando o grupo getent para extrair os detalhes de um único grupo

Obtemos exatamente os mesmos resultados de antes. Porém, existe uma maneira de ir mais fundo.

O comando da tampa

O lidcomando faz parte da libusercoleção de ferramentas. Já estava instalado em nosso computador de teste Fedora 36, ​​mas teve que ser instalado no Ubuntu 22.04 e Manjaro 21.

Além disso, o comando é chamado lidno Fedora e no Manjaro, mas no Ubuntu tu precisa usar libuser-lid.

Para instalar o comando no Ubuntu, digite:

sudo apt instalar libuser
Instalando o libuser no Ubuntu

No Manjaro, libuseré instalado a partir do AUR, então tu precisará usar seu auxiliar AUR favorito. Nós usamos yay.

olá, libuser
Instalando o libuser no Manjaro

tu pode usar libuser-lidpara exibir informações de grupo sobre grupos ou utilizadores. Para mostrar os grupos em que um indivíduo está, passe o nome da conta de utilizador na linha de comando. No Fedora e Manjaro lembre-se de usar lidem vez de libuser-lid.

sudo libuser-lib dave
Usando libuser-lid para mostrar os grupos dos quais o usuário Dave é membro

Para ver os membros de um grupo, use a -gopção (grupo) junto com o nome do grupo.

sudo libuser-lid -g devteam
usando libuser-lid para listar os membros do grupo devteam

Eis que um utilizador chamado “francis” apareceu como membro da lista. Esta é a primeira vez que o vemos. Ele não está listado em “/etc/group” e getenttambém não o descobriu.

Recomendado:  Como desativar a câmera no ponto de eco

Vejamos alguns utilizadores com o groupscomando.

grupos Abigail
grupos hayden
grupos francisco
Usando o comando groups para uma seleção de usuários
  • O utilizador “abigail” está em um grupo chamado “abigail” e em dois outros grupos, “resteam” e “devteam”.
  • O utilizador “hayden” está em um grupo chamado “hayden” e em dois outros grupos, “pvqteam” e “docteam”.
  • O utilizador “francis” está em um único grupo, o grupo “devteam”. É notável que eles não estejam em um grupo chamado “Francisco”.

Sabemos que cada utilizador deve ser membro de um grupo primário e que, por padrão, o grupo primário tem um GID e um nome que correspondem ao UID e ao nome da conta do utilizador. Parece que há algo diferente no utilizador “francis”.

Vamos usar o idcomando e ver o que o UID e os GIDs nos dizem.

idabigail
id francisco
Usando o comando id nos usuários Abigail e Francis

O utilizador “abigail” tem um UID 1002 e um GID 1002. Eles estão em três grupos, um dos quais é chamado “abigail”. Ele tem um GID de 1002. Este é o grupo primário padrão.

O utilizador “francis” possui um GID 1019, que corresponde ao GID do grupo “devteam”. Este utilizador recebeu um novo grupo primário ou o grupo “devteam” foi definido como seu grupo principal quando este utilizador foi adicionado ao sistema .

Qualquer que fosse, apenas libuser-lidos detectou e reportou sua presença no grupo “devteam”.

O diabo está nos detalhes

Portanto, é importante ver os detalhes genuínos.

Os grupos são uma ótima maneira de estabelecer colaboração, desde que tu saiba com quem está abrindo.