Qual é o ID do grupo desse nome?


27

Como obter o ID do grupo GID fornecendo o nome do grupo.

A saída seria, por exemplo:

Group adm with GID=4

Respostas:


41

Use o getentcomando para processar grupos e informações do usuário, em vez de ler manualmente /etc/passwd, /etc/groupsetc. O próprio sistema usa /etc/nsswitch.confpara decidir de onde obtém suas informações, e as configurações nos arquivos podem ser substituídas por outras fontes. getentobedece a essa configuração. getentimprime dados, independentemente da fonte, no mesmo formato dos arquivos, para que você possa analisar a saída da mesma maneira que analisaria /etc/passwd:

getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'

Observe que, para um nome de usuário, isso é muito mais fácil. Use id:

$ id -u lightdm
105

Ok, awké mais curto que perl=)
AB

20

Isso pode ser feito simplesmente com cut:

$ cut -d: -f3 < <(getent group sudo)
27

getent group sudoobterá a linha referente ao sudogrupo do /etc/grouparquivo:

$ getent group sudo
sudo:x:27:foobar

Então podemos pegar o terceiro campo delimitado por :.

Se você desejar a sequência de saída de acordo, use a substituição de comando em echo:

$ echo "Group sudo with GID="$(cut -d: -f3 < <(getent group sudo))""
Group sudo with GID=27

% echo "Group cdrom with GID="$(cut -d: -f3 < <(getent group sudo))"" Group cdrom with GID=27, por favor, um pouco mais genérico =)
AB

1
Por que a substituição do processo? O que há de errado GID="$(getent group cdrom | cut -d: -f3)"?
kos

@kos Eu não gosto de rodar coisas em
sub

@AB Edited ...
heemayl

Mas é POSIX ...: '(Não, só brincando, eu realmente não sabia a diferença. +1
kos

1

respostas mais complicadas são sempre apreciadas - eu aprendo muito lendo-as com bastante honestidade.

Encontrei esta página porque estava procurando o ID do grupo do meu grupo de email e não sabia onde essas informações estavam armazenadas.

suas respostas são ótimas - aqui está a simples que eu criei

def @ fourof4: / home $ cat / etc / group | grep mail

e-mail: x: 8:

Eu sei que ele não resolve o ID, mas serviu ao meu propósito.

Blockquote Experimente o seguinte: awk -F: '/ sudo / {print "Group" $ 1 "com GID =" $ 3}' / etc / group - AB Jun 23 '15 às 15:51 Blockquote

eu vejo isso também mencionado além do que eu citei .... todo mundo recebe meu amor - desculpe se eu senti sua falta

Foi isso que me guiou para esse arquivo.
Obrigado e continue me alimentando com a excelente forma que desejar! def


0

Usando perluma linha:

% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27

ou mais curto (e melhor)

% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27

2
Certamente o perl pode fazer a divisão por você, acho que a opção -Fou -lfaz isso.
Muru

0

Um truque para o necessário: (ainda talvez haja uma resposta muito melhor)

awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"

Versão mais simples (graças a @AB):

awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group 

Exemplo:

$ awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep sudo 
Group sudo with GID=27

1
Tente isto:awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
AB

Veja UUOC
kos
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.