Respostas:
Use o getent
comando para processar grupos e informações do usuário, em vez de ler manualmente /etc/passwd
, /etc/groups
etc. O próprio sistema usa /etc/nsswitch.conf
para decidir de onde obtém suas informações, e as configurações nos arquivos podem ser substituídas por outras fontes. getent
obedece a essa configuração. getent
imprime 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
Isso pode ser feito simplesmente com cut
:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudo
obterá a linha referente ao sudo
grupo do /etc/group
arquivo:
$ 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 =)
GID="$(getent group cdrom | cut -d: -f3)"
?
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
Usando perl
uma 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
-F
ou -l
faz isso.
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
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
awk
é mais curto queperl
=)