Come verificare quale pacchetto ha creato un utente?


14

Si sospetta che alcuni pacchetti abbiano script eseguiti al momento dell'installazione che creano account utente /etc/passwd. Come posso verificare quale pacchetto ha creato un utente specifico?

Risposte:


16

Funzionerà in modo abbastanza affidabile se il pacchetto è stato installato tramite dpkg(incluso con apt install). Vedi la risposta di Muru per un elenco di utenti creati nell'installazione predefinita di Ubuntu e il pacchetto che li crea. Per quegli utenti, questo metodo non produrrà alcun output.

Puoi usare il comando:

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

sostituisci <user>con il nome dell'utente che ti interessa, ad esempio,systemd

Questo cerca gli script preinste postinstdi tutti i pacchetti noti dpkgper il comando addusero useradde l'utente in questione, per vedere quale pacchetto è responsabile della creazione di quell'utente. Il risultato viene reindirizzato a sed in modo da restituire solo il nome del pacchetto stesso anziché il nome completo del file di script.

Spiegazione

  • grep -RlE cerca in modo ricorsivo e stampa solo i nomi dei file contenenti corrispondenze, usa espressioni regolari estese
  • '(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'cercare il comando addusero useradde l'utente che si desidera trovare sulla stessa riga ( .*corrisponderà a tutti i caratteri tra loro, catturando qualsiasi opzione di comando) nella directory in cui sono dpkgmemorizzati gli script, nei file i cui nomi terminano coninst
  • sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'togli tutto prima e includendo l'ultimo /nel percorso completo e l' estensione .preinsto.postinst

Grazie a @muru per aver suggerito un modo più ordinato e veloce di cercare rispetto all'utilizzo findqui :)


Dovresti controllare preinstanche perché ci sono alcuni pacchetti che creano utenti in quello script. Ma ho un'idea, quindi la accetterò.
Cyker,

@Cyker Yeah grazie :) Modificherò ... Sto esaminando adesso per vedere se riesco a prenderli tutti
Zanna

grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'per semplificare la find -exec grepcosa.
Muru,

grazie @muru che è fantastico ... (ora ho solo bisogno basename -sdi accettare caratteri jolly / regex ...) così posso farlo tagliare i suffissi pre e post inst (ma non ho trovato alcun script preinst con adduser così scrollando le spalle )
Zanna,

@Zanna la Debian Policy raccomanda postinst, quindi è improbabile che tu possa trovare quello che usa preinst(ma suppongo che potrebbe esistere il raro caso).
muru,

15

C'è un'importante eccezione per i soliti adduserutenti e gruppi qui aggiunti: quelli che vengono forniti con Ubuntu per impostazione predefinita. Questi sono forniti dal base-passwdpacchetto. Un elenco di utenti e gruppi aggiunti da questo pacchetto è riportato (e descritto) in /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz}. L'elenco è:

Utenti (di solito con gruppi corrispondenti)

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

Gruppi (senza utenti corrispondenti)

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

Il pacchetto README ( /usr/share/doc/base-passwd/README) elenca anche alcuni utenti con UID nell'intervallo 60000-64999 e afferma che questi sono creati dai rispettivi pacchetti.

Vedi anche:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.