Quando sono stati creati questi utenti?
Nei casi indicati, sono stati creati durante l'installazione del sistema. Questi account utente sono convenzionali, alcuni risalenti a decenni fa. Sono anche standardizzati. La base standard di Linux li divide in:
- la richiesta account utente standard,
root
, bin
, e daemon
; e
- l' optional utente standard account
adm
, lp
, sync
, shutdown
, halt
, mail
, news
, uucp
, operator
, man
, enobody
Altri account utente che sono menzionati qui - pulse
, avahi
, colord
, e Debian-exim
(di scegliere uno dal file delle password di py4on) - ci portano alla tua prossima domanda.
In che modo sono collegati ai nuovi programmi installati?
Gli account utente non standard vengono creati e distrutti dagli "script del manutentore" per vari pacchetti, poiché tali pacchetti vengono installati ed eliminati. Un account utente verrà creato dal cosiddetto postinst
script del manutentore del pacchetto , che viene eseguito getent
per verificare se l'account utente esiste già e in useradd
caso contrario. In teoria sarebbe stato eliminato dal cosiddetto postrm
script del manutentore del pacchetto , in esecuzione userdel
.
In pratica, gli account utente per i pacchetti non vengono eliminati. Il wiki di Fedora (qv) spiega che questo sarebbe irto di difficoltà. Vedi il bug Debian n. 646175 per un esempio di questa logica in azione, dove si decide semplicemente di non cancellare l' rabbitmq
account utente quando il pacchetto viene rimosso, per risolvere un problema con un demone che continua a funzionare sotto l'egida di quell'account.
Come sono stati avviati questi programmi con UID diversi?
In Unix e Linux, un processo in esecuzione sotto l'egida del superutente può cambiare il suo account utente in qualcos'altro e continuare a eseguire lo stesso programma, ma non è consentito il contrario. (Bisogna usare il meccanismo set-UID.)
Il sistema di gestione dæmon funziona come superutente. I suoi dati di configurazione specificano che particolari demoni corrono sotto l'egida di particolari account utente:
- Con System 5
rc
lo script in /etc/init.d
utilizza uno strumento di supporto come start-stop-daemon
e la sua --chuid
opzione.
- Con un responsabile del servizio daemontools famiglia, le
run
chiamate di script setuidgid
, s6-setuidgid
, chpst
, o runuid
con il nome dell'account utente. Ci sono esempi di ciò in /unix//a/179798/5132 che imposta l' nagios
account utente.
- Con upstart c'è una
setuid
stanza in un file di lavoro, che specifica l'account utente. Questo non è particolarmente preciso, e talvolta si desidera ciò che è descritto su /superuser//a/723333/38062 .
- Con systemd c'è
User=
un'impostazione nel file dell'unità di servizio, che specifica l'account utente.
Quando il sistema di gestione di demone genera un processo come demone, questi meccanismi rilasciano i privilegi di superutente in modo che il processo di demone continui a essere eseguito sotto l'egida dell'account utente non privilegiato.
C'è una spiegazione abbastanza lunga del perché una buona gestione del demone viene fatta in questo modo. Ma non hai chiesto perché; solo quando, come e da dove. ☺ Una sintesi molto breve, quindi:
I sistemi operativi Unix e Linux isolano i processi in esecuzione sotto l'egida di account utente diversi l'uno dall'altro. Storicamente, se si fosse in grado di subentrare a un demone che correva come superutente, si potrebbe fare qualsiasi cosa si piaccia. Un demone che gira sotto l'egida di un account non privilegiato, d'altra parte, può accedere solo a file, directory, dispositivi e processi che quell'account non privilegiato può fare. Un sistema di programmi mutuamente non fiduciosi, tutti in esecuzione sotto l'egida di diversi account utente e incapaci di accedere / controllare reciprocamente i file / directory / processi / processi / dispositivi reciproci , quindi, è molto più difficile da decifrare.
Ulteriori letture