Perché syslog è un utente?


15

Quando controllo il /var/log, trovo qualcosa di molto strano

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

Si noti che il proprietario del primo quattro file di registro è syslog. È strano, perché sul mio sistema c'è un solo utente:

me@me~$ users
me

Perché un nome file potrebbe syslogessere un utente?


6
Ti assicuro che ci sono molti più utenti nel tuo sistema. So che intendi "utente umano associato a un account e una home directory" ma la nozione di "utente" per tutti i sistemi è più ampia di quella.

Dai un'occhiata prima /etc/passwdo poi. Conto 36 utenti di ruolo, escluso il root. Inoltre, prova - man usersstai assumendo (in modo errato) cosa fa il comando.
Chrylis

Risposte:


26

Ha a che fare con la sicurezza e le autorizzazioni per l'accesso al sistema.

E no, hai molti più utenti oltre al tuo stesso utente. C'è "root", "daemon", "bin", "games", "nobody" e "list".

Fai un more /etc/passwdper un elenco di utenti sul tuo sistema. Vedrai molte righe con "/ usr / sbin / nologin". Ciò significa che questi non possono essere utilizzati come normali utenti con un accesso come il tuo stesso utente. La terza colonna è l'ID utente. Tutti gli ID utente inferiori a 1000 sono pseudo utenti. Il tuo primo utente sudo (quello che ha installato il sistema) ha 1000 di default.

Fondamentalmente syslog utente è autorizzato a utilizzare la /var/log/directory impostata come directory di proprietà di root . Per non dover compromettere le autorizzazioni sulla directory (ovvero, ridurre le autorizzazioni in modo che altri utenti possano utilizzarla), questo utente è stato creato.

Lo stesso viene fatto con l'utente per Apache e MySQL (vedrai un utente e un gruppo di dati www e un utente e un gruppo MySQL quando li installi), ma viene utilizzato per molte cose. Esiste un "dialout" di gruppo che viene utilizzato per accedere ai dispositivi esterni. Gli utenti vengono aggiunti a questo gruppo per consentire all'utente di utilizzare questi dispositivi. Altrimenti riceverai un errore di autorizzazione negata. Funziona in due modi: negare l'accesso a un utente significa rimuovere il gruppo.


Tuttavia, quel numero non è sempre stato 1000. Ho lavorato su sistemi con una storia abbastanza lunga che gli ID degli utenti reali sono iniziati dal 20.
kasperd,

1
Lo so, ma Ubuntu inizia sempre a 1000. Redhat per esempio inizia a 500.
Rinzwind

Sì, ma gli utenti non sono necessariamente creati localmente. Nel mio caso sono stati ricevuti tramite NIS, in questi giorni probabilmente sarebbe stato LDAP.
Kasperd,

Gli utenti reali a partire da 20 anni infrangerebbero seriamente una distribuzione basata su Debian. Gli UID 0-99 sui sistemi basati su Debian sono allocati staticamente dal progetto Debian per usi specifici.
Peter Green,

1
@PaddyLandau / bin / false uscirà da un accesso senza preavviso. nologin dovrebbe mostrare un messaggio "Questo account non è attualmente disponibile." (/etc/nologin.txt contiene questo avviso)
Rinzwind

8

Il servizio syslog, che scrive i messaggi di registro creati dal kernel e da altri servizi in vari file di registro, la console e / o altre destinazioni, viene eseguito con il proprio account utente speciale. Quindi fai molti altri servizi. Questo per attuare il principio del privilegio minimo :

Al fine di ridurre al minimo il possibile impatto di un servizio compromesso o difettoso (ad esempio un servizio che ha un bug che a sua volta viene sfruttato da un utente malintenzionato o un servizio che ha un bug che causa è quello di fare cose indesiderate casuali, o un servizio che è stato progettato deliberatamente da uno sviluppatore maligno per fare cose cattive), vuoi che ogni servizio abbia accesso solo a ciò di cui ha bisogno per il suo funzionamento e nient'altro.

Su qualsiasi sistema operativo simile a unix (che include tutte le distribuzioni GNU / Linux come Ubuntu), puoi facilmente assegnare i privilegi (che è principalmente il diritto di leggere e / o scrivere da / su determinati file o cose simili a file come nodi dispositivo) basati su utenti e gruppi. Esistono altre possibilità, ma sono spesso più noiose e soggette a errori da impostare o funzionano solo in contesti specifici.

Pertanto, il servizio syslog viene eseguito con l'account utente syslog. Se ora, ad esempio, un utente malintenzionato può ottenere il servizio syslog per fare ciò che gli viene detto invece di quello che dovrebbe, il servizio syslog è ancora limitato (imposto dal kernel in base all'account utente, non imposto dal syslog software stesso, che sarebbe inutile perché compromesso) per scrivere solo nei file di registro (gli unici file a cui l'utente syslog ha accesso in scrittura). Pertanto, l'utente malintenzionato non può utilizzare il servizio syslog compromesso per ad esempio modificare il contenuto di un sito Web o di un database ospitato sullo stesso computer, poiché i file pertinenti sono configurati per essere scrivibili solo da un determinato insieme di altri utenti (umani o di sistema ) account, non dall'account utente syslog.

Al fine di causare più danni della semplice eliminazione / modifica dei file di registro e della lettura di file "pubblici" (con autorizzazione "lettura" per tutti), l'utente malintenzionato dovrebbe prima sfruttare ulteriormente un secondo bug, nel kernel o in alcuni software che viene installato per funzionare con privilegi diversi rispetto all'utente che lo ha invocato ( setuid ) e quindi ottenere privilegi aggiuntivi ( escalazione di privilegi ).


Il userscomando che hai usato, secondo la sua pagina man , mostra solo gli utenti che sono attualmente connessi . Poiché l'utente syslog è un utente di sistema , non accederà mai, quindi non verrà mai visualizzato in questo elenco. Puoi guardare il file /etc/passwdo utilizzare uno qualsiasi degli altri metodi descritti qui per ottenere un elenco di tutti gli utenti (umani e di sistema) sul tuo sistema.


7

Perché syslog non è un file; è un demone usato dal sistema per archiviare i demoni di sistema e i messaggi dell'applicazione (debug, errore, avviso e informazioni) nei file.

Leggi qui per una breve storia di syslog.

In altre distribuzioni, ad esempio quelle basate su Red Hat Linux, l'output di syslog per il sistema è memorizzato in un file chiamato /var/log/messages. Dipende dalla configurazione.

Come afferma Rinzwind, per motivi di sicurezza diversi componenti del sistema operativo vengono eseguiti con un utente specifico e ogni utente ha i propri diritti. Ad esempio, syslog ha almeno l'autorizzazione di scrittura sulla /var/logcartella.

Un sistema ha molti servizi e di solito ci sono utenti per ogni servizio o per un piccolo gruppo di servizi. Ad esempio apache get www-data|httpd|apache,. Normalmente questi utenti daemon non ottengono l'accesso a Bash per evitare falle nella sicurezza.

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.