Qual è la differenza tra account utente e servizio?


16

Vorrei sapere la differenza tra account utente e servizio.

So che ad esempio Jenkinsinstallato su Ubuntu non è un utente, ma un account di servizio .

  1. A cosa serve l'account di servizio?
  2. Quando ne abbiamo bisogno?
  3. Come posso creare un account di servizio?

Risposte:


18

Gli account utente vengono utilizzati da utenti reali, gli account di servizio vengono utilizzati da servizi di sistema come server Web, agenti di trasporto di posta, database ecc. Per convenzione e solo per convenzione, gli account di servizio hanno ID utente nell'intervallo basso, ad es. <1000 o giù di lì . Ad eccezione di UID 0, gli account di servizio non dispongono di privilegi speciali. Gli account di servizio possono - e in genere possiedono - risorse specifiche, persino file speciali per dispositivi, ma non dispongono di privilegi simili a quelli di un superutente.

Gli account di servizio possono essere creati come account utente ordinari (ad es. Utilizzando useradd). Tuttavia, gli account di servizio vengono in genere creati e configurati dal gestore pacchetti al momento dell'installazione del software di servizio. Quindi, anche come amministratore, raramente dovresti preoccuparti direttamente della creazione di account di servizio.

Per una buona ragione: a differenza degli account utente, gli account di servizio spesso non hanno una shell di accesso "corretta", cioè hanno /usr/sbin/nologincome shell di login (o, ai vecchi tempi /bin/false). Inoltre, gli account di servizio sono in genere bloccati, ovvero non è possibile effettuare il login (per tradizione /etc/passwde /etc/shadowciò può essere ottenuto impostando l'hash della password su valori arbitrari come *o x). Questo per rafforzare gli account dei servizi contro gli abusi ( difesa approfondita ).

Avere account di servizio individuali per ogni servizio ha due scopi principali: è una misura di sicurezza per ridurre l'impatto in caso di incidente con un servizio ( compartimentazione ) e semplifica l'amministrazione in quanto diventa più facile rintracciare quali risorse appartengono a quale servizio . Vedi questa o questa risposta su domande correlate per maggiori dettagli.


4

Inizialmente, gli utenti dovevano corrispondere a un essere umano che utilizzava il sistema, da cui il nome. Ogni processo viene eseguito come un determinato utente e ogni file è di proprietà di un determinato utente. Un utente speciale, chiamato root, viene utilizzato per cose che non appartengono a un particolare utente umano, vale a dire il sistema operativo stesso. Poiché root corrisponde al sistema operativo stesso, ha tutti i privilegi.

Presto le persone hanno scoperto che era conveniente creare più utenti di sistema, senza ampi privilegi. Ciò consente di isolare i vari servizi in esecuzione su una macchina, in modo che non calpestino le dita degli altri. Un account di servizio (o "account di sistema", questi due termini sono sinonimi) è uno che corrisponde a un servizio in esecuzione sul sistema, piuttosto che a qualcuno che utilizza il sistema. Generalmente si dispone di un account di servizio per ogni attività in esecuzione sul sistema che ha il proprio set di privilegi (ad es. I propri file, le proprie porte di rete, ecc.).

Non esiste una definizione formale di account umano / di sistema / servizio. Al kernel non importa (oltre a garantire molti privilegi all'utente con UID 0). Alla maggior parte dei comandi di amministrazione non importa neanche. Alcune differenze tipiche sono:

  • Un utente umano ha un nome reale come "John Doe", mentre un utente di sistema ha un nome descrittivo come "demone nasale" o nessuno.
  • Un utente umano ha una vera shell di login (ad es. /bin/shOppure /bin/bashoppure /bin/csh. Alcuni utenti di sistema hanno una shell (quasi sempre /bin/sh), altri no, a seconda di come devono essere utilizzati (ad es. su fooRichiede foodi avere una shell).
  • Un utente umano ha spesso una password, ma non è sempre così, ad esempio un utente solo remoto potrebbe avere solo una chiave SSH. Si noti che sui moderni unices, la password non è presente /etc/passwdma in alcuni altri file come /etc/shadow.
  • La home directory di un utente umano si trova di solito in /home(o in qualche posizione specifica del sito), mentre la home directory di un utente di sistema non è in genere sotto /homee potrebbe non esistere (ma ci sono eccezioni).
  • La maggior parte dei siti designa una gamma di ID utente per gli utenti del sistema e una gamma disgiunta per gli utenti umani. La prenotazione di 100–65533 o 500–65533 o 1000–65533 è tipica e la maggior parte delle distribuzioni sono impostate per iniziare a allocare gli ID utente reali da 500 o 1000.

Sui siti in cui gli account sono condivisi su più macchine, in genere esiste un server centrale che contiene elenchi di utenti, accessibili tramite NIS o LDAP . La passwdvoce in /etc/nsswitch.confspecifica dove trovare le informazioni dell'utente. È comune avere utenti di sistema negli utenti locali /etc/passwde reali dal database a livello di rete, ma a volte ci sono utenti di sistema nel database a livello di rete (per applicare UID coerenti, che facilita la replica di server e dati), e talvolta ci sono utenti umani nel file locale (per consentire loro di accedere anche quando la rete è hosing).

Un account accessibile dall'uomo travestito da utente di sistema in genere non avrebbe un nome reale, ma avrebbe una shell di accesso e una password impostata o una chiave SSH, pur avendo un ID utente nell'intervallo di sistema. In effetti, sarebbe un travestimento migliore utilizzare un account di sistema reale la cui rimozione causerebbe l'interruzione di alcuni servizi. Ma non puoi avere regole rigide per rilevare potenziali attacchi: per definizione, gli attaccanti non seguono le regole.

Gli account di servizio e gli account umani sono gestiti dagli stessi comandi e registrati negli stessi file. I comandi di creazione dell'account possono avere opzioni per impostare valori predefiniti ragionevoli per utenti umani o di servizio, ad esempio per selezionare un ID utente nell'intervallo corretto e richiedere una password per un essere umano e disabilitare l'autenticazione password per un servizio. Ad esempio, adduservs adduser --systemo useraddvs useradd -rsu Linux.


3
    1. un account di servizio, noto anche come account tecnico, è un account progettato per essere utilizzato solo da un servizio / applicazione, non da un utente normale.
    1. Gli sviluppatori di applicazioni e servizi desiderano che questi account limitino i diritti e i privilegi dei processi associati anziché eseguirne i processi come root. Servizi come iniziato da init, systemdo simili, che corrono come root, downgrade rapidamente per l'account di servizio per limitare i rischi. A seconda del sistema operativo utilizzato, agli account dell'applicazione potrebbero essere concessi più privilegi rispetto agli account regolari, ad esempio il diritto di associarsi a una porta TCP privilegiata o, al contrario, i loro privilegi sono ridotti rispetto a un utente normale, ad esempio negando i processi di servizio a chiama fork/ exec. In tal caso, non è necessario il downgrade dei servizi all'account del servizio, possono essere avviati con esso.
    1. Non è necessario, ma è sufficiente creare un account senza una password utilizzabile e con una shell non funzionante (ad es. /bin/false) E non sarà utilizzabile da un utente normale, ovvero non ci sarà modo di accedere localmente o da remoto (ad es. attraverso ssh) usando il nome dell'account. Come la maggior parte delle limitazioni, l'utilizzo dell'account root o sudoconsente di superarlo.

1

Ad esempio, un account di servizio potrebbe non essere in grado di utilizzare una shell. Viene utilizzato per eseguire servizi (daemon) con ambito e privilegio limitati. La mia opinione è che puoi crearlo come utente normale, facendo attenzione ai diritti e all'appartenenza al gruppo. Tuttavia, la maggior parte delle volte non lo fai perché i programmi li creano automaticamente durante l'installazione. Dai un'occhiata/etc/passwd root:x:0:0:root:/root:/bin/bash

0 è l'UID, caratterizza la gerarchia dell'account nello spazio utente, root è al di sopra di tutti, quindi hai l'appartenenza :rootal gruppo alla home directory e /rootinfine la shell utilizzata dall'account /bin/bashper 'accedere' al sistema.

È possibile utilizzare /usr/sbin/nologinper un account per il quale non si desidera il privilegio di accesso.

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.