Risposte:
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 preinst
e postinst
di tutti i pacchetti noti dpkg
per il comando adduser
o useradd
e 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.
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 adduser
o useradd
e 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 dpkg
memorizzati 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 .preinst
o.postinst
Grazie a @muru per aver suggerito un modo più ordinato e veloce di cercare rispetto all'utilizzo find
qui :)
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
per semplificare la find -exec grep
cosa.
basename -s
di 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 )
postinst
, quindi è improbabile che tu possa trovare quello che usa preinst
(ma suppongo che potrebbe esistere il raro caso).
C'è un'importante eccezione per i soliti adduser
utenti e gruppi qui aggiunti: quelli che vengono forniti con Ubuntu per impostazione predefinita. Questi sono forniti dal base-passwd
pacchetto. 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 è:
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
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:
base-passwd
per 14.04 - puoi vedere l'elenco di utenti e gruppi nei *.master
file.
preinst
anche perché ci sono alcuni pacchetti che creano utenti in quello script. Ma ho un'idea, quindi la accetterò.