Skip to main content

Comando Syslogd Linux e Unix

LINUX Logger command (Giugno 2025)

LINUX Logger command (Giugno 2025)
Anonim

Sysklogd fornisce due utilità di sistema che forniscono supporto per la registrazione del sistema e il trapping del messaggio del kernel. Il supporto di entrambi i socket di dominio Internet e unix consente a questo pacchetto di utilità di supportare la registrazione locale e remota.

La registrazione del sistema è fornita da una versione disyslogd(8) derivato dalle fonti BSD azionarie. Il supporto per la registrazione del kernel è fornito daklogd(8) utility che consente di eseguire la registrazione del kernel in modalità standalone o come client di syslogd.

Syslogd fornisce una sorta di registrazione utilizzata da molti programmi moderni. Ogni messaggio registrato contiene almeno un tempo e un campo nome host, normalmente anche un campo nome programma, ma dipende da quanto sia affidabile il programma di registrazione.

Mentre ilsyslogd le fonti sono state pesantemente modificate un paio di note sono in ordine. Prima di tutto c'è stato un tentativo sistematico di garantire che syslogd segua il suo comportamento standard BSD predefinito. Il secondo importante concetto da notare è che questa versione di syslogd interagisce in modo trasparente con la versione di syslog trovata nelle librerie standard. Se un binario collegato alle librerie condivise standard non funziona correttamente, vorremmo un esempio del comportamento anomalo.

Il file di configurazione principale /etc/syslog.conf o un file alternativo, dato con il-f opzione, viene letto all'avvio. Tutte le linee che iniziano con il segno cancelletto (`` # '') e le linee vuote vengono ignorate. Se si verifica un errore durante l'analisi, l'intera riga viene ignorata.

Sinossi

syslogd -un presa di corrente -d -f file di configurazione -h -l hostlist -m intervallo -n -p presa di corrente -r -S domainlist -v -X

Opzioni

-un presa di corrente

Usando questo argomento puoi specificare altri socket da quellosyslogd deve ascoltare. Questo è necessario se lasci che un demone venga eseguito in un ambiente chroot (). È possibile utilizzare fino a 19 prese aggiuntive. Se il tuo ambiente ha bisogno di più, devi aumentare il simboloMAXFUNIX all'interno del file di origine syslogd.c. Un esempio per un demone chroot () è descritto dalle persone di OpenBSD su http://www.psionic.com/papers/dns.html.

-d

Attiva la modalità di debug. Usando questo il demone non procederà aforchetta(2) per impostare se stesso in background, ma opposto a quello rimanere in primo piano e scrivere molte informazioni di debug sul tty corrente. Vedi la sezione DEBUGGING per maggiori informazioni.

-f file di configurazione

Specificare un file di configurazione alternativo anziché /etc/syslog.conf , che è l'impostazione predefinita.

-h

Di default syslogd non inoltrerà i messaggi che riceve dagli host remoti. Specificando questo switch sulla riga di comando, il daemon del registro inoltra i messaggi remoti che riceve agli host di inoltro definiti.

-l hostlist

Specificare un nome host che deve essere registrato solo con il suo semplice nome host e non con fqdn. Più host possono essere specificati usando il separatore dei due punti (``: '').

-m intervallo

Ilsyslogd registra regolarmente la data e l'ora del marchio. Il predefinito intervallo tra due -- MARCHIO -- le linee sono 20 minuti. Questo può essere cambiato con questa opzione. Impostazione del intervallo a zero lo spegne completamente.

-n

Evita l'auto-sfondo. Questo è necessario soprattutto se ilsyslogd è avviato e controllato dadentro(8).

-p presa di corrente

Al posto di, puoi specificare un socket di dominio unix alternativo / Dev / log .

-r

Questa opzione consente alla funzione di ricevere un messaggio dalla rete utilizzando un socket di dominio Internet con il servizio syslog (vedere (5)). L'impostazione predefinita è di non ricevere alcun messaggio dalla rete.

Questa opzione è stata introdotta nella versione 1.3 del pacchetto sysklogd. Si noti che il comportamento predefinito è l'opposto di come si comportano le versioni precedenti, quindi potrebbe essere necessario attivarlo.

-S domainlist

Specificare un nome di dominio che deve essere rimosso prima della registrazione. Più domini possono essere specificati usando il separatore dei due punti (``: ''). Tieni presente che non è possibile specificare sottodomini ma solo interi domini. Ad esempio se-s north.de viene specificato e la registrazione dell'host si risolve in satu.infodrom.north.de non verrà tagliato alcun dominio, dovrai specificare due domini come:-s north.de:infodrom.north.de.

-v

Stampa la versione e esci.

-X

Disabilitare le ricerche dei nomi quando si ricevono messaggi remoti. Ciò evita deadlock quando il server dei nomi è in esecuzione sullo stesso computer che esegue il daemon syslog.

segnali

syslogd reagisce a una serie di segnali. Si può facilmente inviare un segnale asyslogd usando il seguente:

kill -SIGNAL `cat / var / run / syslogd.pid`

SIGHUP

Questo lasciasyslogd eseguire una re-inizializzazione. Tutti i file aperti sono chiusi, il file di configurazione (di default è /etc/syslog.conf ) sarà riletto e ilsyslog(3) la struttura viene riavviata.

SIGTERM

Ilsyslogd morirà.

SIGINT, SIGQUIT

Se il debug è abilitato, questi vengono ignorati, altrimentisyslogd morirà.

SIGUSR1

Attiva / disattiva il debugging. Questa opzione può essere utilizzata solo sesyslogd è iniziato con il-d opzione di debug.

SIGCHLD

Aspetta i bambini se alcuni sono nati, a causa dei messaggi a muro.

Differenze di sintassi dei file di configurazione

syslogd utilizza una sintassi leggermente diversa per il suo file di configurazione rispetto alle origini BSD originali. Originariamente tutti i messaggi con priorità specifiche e superiori venivano inoltrati al file di registro.

Ad esempio, la seguente riga ha causato TUTTI gli output dei daemon usando le funzioni del daemon (il debug è la priorità più bassa, quindi anche ogni più alto corrisponderà) per entrare in / Usr / adm / demoni :

# Sample syslog.conf daemon.debug / usr / adm / daemons

Sotto il nuovo schema, questo comportamento rimane lo stesso. La differenza è l'aggiunta di quattro nuovi specificatori, l'asterisco (*) jolly, il segno di equazione (=), il punto esclamativo (!) e il segno meno (-).

Il* specifica che tutti i messaggi per la struttura specificata devono essere indirizzati alla destinazione. Si noti che questo comportamento è degenerato con la specifica di un livello di priorità di debug. Gli utenti hanno indicato che la notazione asterisco è più intuitiva.

Il= jolly viene utilizzato per limitare la registrazione alla classe di priorità specificata. Ciò consente, ad esempio, di inoltrare solo i messaggi di debug a una particolare fonte di registrazione.

Ad esempio, la seguente riga in syslog.conf indirizzava i messaggi di debug da tutte le fonti a / Usr / adm / debug file.

# Sample syslog.conf *. = Debug / usr / adm / debug

Il! viene utilizzato per escludere la registrazione delle priorità specificate. Ciò influenza tutte le (!) Possibilità di specificare le priorità.

Ad esempio, le seguenti righe registreranno tutti i messaggi della posta della struttura ad eccezione di quelli con le informazioni prioritarie su / Usr / adm / mail file. E tutti i messaggi da news.info (incluso) a news.crit (escluso) verranno registrati su / Usr / adm / notizie file.

# Esempio di posta syslog.conf. *; Mail.! = Info / usr / adm / mail news.info; news.! Crit / usr / adm / news

Si può usare intuitivamente come identificatore di eccezione. L'interpretazione di cui sopra è semplicemente invertita. Facendolo puoi usare

mail.none

o

posta elettronica.! *

o

posta elettronica.! di debug

saltare ogni messaggio che viene fornito con una funzione di posta elettronica. C'è molto spazio per giocarci. :-)

Il- può essere utilizzato solo per prefisso di un nome file se si desidera omettere di sincronizzare il file dopo ogni scrittura su di esso.

Questo potrebbe richiedere un po 'di acclimatazione per quegli individui abituati al puro comportamento di BSD, ma i tester hanno indicato che questa sintassi è un po' più flessibile del comportamento di BSD. Si noti che queste modifiche non dovrebbero influenzare lo standardsyslog.conf(5) file. È necessario modificare in modo specifico i file di configurazione per ottenere il comportamento migliorato.

Supporto per la registrazione remota

Queste modifiche forniscono il supporto di rete alla funzione syslogd. Supporto di rete significa che i messaggi possono essere inoltrati da un nodo che esegue syslogd a un altro nodo su cui è in esecuzione syslogd, dove verranno effettivamente registrati su un file su disco.

Per abilitare questo devi specificare il-r opzione sulla riga di comando. Il comportamento predefinito è quellosyslogd non ascolterà la rete.

La strategia è di avere syslogd in ascolto su un socket di dominio unix per i messaggi di log generati localmente. Questo comportamento consentirà a syslogd di interagire con il syslog trovato nella libreria C standard. Allo stesso tempo, syslogd ascolta la porta syslog standard per i messaggi inoltrati da altri host. Per fare in modo che funzioni correttamenteServizi(5) file (in genere trovati in /eccetera ) deve avere la seguente voce:

syslog 514 / udp

Se questa voce è mancantesyslogd nessuno dei due può ricevere messaggi remoti né inviarli, perché la porta UDP non può essere aperta. Anziché, syslogd morirà immediatamente, spegnendo un messaggio di errore.

Per fare in modo che i messaggi vengano inoltrati a un altro host, sostituire la normale riga del file in syslog.conf file con il nome dell'host a cui inviare i messaggi anteposto a un @.

Ad esempio, per inoltrareTUTTI messaggi a un host remoto utilizzando quanto segue syslog.conf iscrizione:

# Esempio di file di configurazione syslogd in # messaggi a un host remoto in avanti tutto. *. * @hostname

Per inoltrare tuttonocciolo i messaggi su un host remoto il file di configurazione sarebbero i seguenti:

# Esempio di file di configurazione per inoltrare tutti i messaggi del kernel # ad un host remoto. kern. * @hostname

Se il nome host remoto non può essere risolto all'avvio, poiché il server dei nomi potrebbe non essere accessibile (potrebbe essere avviato dopo syslogd) non ti devi preoccupare.syslogd tenterà di risolvere il nome dieci volte e quindi si lamenterà. Un'altra possibilità per evitare ciò è inserire il nome host / etc / hosts .

Con normalesyslogds si otterrebbero syslog-loops se si inviano messaggi ricevuti da un host remoto allo stesso host (o più complicato a un terzo host che lo rimanda al primo e così via). Nel mio dominio (Infodrom Oldenburg) ne abbiamo accidentalmente uno e i nostri dischi si sono riempiti dello stesso singolo messaggio. :-(

Per evitare ciò in tempi successivi, nessun messaggio ricevuto da un host remoto viene inviato ad un altro (o lo stesso) host remoto. Se ci sono scenari in cui questo non ha senso, per favore lasciami una linea (Joey).

Se l'host remoto si trova nello stesso dominio dell'host,syslogd è in esecuzione, verrà registrato solo il nome host semplice invece dell'intero file fqdn.

In una rete locale è possibile fornire un server di registro centrale per avere tutte le informazioni importanti conservate su una macchina. Se la rete è composta da domini diversi, non è necessario lamentarsi della registrazione di nomi completi qualificati invece di semplici nomi host. Si consiglia di utilizzare la funzionalità di dominio strip-S di questo server. Puoi dire alsyslogd per rimuovere molti domini diversi da quello in cui si trova il server e registrare solo nomi host semplici.

Usando il-l opzione c'è anche la possibilità di definire singoli host come macchine locali. Ciò comporta anche la registrazione solo dei loro nomi host semplici e non di fqdns.

Il socket UDP utilizzato per inoltrare i messaggi agli host remoti o per ricevere messaggi da essi viene aperto solo quando è necessario. Nelle versioni precedenti alla 1.3-23 veniva aperto ogni volta ma non aperto per la lettura o l'inoltro rispettivamente.

Output su Named Pipes (FIFO)

Questa versione di syslogd supporta l'output di registrazione su named pipe (fifos). Una pipe fifo o named può essere utilizzata come destinazione per i messaggi di log anteponendo un simbolo di pipy (`` | '') al nome del file. Questo è utile per il debug. Si noti che il fifo deve essere creato con il comando mkfifo prima dell'avvio di syslogd.

Il seguente file di configurazione indirizza i messaggi di debug dal kernel a un fifo:

# Esempio di configurazione per instradare i messaggi # di debug del kernel SOLO su / usr / adm / debug che è una named pipe #. kern. = debug | / usr / adm / debug

Preoccupazioni di installazione

C'è probabilmente una considerazione importante quando si installa questa versione di syslogd. Questa versione di syslogd dipende dalla corretta formattazione dei messaggi dalla funzione syslog. Il funzionamento della funzione syslog nelle librerie condivise è cambiato da qualche parte nella regione di libc.so.4. 2-4 .n. Il cambiamento specifico era quello di terminare il messaggio prima di trasmetterlo a / Dev / log zoccolo. Il corretto funzionamento di questa versione di syslogd dipende dalla terminazione null del messaggio.

Generalmente questo problema si manifesterà se nel sistema vengono utilizzati vecchi binari collegati staticamente. I binari che utilizzano vecchie versioni della funzione syslog causeranno il log delle righe vuote seguite dal messaggio con il primo carattere nel messaggio rimosso. Il ricollegamento di questi binari alle versioni più recenti delle librerie condivise risolverà questo problema.

Sia ilsyslogd(8) e ilklogd(8) può essere eseguito da init (8) o avviato come parte della sequenza rc. *. Se è avviato da init l'opzione -n deve essere impostato, in caso contrario, verranno avviati moltissimi daemon syslog. Questo è perchédentro(8) dipende dall'ID processo.

Minacce alla sicurezza

Esiste il potenziale per il demone syslogd da utilizzare come conduttore per un attacco denial of service. Grazie a John Morrison ([email protected]) per avermi avvisato di questo potenziale. Un programma canaglia (mer) potrebbe facilmente invadere il demone syslogd con i messaggi syslog, con il risultato che i file di log consumano tutto lo spazio rimanente sul filesystem. L'attivazione della registrazione sui socket di dominio inet ovviamente espone un sistema a rischi al di fuori di programmi o individui sul computer locale.

Esistono numerosi metodi per proteggere una macchina:

  1. Implementare il firewall del kernel per limitare gli host o le reti che hanno accesso al socket 514 / UDP.
  2. La registrazione può essere diretta a un filesystem isolato o non root che, se riempito, non comprometterà la macchina.
  3. È possibile utilizzare il filesystem ext2 che può essere configurato per limitare una certa percentuale di un filesystem all'utilizzo solo da root.NOTA che ciò richiederà syslogd per essere eseguito come un processo non-root. ANCHE NOTA ciò impedirà l'utilizzo della registrazione remota poiché syslogd non sarà in grado di collegarsi al socket 514 / UDP.
  4. La disabilitazione dei socket di dominio inet limiterà il rischio sul computer locale.
  5. Utilizzare il punto 4 e se il problema persiste e non è secondario a un programma / daemon non autorizzato, ottenere una lunghezza di 3,5 ft (circa 1 metro) di asta di aspirazione * e fare una chat con l'utente in questione. Sucker rod def. --- 3/4, 7/8 o 1 in. asta in acciaio temprato, filettatura maschio su ciascuna estremità. Uso primario nell'industria petrolifera nel Nord Dakota occidentale e in altri luoghi per pompare l'olio "succhiare" dai pozzi petroliferi. Gli usi secondari riguardano la costruzione di lotti di mangimi per il bestiame e la gestione occasionale di individui recalcitranti o belligeranti.

Debug

Quando il debug è attivo usando-d opzione allorasyslogd sarà molto prolisso scrivendo molto di ciò che fa sullo stdout. Ogni volta che il file di configurazione viene riletto e riscritto, verrà visualizzato un tabulare, corrispondente alla struttura interna dei dati. Questo tabulare consiste di quattro campi:

numero

Questo campo contiene un numero di serie che inizia da zero. Questo numero rappresenta la posizione nella struttura dati interna (cioè la matrice). Se un numero è escluso, potrebbe esserci un errore nella riga corrispondente in /etc/syslog.conf .

modello

Questo campo è difficile e rappresenta esattamente la struttura interna. Ogni colonna rappresenta una struttura (fare riferimento asyslog(3)). Come puoi vedere, ci sono ancora alcune strutture lasciate libere per l'uso precedente, solo le più a sinistra sono usate. Ogni campo in una colonna rappresenta le priorità (fare riferimento asyslog(3)).

azione

Questo campo descrive l'azione particolare che si svolge ogni volta che viene ricevuto un messaggio che corrisponde al modello. Fare riferimento asyslog.conf(5) manpage per tutte le azioni possibili.

argomenti

Questo campo mostra argomenti aggiuntivi per le azioni nell'ultimo campo. Per la registrazione dei file questo è il nome del file di log; per la registrazione degli utenti questa è una lista di utenti; per la registrazione remota questo è il nome host della macchina a cui accedere; per la registrazione della console questa è la console utilizzata; per tty-logging questo è il tty specificato; il muro non ha argomenti addizionali.

Guarda anche

logger(1), syslog(2), (5)

collaboratori

syslogd è preso da fonti BSD, Greg Wettstein ([email protected]) ha eseguito il port su Linux, Martin Schulze ([email protected]) ha corretto alcuni bug e aggiunto diverse nuove funzionalità.klogdè stato originariamente scritto da Steve Lord ([email protected]), Greg Wettstein ha apportato importanti miglioramenti.

Dr. Greg WettsteinSviluppo di sistemi enjellici

Funzione di calcolo della divisione di ricerca oncologicaRoger Maris Cancer CenterFargo, ND[email protected]

Stephen TweedieDipartimento di InformaticaUniversità di Edimburgo, Scozia[email protected]

Juha Virtanen[email protected]

Shane Alderton[email protected]

Martin SchulzeInfodrom Oldenburg[email protected]

Importante: Utilizzare il uomo comando ( % uomo ) per vedere come viene utilizzato un comando sul tuo computer specifico.

articoli Correlati

  • sysklogd - Comando Linux - Comando Unix
  • rwall - Cos'è rwa