Script do shell para exibir / etc / group

0

Eu quero escrever um script de shell que exiba os usuários e grupos do sistema de /etc/passwd e /etc/group - para cada usuário eu quero exibir o nome de usuário, UID e todos os grupos dos quais o usuário é membro.

Eu tentei o seguinte:

cat /etc/passwd /etc/group

mas a saída estava em todo o lugar. Alguém pode me ajudar a escrever este roteiro?

    
por user3559135 11.04.2016 / 03:50

2 respostas

4

Não reinvente a roda. O comando id pode fazer exatamente isso:

$ id foobar
uid=1000(foobar) gid=1000(foobar) groups=1000(foobar),4(adm),20(dialout),24(cdrom)

substitua foobar pelo seu nome de usuário desejado.

Verifique man id para ter mais ideia.

    
por heemayl 11.04.2016 / 03:54
0

Para obter todos os grupos para todas as entradas em /etc/passwd

for user in $(getent passwd| cut -d: -f1); do groups $user; done

explicação

  • getent passwd : lista todas as linhas em /etc/passwd no formato normal

    guest-ZlneMD:x:119:130:Guest,,,:/tmp/guest-ZlneMD:/bin/bash
    
  • cut -d: -f1 : remove todos, exceto o primeiro campo (os campos são separados por : )
    o resultado é uma lista de todos os nomes de contas, classificados por UID
  • agora user é atribuído a todos esses valores, um por um
  • e groups $user recebem cada um desses valores e exibem o nome de usuário e todos os grupos aos quais a conta pertence.

    guest-ZlneMD : guest-ZlneMD
    
por guntbert 11.04.2016 / 17:51