Como verificar qual pacote criou um usuário?

13

Suspeita-se que alguns pacotes tenham scripts executados no momento da instalação, o que cria contas de usuário em /etc/passwd . Como posso verificar qual pacote criou um usuário específico?

    
por Cyker 05.12.2016 / 10:56

2 respostas

16

Isso funcionará de forma razoavelmente confiável se o pacote foi instalado via dpkg (incluindo apt install ). Veja resposta do muru para uma lista de usuários criados na instalação padrão do Ubuntu e o pacote que os cria. Para esses usuários, esse método não produzirá nenhuma saída.

Você pode usar o comando:

grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst::'

substitua <user> pelo nome do usuário em que você está interessado, por exemplo, systemd

Isso pesquisa os scripts preinst e postinst de todos os pacotes conhecidos como dpkg para o comando adduser ou useradd e o usuário em questão, para ver qual pacote é responsável por criar esse usuário. O resultado é canalizado para sed, retornando apenas o nome do pacote em vez do nome completo do arquivo de script.

Explicação

  • grep -RlE pesquisa recursivamente e imprime apenas os nomes dos arquivos que contêm correspondências, use expressões regulares estendidas
  • '(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst' procura o comando adduser ou useradd e o usuário que você deseja encontrar na mesma linha ( .* corresponderá a qualquer caractere entre eles, capturando qualquer opção de comando) no diretório em que dpkg armazena scripts , em arquivos cujos nomes terminam com inst
  • sed -r 's:.*/(.*)\.[-a-z]+inst::' tira tudo antes de & amp; incluindo o último / no caminho completo e a .preinst ou .postinst extensão

Obrigado ao @muru por sugerir uma maneira mais simples e rápida de pesquisar do que usar find aqui:)

    
por Zanna 05.12.2016 / 11:10
15

Há uma exceção importante aos usuários e grupos usuais do adduser -added aqui: os que vêm com o Ubuntu por padrão. Estes são fornecidos pelo pacote base-passwd . Uma lista de usuários e grupos adicionados por este pacote é fornecida (e descrita) em /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz} . A lista é:

Usuários (geralmente com grupos correspondentes)

root    man     majordom    irc         gdm
daemon  lp      postgres    gnats       saned
bin     mail    www-data    nobody      klog
sys     news    backup      messagebus  syslog
sync    uucp    operator    postfix
games   proxy   list        haldaemon

Grupos (sem usuários correspondentes)

adm     fax     audio       staff       sshd
tty     voice   src         users       fetchmail
disk    cdrom   shadow      lpadmin     cupsys
kmem    floppy  utmp        sasl        nogroup
dialout tape    video       scanner
dip     sudo    plugdev     ssh

O pacote README ( /usr/share/doc/base-passwd/README ) também lista alguns usuários com UIDs no intervalo 60000-64999 e afirma que eles são criados pelos respectivos pacotes.

Veja também:

por muru 05.12.2016 / 11:44