Sysklogd tillhandahåller två systemverktyg som ger stöd för systemloggning och inmatning av kärnmeddelanden. Stöd för både internet och unix domänuttag gör det möjligt för detta verktygspaket att stödja både lokal och fjärrloggning.
Systemloggning tillhandahålls av en version avsyslogd(8) härledda från stock BSD källor. Stöd för kärnloggning tillhandahålls avklogd(8) verktyg som tillåter kärnloggning att utföras antingen på ett fristående sätt eller som en klient hos syslogd.
Syslogd tillhandahåller en slags loggning som många moderna program använder. Varje loggat meddelande innehåller minst en tid och ett värdnamnfält, normalt ett programnamnfält, men det beror på hur pålitligt loggprogrammet är.
Medansyslogd källorna har kraftigt modifierats ett par noter är i ordning. Först och främst har det funnits ett systematiskt försök att säkerställa att syslogd följer sitt standardiserade BSD-beteende. Det andra viktiga konceptet att notera är att denna version av syslogd samverkar öppet med den version av syslog som finns i standardbiblioteken. Om ett binärt kopplat till de vanliga delade biblioteken inte fungerar korrekt, skulle vi vilja ha ett exempel på det avvikande beteendet.
Huvudkonfigurationsfilen /etc/syslog.conf eller en alternativ fil, som ges med-f alternativet läses vid start. Alla rader som börjar med hash-markeringen (`` # '') och tomma rader ignoreras. Om ett fel uppstår under analysering ignoreras hela linjen.
Synopsis
syslogd -en uttag -d -f config-filen -h -l hostlist -m intervall -n -p uttag -r -s domainlist -v -x
alternativ
-en uttag
Med detta argument kan du ange ytterligare uttag ur detsyslogd måste lyssna på. Detta behövs om du ska låta vissa demoner springa inom en chroot () miljö. Du kan använda upp till 19 extra uttag. Om din miljö behöver ännu mer måste du öka symbolenMAXFUNIX inom filen syslogd.c källan. Ett exempel på en chroot () demon beskrivs av folket från OpenBSD på http://www.psionic.com/papers/dns.html.
-d
Aktiverar felsökningsläge. Med detta kommer inte demonen att fortsätta agaffel(2) för att sätta sig i bakgrunden, men motsatsen till den förblivningen i förgrunden och skriva mycket debuginformation på den aktuella ttyen. Se avsnittet DEBUGGING för mer information.
-f config-filen
Ange en alternativ konfigurationsfil istället för /etc/syslog.conf , vilket är standardvärdet.
-h
Som standard skickar syslogd inte meddelanden som den tar emot från fjärrvärdar. Om du anger denna omkopplare på kommandoraden får loggenheten vidarebefordra alla fjärrmeddelanden som den tar emot till vidarebefordringsvärdar som har definierats.
-l hostlist
Ange ett värdnamn som bara ska loggas med sitt enkla värdnamn och inte fqdn. Flera värdar kan anges med hjälp av kolon (``: '') separator.
-m intervall
Desyslogd loggar en tidstämpel regelbundet. Standarden intervall mellan två - MARK - linjer är 20 minuter. Detta kan ändras med det här alternativet. Ställa in intervall till noll stängs av helt.
-n
Undvik automatisk bakgrundsbildning. Detta behövs, särskilt omsyslogd startas och styrs avi det(8).
-p uttag
Du kan ange ett alternativt unix-domänuttag istället för / Dev / log .
-r
Det här alternativet gör det möjligt för anläggningen att ta emot ett meddelande från nätverket med ett internet domänuttag med syslog-tjänsten (se (5)). Standardvärdet är att inte ta emot några meddelanden från nätverket.
Detta alternativ introduceras i version 1.3 i sysklogd-paketet. Observera att standardbeteendet är motsatsen till hur äldre versioner beter sig, så du kanske måste aktivera det här.
-s domainlist
Ange ett domännamn som ska avlägsnas innan du loggar in. Flera domäner kan anges med hjälp av kolon (``: '') separator. Observera att inga underdomäner kan anges men endast hela domäner. Till exempel om-s nord.de specificeras och värdloggen löser till satu.infodrom.north.de ingen domän skulle skäras, du måste ange två domäner som:-s north.de:infodrom.north.de.
-v
Utskriftsversion och avsluta.
-x
Inaktivera namnuppslag när du tar emot fjärrmeddelanden. Detta undviker deadlocks när namnserveren körs på samma maskin som kör syslog-demonen.
signaler
syslogd reagerar på en uppsättning signaler. Du kan enkelt skicka en signal tillsyslogd använder följande:
döda -SIGNAL `cat / var / run / syslogd.pid`
SIGHUP
Detta låtersyslogd utföra en ominitiering. Alla öppna filer är stängda, konfigurationsfilen (standard är /etc/syslog.conf ) kommer att läsas igen ochsyslog(3) anläggningen startas igen.
SIGTERM
Desyslogd kommer att dö.
SIGINT, SIGQUIT
Om debugging är aktiverad ignoreras dessa, annarssyslogd kommer att dö.
SIGUSR1
Aktivera / avaktivera felsökning. Detta alternativ kan endast användas omsyslogd startas med-d felsökningsalternativ.
SIGCHLD
Vänta på barn om några är födda på grund av att de har meddelanden.
Konfigurationsfilsyntaxskillnader
syslogd använder en något annorlunda syntax för sin konfigurationsfil än de ursprungliga BSD-källorna. Ursprungligen skickades alla meddelanden med en specifik prioritet och över till loggfilen.
Till exempel orsakade följande rad ALLA utdata från daemoner som använder demonanläggningarna (debug är den lägsta prioriteten, så alla högre kommer också att matcha) för att gå in i / Usr / adm / demoner :
# Prov syslog.conf daemon.debug / usr / adm / daemons
Under det nya systemet är detta beteende detsamma. Skillnaden är tillägget av fyra nya specifikationer, asterisken (*) wildcard, ekvationsteckenet (=), utropsteckenet (!) och minustecknet (-).
De* anger att alla meddelanden för den angivna anläggningen ska riktas till destinationen. Observera att detta beteende är degenererat med att ange en prioritetsnivå för felsökning. Användare har angett att asterisknotationen är mer intuitiv.
De= jokertecken används för att begränsa loggning till angiven prioritetsklass. Detta gör det möjligt att till exempel bara dirigera felsökningsmeddelanden till en viss loggkälla.
Till exempel följande rad i syslog.conf skulle rikta debugmeddelanden från alla källor till / Usr / adm / debug fil.
# Prov syslog.conf *. = Debug / usr / adm / debug
De! används för att utesluta loggning av de angivna prioriteringarna. Detta påverkar alla (!) Möjligheter att specificera prioriteringar.
Till exempel skulle följande rader logga alla meddelanden i facilitetspostet utom de med prioritetsinfo till / Usr / adm / post fil. Och alla meddelanden från news.info (inklusive) till news.crit (exklusive) skulle loggas till / Usr / adm / nyheter fil.
# Sample syslog.conf mail. *; Mail.! = Info / usr / adm / mail news.info; nyheter.! Crit / usr / adm / news
Du kan använda den intuitivt som ett undantagsspecifikt. Ovannämnda tolkning är helt enkelt inverterad. Gör det du kan använda
mail.none
eller
post.!*
eller
debug mail.!
att hoppa över alla meddelanden som kommer med en postfacilitet. Det finns mycket utrymme att spela med det. :-)
De- får bara användas för att prefixa ett filnamn om du inte vill synkronisera filen efter varje skriv till den.
Detta kan ta lite acklimatisering för de personer som använde sig av det rena BSD-beteendet, men testare har angett att denna syntax är något mer flexibel än BSD-beteendet. Observera att dessa ändringar inte ska påverka standardensyslog.conf(5) filer. Du måste specifikt ändra konfigurationsfilerna för att få det förbättrade beteendet.
Stöd för fjärrloggning
Dessa ändringar ger nätverksstöd till syslogd-anläggningen. Nätverksstöd innebär att meddelanden kan vidarebefordras från en nod som kör syslogd till en annan nod som kör syslogd där de faktiskt kommer att loggas till en skivfil.
För att aktivera detta måste du ange-r alternativet på kommandoraden. Standardbeteendet är detsyslogd kommer inte att lyssna på nätverket.
Strategin är att ha syslogd lyssna på ett unix domänuttag för lokalt genererade logmeddelanden. Detta beteende låter syslogd interagera med syslogen som finns i standard C-biblioteket. Samtidigt lyssnar syslogd på standard syslog porten för meddelanden som vidarebefordras från andra värdar. För att få detta arbete korrekttjänster(5) filer (vanligtvis finns i /etc ) måste ha följande post:
syslog 514 / udp
Om denna post saknassyslogd inte heller kan få fjärrmeddelanden eller skicka dem, eftersom UDP-porten inte kan öppnas. Istället, syslogd kommer att dö direkt och spränga ett felmeddelande.
För att få meddelanden att vidarebefordras till en annan värd ersätt den normala filrutan i syslog.conf fil med namnet på den värd som meddelandena ska skickas uppförd med en @.
Till exempel, att vidarebefordraALLT meddelanden till en fjärrd värd med hjälp av följande syslog.conf inträde:
# Sample syslogd konfigurationsfil till # meddelanden till en fjärrvärd framåt alla. *. * @hostname
För att vidarebefordra allakärna meddelanden till en fjärrdator kommer konfigurationsfilen att vara enligt följande:
# Provkonfigurationsfil för att vidarebefordra alla kärnan # meddelanden till en fjärrdator. kärna. * @hostname
Om fjärr värdnamn inte kan lösas vid start, eftersom namnservern kanske inte är tillgänglig (den kan startas efter syslogd) behöver du inte oroa dig.syslogd kommer att försöka lösa namnet tio gånger och sedan klaga. En annan möjlighet att undvika detta är att placera värdnamnet i / etc / hosts .
Med normalsyslogds du skulle få syslog-loopar om du skickar ut meddelanden som mottagits från en fjärr värd till samma värd (eller mer komplicerat till en tredje värd som skickar den tillbaka till den första, och så vidare). I min domän (Infodrom Oldenburg) fick vi av misstag en och våra diskar fyllde med samma enda meddelande. :-(
För att undvika detta i ytterligare tider, skickades inga meddelanden som mottagits från en fjärr värd vidare till en annan (eller samma) fjärrvärden längre. Om det finns scenarier där det inte är vettigt, snälla släpp mig (Joey) en rad.
Om fjärrvärden ligger i samma domän som värden,syslogd körs på, bara det enkla värdnamnet kommer att loggas istället för hela fqdn.
I ett lokalt nätverk kan du tillhandahålla en central loggserver för att få all viktig information kvar på en maskin. Om nätverket består av olika domäner behöver du inte klaga på att logga in fullt kvalificerade namn istället för enkla värdnamn. Du kanske vill använda funktionen remsa domänen-s av den här servern. Du kan berätta försyslogd att avlägsna flera domäner än den som servern finns i och logga bara på enkla värdnamn.
Använda-l alternativet finns det också möjlighet att definiera enskilda värdar som lokala maskiner. Detta resulterar också i att logga bara sina enkla värdnamn och inte fqdns.
UDP-uttaget som används för att vidarebefordra meddelanden till fjärrvärdar eller för att ta emot meddelanden från dem öppnas endast när det behövs. I utgåvor före 1.3-23 öppnades det varje gång men inte öppnas för läsning eller vidarebefordran.
Utgång till namngivna rör (FIFO)
Den här versionen av syslogd har stöd för loggning till namngivna pipes (femos). Ett femo eller namngivna rör kan användas som en destination för loggmeddelanden genom att lägga ut en pipysymbol (`` | '') till namnet på filen. Detta är användbart för felsökning. Observera att femo måste skapas med kommandot mkfifo innan syslogd startas.
Följande konfigurationsfil rutter felsökningsmeddelanden från kärnan till en femo:
# Provkonfiguration för att köra felsökning av kärnan # meddelanden ENDAST till / usr / adm / debug vilket är ett # namngivet rör. kärna. = debug | / usr / adm / debug
Installation Bekymmer
Det är förmodligen en viktig faktor när du installerar den här versionen av syslogd. Den här versionen av syslogd är beroende av korrekt formatering av meddelanden med syslog-funktionen. Funktionen för syslog-funktionen i de delade biblioteken ändras någonstans i regionen libc.so.4. 2-4 .n. Den specifika förändringen var att nollställa meddelandet innan det skickades till / Dev / log uttag. Korrekt funktion av denna version av syslogd beror på att meddelandet upphör att gälla.
Detta problem kommer vanligtvis att manifesteras om gamla statiskt länkade binärer används på systemet. Binarier som använder gamla versioner av syslog-funktionen kommer att leda till att tomma linjer loggas följt av meddelandet med det första tecknet i meddelandet borttaget. Om du kopplar om dessa binärer till nyare versioner av de delade biblioteken kommer du att åtgärda problemet.
Bådesyslogd(8) ochklogd(8) kan antingen köras från init (8) eller startas som en del av rc * * -sekvensen. Om det startas från init alternativet -n måste ställas, annars får du massor av syslog-demoner påbörjade. Det här är för atti det(8) beror på process ID.
Säkerhetshot
Det finns möjligheten för syslogdemonen att användas som en ledning för avslag på serviceavfall. Tack gå till John Morrison ([email protected]) för att varna mig för denna potential. Ett skurkprogram (mer) kan mycket enkelt översätta syslogdemonen med syslog-meddelanden vilket resulterar i att loggfilerna förbrukar allt återstående utrymme på filsystemet. Aktivering av loggning över inet-domänuttagen kommer givetvis att exponera ett system för risker utanför program eller individer på den lokala maskinen.
Det finns ett antal metoder för att skydda en maskin:
- Implementera kärnväggväggar för att begränsa vilka värdar eller nätverk som har tillgång till 514 / UDP-uttaget.
- Logging kan riktas till ett isolerat eller icke-rotfilsystem som, om det fylls, inte kommer att försämra maskinen.
- Ext2-filsystemet kan användas som kan konfigureras för att begränsa en viss procentandel av ett filsystem till användning endast av root.NOTERA att detta kommer kräva att syslogd körs som en icke-rot process. OBSERVERA att detta kommer att förhindra användning av fjärrloggning eftersom syslogd inte kan binda till 514 / UDP-uttaget.
- Inaktivera inet domänuttag sänker risken för den lokala maskinen.
- Använd steg 4 och om problemet kvarstår och inte är sekundärt till ett rogue-program / daemon, få en 3,5 ft (ca 1 meter) längd sugstång * och ha en chatt med användaren i fråga. Sugstång def. --- 3/4, 7/8 eller 1in. Härdad stålstav, mangängad i varje ände. Primär användning i oljeindustrin i Western North Dakota och andra platser för att pumpa "suga" olja från oljebrunnar. Sekundära användningsområden är för uppbyggnad av foderpartier och för att hantera den enstaka återkommande eller krigande personen.
felsökning
När debugging är aktiverad med-d alternativ dåsyslogd kommer att vara väldigt verbos genom att skriva mycket av vad det gör på stdout. När konfigurationsfilen läser och ompreses ser du en tabellform som motsvarar den interna datastrukturen. Denna tabell består av fyra fält:
siffra
Detta fält innehåller ett serienummer som börjar med noll. Detta nummer representerar läget i den interna datastrukturen (dvs arrayen). Om ett nummer är utelämnat kan det finnas ett fel i motsvarande linje i /etc/syslog.conf .
mönster
Detta fält är knepigt och representerar den interna strukturen exakt. Varje kolumn står för en anläggning (sesyslog(3)). Som du kan se finns det fortfarande några anläggningar som är kvar fri för tidigare användning, bara de vänstra mest används. Varje fält i en kolumn representerar prioriteringarna (sesyslog(3)).
verkan
Det här fältet beskriver den särskilda åtgärden som äger rum när ett meddelande är mottaget som matchar mönstret. Referera tillsyslog.conf(5) manpage för alla möjliga åtgärder.
argument
Det här fältet visar ytterligare argument för åtgärderna i det sista fältet. För filloggning är detta filnamnet för loggfilen; för användarloggning här är en lista över användare; För fjärrloggning är detta maskinens värdnamn för att logga till; För konsolloggning är detta den använda konsolen; för tty-logging detta är den angivna tty; väggen har inga ytterligare argument.
Se även
logger(1), syslog(2), (5)
medarbetare
syslogd tas från BSD-källor, Greg Wettstein ([email protected]) utförde porten till Linux, Martin Schulze ([email protected]) fixade några buggar och lade till flera nya funktioner.klogdvar ursprungligen skrivet av Steve Lord ([email protected]), gjorde Greg Wettstein stora förbättringar.
Dr Greg WettsteinEnjellic Systems Development Oncology Research Division Computing FacilityRoger Maris Cancer CenterFargo, ND[email protected] Stephen TweedieInstitutionen för datavetenskapEdinburgh University, Scotland[email protected] Juha Virtanen[email protected] Shane Alderton[email protected] Martin SchulzeInfodrom Oldenburg[email protected] Viktig: Använd man kommando ( % man ) för att se hur ett kommando används på din dator. relaterade artiklar