Como verificar qual pacote criou um usuário?


14

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

Respostas:


16

Isso funcionará razoavelmente de forma confiável se o pacote foi instalado via dpkg(inclusive com apt install). Veja a resposta do muru para obter 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:\1:'

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

Ele pesquisa os scripts preinste postinstde todos os pacotes conhecidos dpkgpelo comando adduserou useradde pelo usuário em questão, para ver qual pacote é responsável pela criação desse usuário. O resultado é canalizado para sed e, portanto, retorna apenas o nome do pacote em vez do nome completo do arquivo de script.

Explicação

  • grep -RlE pesquise recursivamente e imprima apenas os nomes dos arquivos que contêm correspondências, use expressões regulares estendidas
  • '(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'procure o comando adduserou useradde 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 dpkgarmazena scripts, em arquivos cujos nomes terminam cominst
  • sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'retirar tudo antes e incluindo o último /no caminho completo ea .preinstou .postinstextensão

Agradecemos a @muru por sugerir uma maneira mais limpa e rápida de pesquisar do que usar findaqui :)


Você deve verificar preinsttambém, pois existem alguns pacotes que criam usuários nesse script. Mas eu entendi a ideia, então eu a aceito.
Cyker

@Cyker Sim obrigado :) Vou editar ... Eu estou olhando para isso agora para ver se eu posso pegá-los todos
Zanna

grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'para simplificar a find -exec grepcoisa.
Muru

obrigado @muru que é incrível ... (agora eu só preciso basename -saceitar caracteres curinga / regex ...) para que eu possa remover os sufixos pre AND post inst (mas não encontrei nenhum script de pré-instalação com o adduser, então, encolher os ombros) )
Zanna

@ Zanna, a Política Debian recomenda postinst, por isso é improvável que você encontre algum que use preinst(mas suponho que possa haver um caso raro).
muru

15

Há uma exceção importante para os adduserusuários e grupos normalmente adicionados aqui: aqueles que acompanham o Ubuntu por padrão. Estes são fornecidos pelo base-passwdpacote. 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:

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.