Syslogd Linux at Unix Command

Ang Sysklogd ay nagbibigay ng dalawang sistema ng mga utility na nagbibigay ng suporta para sa pag-log ng system at pag-utak ng kernel message. Ang suporta ng parehong mga sockets ng internet at unix domain ay nagbibigay-daan sa utility na pakete na ito upang suportahan ang parehong lokal at remote na pag-log.

Ang sistema ng pag-log ay ibinibigay ng isang bersyon ng syslogd (8) na nagmula sa mga mapagkukunan ng BSD ng stock. Suporta para sa pag-log ng kernel ay ibinigay ng klogd (8) na utility na nagpapahintulot sa pag-log ng kernel na isagawa sa alinman sa isang standalone na paraan o bilang isang client ng syslogd.

Ang Syslogd ay nagbibigay ng isang uri ng pag-log na ginagamit ng maraming modernong programa. Ang bawat naka-log na mensahe ay naglalaman ng hindi bababa sa isang oras at isang patlang ng hostname, karaniwang isang patlang ng pangalan ng programa, masyadong, ngunit depende sa kung paano mapagkakatiwalaan ang programa ng pag-log.

Habang ang mga pinagmumulan ng syslogd ay mabago nang binago ang ilang mga tala ay nasa order. Una sa lahat ay may isang sistematikong pagtatangka upang matiyak na ang syslogd ay sumusunod sa default, karaniwang BSD na pag-uugali. Ang ikalawang mahalagang konsepto na dapat tandaan ay ang bersyon na ito ng syslogd ay nakikipag-ugnayan nang maliwanag sa bersyon ng syslog na natagpuan sa karaniwang mga aklatan. Kung ang isang binary na naka-link sa mga karaniwang nakabahaging mga aklatan ay hindi gumagana nang tama nais namin ang isang halimbawa ng maanomang pag-uugali.

Ang pangunahing configuration file /etc/syslog.conf o isang alternatibong file, na binibigyan ng -f na opsiyon, ay mabasa sa startup. Ang anumang mga linya na nagsisimula sa hash mark (`` # '') at walang laman na mga linya ay binabalewala. Kung ang isang error ay nangyayari sa panahon ng pag-parse ang buong linya ay hindi pinansin.

Buod

syslogd [ -a socket ] [ -d ] [ -f config file ] [ -h ] [ -l hostlist ] [ -m pagitan ] [ -n ] [ -p socket ] [ -r ] [ -s domainlist ] [ - v ] [ -x ]

Mga Opsyon

-isang socket

Gamit ang argument na ito, maaari mong tukuyin ang mga karagdagang sockets mula sa syslogd na kailangang makinig. Ito ay kinakailangan kung pupuntahan mo ang ilang mga demonyo tumakbo sa loob ng isang chroot () kapaligiran. Maaari mong gamitin ang hanggang sa 19 karagdagang sockets. Kung ang iyong kapaligiran ay nangangailangan ng higit pa, kailangan mong dagdagan ang simbolo MAXFUNIX sa loob ng syslogd.c source file. Ang isang halimbawa para sa isang chroot () daemon ay inilarawan ng mga tao mula sa OpenBSD sa http://www.psionic.com/papers/dns.html.

-d

Nagbubukas sa debug mode. Gamit ang mga ito ang daemon ay hindi magpapatuloy ng isang tinidor (2) upang itakda ang sarili sa background, ngunit kabaligtaran sa na manatili sa harapan at magsulat ng maraming debug impormasyon sa kasalukuyang tty. Tingnan ang seksyon ng DEBUGGING para sa higit pang impormasyon.

-f config file

Tukuyin ang isang alternatibong file ng pagsasaayos sa halip ng /etc/syslog.conf , na siyang default.

-h

Sa pamamagitan ng default syslogd hindi ipapadala ang mga mensahe na natatanggap nito mula sa mga remote na host. Ang pagtukoy sa paglipat na ito sa command line ay magdudulot sa pag-forward ng log daemon sa anumang mga remote na mensahe na natatanggap nito sa pagpapasa ng mga host na tinukoy.

-l hostlist

Tukuyin ang isang hostname na dapat naka-log lamang sa simpleng hostname nito at hindi sa fqdn. Maaaring tinukoy ang maramihang mga host gamit ang colon (``: '') separator.

-m pagitan

Ang syslogd ay nagtatala ng timestamp ng marka nang regular. Ang default na agwat sa pagitan ng dalawang - MARK - mga linya ay 20 minuto. Mababago ito sa pagpipiliang ito. Ang pagtatakda ng agwat sa zero ay lumiliko ito nang buo.

-n

Iwasan ang auto-background. Ito ay kinakailangan lalo na kung ang syslogd ay nagsimula at kinokontrol ng init (8).

-p socket

Maaari mong tukuyin ang isang alternatibong socket ng unix domain sa halip ng / dev / log .

-r

Ang pagpipiliang ito ay magbibigay-daan sa pasilidad na makatanggap ng isang mensahe mula sa network gamit ang isang socket ng internet domain gamit ang syslog service (tingnan ang (5)). Ang default ay hindi makatanggap ng anumang mga mensahe mula sa network.

Ang pagpipiliang ito ay ipinakilala sa bersyon 1.3 ng pakete ng sysklogd. Mangyaring tandaan na ang default na pag-uugali ay ang kabaligtaran kung paano kumilos ang mga lumang bersyon, kaya maaaring kailangan mong i-on ito.

-sama sa domainlist

Tukuyin ang isang pangalan ng domain na dapat i-strip bago mag-log. Maramihang mga domain ay maaaring tinukoy gamit ang colon (``: '') separator. Mangyaring maabisuhan na walang mga sub-domain ay maaaring tinukoy ngunit buong domain. Halimbawa kung ang -s north.de ay tinukoy at ang pag-log ng host ay nalulutas sa isa.infodrom.north.de walang domain ay gupitin, kakailanganin mong tukuyin ang dalawang mga domain tulad ng: -s north.de:infodrom.north.de .

-v

I-print ang bersyon at exit.

-x

Huwag paganahin ang mga lookup ng pangalan kapag tumatanggap ng mga malayuang mensahe. Ito ay nag-iwas sa mga deadlock kapag ang nameserver ay tumatakbo sa parehong machine na nagpapatakbo ng syslog demonyo.

Mga senyas

Ang reaksiyon ng Syslogd ay isang hanay ng mga signal. Maaari kang madaling magpadala ng isang senyas sa syslogd gamit ang mga sumusunod:

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

Sighup

Ito ay nagbibigay-daan sa syslogd magsagawa ng muling pagsisimula. Lahat ng mga bukas na file ay sarado, ang configuration file (default ay /etc/syslog.conf ) ay muling bubuksan at ang syslog (3) na pasilidad ay nagsimula muli.

SIGTERM

Ang syslogd ay mamamatay.

SIGINT , SIGQUIT

Kung pinagana ang debugging ang mga ito ay hindi pinansin, kung hindi man ay syslogd ay mamatay.

SIGUSR1

Magpalit ng debugging sa / off. Ang pagpipiliang ito ay magagamit lamang kung ang syslogd ay nagsimula sa opsyon na -d debug.

SIGCHLD

Maghintay para sa mga bata kung ang ilan ay ipinanganak, dahil sa mga mensahe ng wall'ing.

Pagkakaiba-iba ng Syntax ng File ng Configuration

Gumagamit ang Syslogd ng bahagyang naiibang syntax para sa configuration file nito kaysa sa orihinal na pinagmumulan ng BSD. Orihinal na lahat ng mga mensahe ng isang partikular na prayoridad at sa itaas ay ipinasa sa log file.

Halimbawa, ang mga sumusunod na linya ay nagdulot ng LAHAT na output mula sa mga daemon gamit ang mga pasilidad ng daemon (debug ay ang pinakamababang priyoridad, kaya ang bawat mas mataas ay tutugma) upang pumunta sa / usr / adm / daemon :

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

Sa ilalim ng bagong pamamaraan, ang pag-uugali na ito ay nananatiling pareho. Ang kaibahan ay ang pagdaragdag ng apat na bagong specifiers, ang asterisk ( * ) wildcard, ang equation sign ( = ), ang exclamation mark ( ! ), At ang minus sign ( - ).

Tinutukoy ng * na ang lahat ng mga mensahe para sa tinukoy na pasilidad ay dapat ituro sa patutunguhan. Tandaan na ang pag-uugali na ito ay lumubha sa pagtukoy ng antas ng pag-debug ng priyoridad. Ipinakikita ng mga user na ang notasyon ng asterisk ay mas magaling.

Ang = wildcard ay ginagamit upang paghigpitan ang pag-log sa tinukoy na klase ng priyoridad. Ito ay nagbibigay-daan, halimbawa, ang routing ay mag-debug lamang ng mga mensahe sa isang partikular na pag-log source.

Halimbawa, ang sumusunod na linya sa syslog.conf ay direktang mag-debug ng mga mensahe mula sa lahat ng mga mapagkukunan sa / usr / adm / debug na file.

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

Ang ! ay ginagamit upang ibukod ang pag-log ng mga tinukoy na prayoridad. Nakakaapekto ito sa lahat ng (!) Mga posibilidad ng pagtukoy ng mga prayoridad.

Halimbawa, ang mga sumusunod na linya ay mag-log sa lahat ng mga mensahe ng mail ng pasilidad maliban sa mga may impormasyon sa priyoridad sa / usr / adm / mail file. At lahat ng mga mensahe mula sa news.info (kasama) sa news.crit (hindi kasama) ay naka-log in sa / usr / adm / news file.

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

Maaari mong gamitin ito intuitively bilang isang exception specifier. Ang nakasaad na nabanggit na interpretasyon ay nakabalik lamang. Ang paggawa nito ay maaari mong gamitin

mail.none

o

mail.! *

o

mail.! debug

upang laktawan ang bawat mensahe na may pasilidad ng mail. Mayroong maraming silid upang i-play ito. :-)

Ang - ay maaari lamang gamitin upang prefix ng isang filename kung nais mong alisin ang pag-sync ng file pagkatapos ng bawat sumulat dito.

Ito ay maaaring tumagal ng ilang acclimatization para sa mga indibidwal na ginagamit upang ang purong pag-uugali BSD ngunit ang mga tagasubok na ipinahiwatig na ang syntax na ito ay medyo mas nababaluktot kaysa sa BSD pag-uugali. Tandaan na ang mga pagbabagong ito ay hindi dapat makakaapekto sa karaniwang syslog.conf (5) na mga file. Dapat mong baguhin ang partikular na mga file ng configuration upang makuha ang pinahusay na pag-uugali.

Suporta Para sa Remote Logging

Ang mga pagbabagong ito ay nagbibigay ng suporta sa network sa pasilidad ng syslogd. Ang suporta sa network ay nangangahulugan na ang mga mensahe ay maaaring maipasa mula sa isang node na tumatakbo syslogd sa isa pang node na tumatakbo syslogd kung saan sila ay talagang naka-log sa isang disk file.

Upang paganahin ito kailangan mong tukuyin ang pagpipiliang -r sa command line. Ang default na pag-uugali ay ang syslogd ay hindi makikinig sa network.

Ang diskarte ay ang magkaroon ng syslogd makinig sa isang unix domain socket para sa lokal na nabuo na mga mensahe ng log. Ang pag-uugali na ito ay magpapahintulot sa syslogd na maki-inter-operate sa syslog na matatagpuan sa standard library ng C. Kasabay nito ay nakikinig ang syslogd sa standard syslog port para sa mga mensahe na ipapasa mula sa ibang host. Upang maayos ang gawaing ito ang mga serbisyo (5) na mga file (karaniwan ay matatagpuan sa / etc ) ay dapat magkaroon ng sumusunod na entry:

syslog 514 / udp

Kung ang entry na ito ay nawawala syslogd hindi maaaring makatanggap ng mga malayuang mensahe o ipadala ang mga ito, dahil ang UDP port cant mabuksan. Sa halip, ang syslogd ay mamatay agad, pagbubuga ng mensahe ng error.

Upang maging sanhi ng pagpapadala ng mga mensahe sa ibang host, palitan ang normal na linya ng file sa syslog.conf file na may pangalan ng host kung saan ipapadala ang mga mensahe na prepended sa isang @.

Halimbawa, upang ipasa ang LAHAT ng mga mensahe sa isang remote host gamit ang sumusunod na entry syslog.conf :

# Sample syslogd configuration file sa # mensahe sa isang remote host forward lahat. *. * @hostname

Upang maipasa ang lahat ng mga kernel message sa isang remote host ang configuration file ay magiging tulad ng sumusunod:

# Sample configuration file upang maipasa ang lahat ng kernel # messages sa isang remote host. kern. * @hostname

Kung ang remote hostname ay hindi malulutas sa startup, dahil ang pangalan-server ay maaaring hindi mapuntahan (maaaring ito ay magsimula pagkatapos syslogd) hindi mo kailangang mag-alala. Ang Syslogd ay muling subukan upang malutas ang pangalan ng sampung beses at pagkatapos ay magreklamo. Ang isa pang posibilidad upang maiwasan ito ay ilagay ang hostname sa / etc / host .

Sa normal na syslogd makakakuha ka ng syslog-loops kung magpadala ka ng mga mensahe na natanggap mula sa isang remote host sa parehong host (o mas kumplikado sa isang third host na nagpapadala nito pabalik sa una, at iba pa). Sa aking domain (Infodrom Oldenburg) hindi namin sinasadyang nakuha ang isa at ang aming mga disk na puno ng parehong solong mensahe. :-(

Upang maiwasan ito sa karagdagang mga oras walang mga mensahe na natanggap mula sa isang remote na host ay ipinadala sa ibang (o pareho) remote na host ngayon. Kung may mga sitwasyon kung saan ito ay walang kahulugan, mangyaring i-drop sa akin (Joey) isang linya.

Kung ang remote na host ay matatagpuan sa parehong domain bilang host, syslogd ay tumatakbo sa, tanging ang simpleng hostname ay naka-log in sa halip ng buong fqdn.

Sa isang lokal na network maaari kang magbigay ng isang sentro ng server ng log na magkaroon ng lahat ng mahahalagang impormasyon na pinananatili sa isang makina. Kung ang network ay binubuo ng iba't ibang mga domain hindi mo kailangang magreklamo tungkol sa pag-log ng ganap na kwalipikadong mga pangalan sa halip ng mga simpleng mga hostname. Baka gusto mong gamitin ang strip-domain feature -s ng server na ito. Maaari mong sabihin sa syslogd na tanggalin ang ilang mga domain maliban sa isang server na matatagpuan sa at mag-log lamang simpleng mga hostname.

Ang paggamit ng pagpipilian sa -l ay mayroon ding isang posibilidad na tukuyin ang nag-iisang host bilang mga lokal na makina. Ito rin ay nagreresulta sa pag-log lamang ng kanilang simpleng mga hostname at hindi ang mga fqdns.

Ang socket ng UDP na ginagamit upang ipasa ang mga mensahe sa mga remote host o upang makatanggap ng mga mensahe mula sa mga ito ay binuksan lamang kapag ito ay kinakailangan. Sa paglabas bago ang 1.3-23 binuksan ito tuwing hindi nabuksan para sa pagbabasa o pagpapasa ayon sa pagkakabanggit.

Output to Named Pipes (FIFOs)

Ang bersyon na ito ng syslogd ay may suporta para sa pag-log output sa pinangalanan na mga tubo (fifos). Ang isang fifo o pinangalanan na tubo ay maaaring gamitin bilang destinasyon para sa mga mensahe ng pag-log sa pamamagitan ng paghahanda ng isang pipy symbol (`` | '') sa pangalan ng file. Ito ay madaling gamitin para sa pag-debug. Tandaan na ang fifo ay dapat na nilikha gamit ang mkfifo command bago magsimula ang syslogd.

Ang mga sumusunod na ruta ng configuration file ay mag-debug ng mga mensahe mula sa kernel sa isang fifo:

# Sample na pagsasaayos sa ruta ng pag-debug ng kernel # mga mensahe LAMANG sa / usr / adm / debug na isang # pinangalanang pipe. kern. = debug | / usr / adm / debug

Pag-iingat ng Pag-install

Marahil ay isang mahalagang konsiderasyon kapag ini-install ang bersyong ito ng syslogd. Ang bersyon na ito ng syslogd ay nakasalalay sa wastong pag-format ng mga mensahe ng syslog function. Ang pag-andar ng pag-andar ng syslog sa mga nakabahaging mga aklatan ay nagbago sa isang lugar sa rehiyon ng libc.so.4. [2-4] .n. Ang tiyak na pagbabago ay upang balewalain ang mensahe bago ipadala ito sa socket / dev / log . Ang wastong paggana ng bersyon na ito ng syslogd ay nakasalalay sa null-termination ng mensahe.

Ang problemang ito ay kadalasang ipakikita ang sarili kung ang mga lumang naka-link na binary na pang-estilo ay ginagamit sa system. Ang mga binary na gumagamit ng mga lumang bersyon ng pag-andar ng syslog ay magdudulot ng mga walang laman na linya na ma-log na sinusundan ng mensahe na may unang character sa mensahe na inalis. Ang pagpapalitan ng mga binary na ito sa mga mas bagong bersyon ng mga nakabahaging mga aklatan ay magtatakda ng problemang ito.

Ang parehong syslogd (8) at ang klogd (8) ay maaaring tumakbo mula sa init (8) o nagsimula bilang bahagi ng rc. * Na pagkakasunud-sunod. Kung nagsimula ito mula sa init ang pagpipilian -n dapat itakda, kung hindi man, makakakuha ka ng tons ng mga syslog na daemon na nagsimula. Ito ay dahil ang init (8) ay nakasalalay sa proseso ng ID.

Mga Banta sa Seguridad

May potensyal na para sa syslogd daemon na gagamitin bilang isang tubo para sa isang pagtanggi ng pag-atake sa serbisyo. Salamat pumunta kay John Morrison (jmorriso@rflab.ee.ubc.ca) para sa pagpaalala sa akin sa potensyal na ito. Ang isang taong nagdudulot ng programa (mer) ay napakadaling baha ang syslogd daemon na may mga mensaheng syslog na nagreresulta sa mga file ng pag-log na gumagamit ng lahat ng natitirang espasyo sa mga filesystem . Ang pag-activate ng pag-log sa mga sockets ng inet domain ay siyempre ilantad ang isang sistema sa mga panganib sa labas ng mga programa o mga indibidwal sa lokal na makina.

Mayroong ilang mga paraan ng pagprotekta sa isang makina:

  1. Ipatupad ang kernel firewalling upang limitahan kung aling host o network ang may access sa 514 / UDP socket.
  2. Ang pag-log ay maaaring maituro sa isang nakahiwalay o di-ugat na filesystem kung saan, kung puno, ay hindi makapipinsala sa makina.
  3. Maaaring gamitin ang ext2 filesystem na maaaring i-configure upang limitahan ang isang tiyak na porsyento ng isang filesystem sa paggamit sa pamamagitan ng root lamang. TANDAAN na ito ay mangangailangan ng syslogd na patakbuhin bilang isang hindi-ugat na proseso. TANDAAN din na maiiwasan nito ang paggamit ng remote logging dahil ang syslogd ay hindi makagapos sa 514 / UDP socket.
  4. Ang hindi pagpapagana ng mga socket ng domain ng inet ay limitahan ang panganib sa lokal na makina.
  5. Gamitin ang hakbang 4 at kung ang problema ay nagpatuloy at hindi pangalawang sa isang taong nagdadayo ng programa / daemon ay makakakuha ng 3.5 ft (approx 1 meter) na haba ng sucker rod * at makipag-chat sa user na pinag-uusapan. Sucker rod def. --- 3/4, 7/8 o 1in. hardened steel rod, male threaded sa bawat dulo. Pangunahing paggamit sa industriya ng langis sa Western North Dakota at iba pang mga lokasyon upang mag-usisa ang 'pagsuso' ng langis mula sa mga langis ng langis. Ang mga pangalawang gamit ay para sa pagtatayo ng maraming mga feed ng baka at para sa pagharap sa paminsan-minsang recalcitrant o mapagsamantalang indibidwal.

Pag-debug

Kapag naka-on ang debugging gamit ang pagpipiliang -d pagkatapos ang syslogd ay magiging masyadong malala sa pamamagitan ng pagsulat ng marami sa kung ano ang ginagawa nito sa stdout. Tuwing ang configuration file ay muling basahin at muling-parse makikita mo ang isang hugis ng mga talaan, naaayon sa panloob na istraktura ng data. Ang tabular na ito ay binubuo ng apat na larangan:

numero

Ang patlang na ito ay naglalaman ng serial number na nagsisimula sa zero. Ang numerong ito ay kumakatawan sa posisyon sa panloob na istraktura ng data (ie ang array). Kung ang isang numero ay naiwan ay maaaring mayroong error sa nararapat na linya sa /etc/syslog.conf .

pattern

Ang patlang na ito ay nakakalito at kumakatawan sa eksaktong panloob na istraktura. Ang bawat haligi ay kumakatawan sa isang pasilidad (sumangguni sa syslog (3)). Tulad ng makikita mo, mayroon pa ring mga pasilidad na naiwan na libre para sa dating paggamit, tanging ang kaliwa lamang ang ginagamit. Ang bawat patlang sa isang haligi ay kumakatawan sa mga prayoridad (sumangguni sa syslog (3)).

aksyon

Inilalarawan ng larangan na ito ang partikular na aksyon na nangyayari kapag ang isang mensahe ay natanggap na tumutugma sa pattern. Sumangguni sa syslog.conf (5) manpage para sa lahat ng posibleng pagkilos.

argumento

Ipinapakita ng field na ito ang mga karagdagang argumento sa mga pagkilos sa huling field. Para sa file-logging ito ang filename para sa logfile; para sa pag-log-user na ito ay isang listahan ng mga gumagamit; para sa remote na pag-log ito ay ang hostname ng makina upang mag-log in; para sa console-logging ito ang ginamit na console; para sa tty-logging ito ang tinukoy na tty; Ang pader ay walang mga karagdagang argumento.

Tingnan din

magtotroso (1), syslog (2), (5)

Mga tagatulong

Ang Syslogd ay kinuha mula sa mga pinagmumulan ng BSD, gumanap ng Greg Wettstein (greg@wind.enjellic.com) ang port sa Linux , pinigilan ni Martin Schulze (joey@linux.de) ang ilang mga bug at nagdagdag ng maraming mga bagong tampok. Ang Klogd ay orihinal na isinulat ni Steve Lord (lord@cray.com), si Greg Wettstein ay gumawa ng mga pangunahing pagpapabuti.

Dr. Greg Wettstein
Enjellic Systems Development

Oncology Research Division Computing Facility
Roger Maris Cancer Center
Fargo, ND
greg@wind.enjellic.com

Stephen Tweedie
Kagawaran ng Computer Science
Edinburgh University, Scotland
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

Shane Alderton
shane@ion.apana.org.au

Martin Schulze
Infodrom Oldenburg
joey@linux.de

Mahalaga: Gamitin ang command ng tao ( % man ) upang makita kung paano ginagamit ang isang utos sa iyong partikular na computer.

Kaugnay na mga Artikulo