Syslogd Linux və Unix Command

Sysklogd, sistem girişini və çekirdek mesajlarının tutulmasını dəstəkləyən iki sistemin təmin edir. Həm internet, həm də unix domenlərinin dəstəklənməsi bu kommunal paketin həm yerli, həm də uzaqdan idarə edilməsini dəstəkləməyə imkan verir.

Sistem qeydiyyatı səhmdar BSD mənbələrindən əldə edilən syslogd (8) versiyası ilə təmin edilir. Kernelin qeyd edilməsinə dəstək, çekirdek girişinin bağımsız bir şekilde ya da syslogd'un müşteri olaraq yapılmasına imkan verən klogd (8) proqramı tarafından sağlanmaktadır .

Syslogd, bir çox müasir proqramın istifadə etdiyini bir növ təqdim edir. Hər daxil edilmiş mesajda ən azı bir vaxt və bir hostname sahəsi, adətən bir proqram adı sahəsi də var, lakin bu, giriş proqramının necə etibarlı olduğuna bağlıdır.

Syslogd qaynaqları ağır şəkildə dəyişdirildikdə bir neçə qeyd düzəldilmişdir. Birincisi, syslogd'ın default, standart BSD davranışını təmin etmək üçün sistematik bir cəhd olmuşdur. Qeyd edək ki, ikinci mühüm konsepsiya syslogd'ın bu versiyası standart kitabxanalarda tapılan syslog versiyası ilə şəffaf şəkildə əlaqə saxlayır. Standart paylaşılan kitabxanalara bənzər ikili birbaşa işləməyə uğrarsa, biz anormal davranışın nümunəsini istəyirik.

Əsas konfiqurasiya faylı /etc/syslog.conf və ya -f variantıyla verilən alternativ bir fayl başlanğıcda oxunur. Hash ("#") və boş xətləri ilə başlayan hər hansı bir xəta nəzərə alınmır. Bütün xəttin ayrılması zamanı bir səhv baş verərsə, nəzərə alınmaz.

Sinopsis

syslogd [ -a socket ] [ -d ] [ -f konfiqurasiya faylı ] [ -h ] [ -l hostlist ] [ -m interval ] [ -n ] [ -p socket ] [ -r ] [ -s domainlist ] [ - v ] [ -x ]

Seçimlər

- bir yuva

Bu arqumenti istifadə edərək, syslogd- dan əlavə sockets-ni dinləyə bilərsiniz. Bir müddətin bir chroot () mühitində işlədilməsinə icazə verəcəyəmsə bu lazımdır. 19 ədəd əlavə sockets istifadə edə bilərsiniz. Ətrafınızın daha çox ehtiyacı varsa, syslogd.c mənbə faylında MAXFUNIX simvolunu artırmalısınız . Bir chroot () daemonuna bir nümunə OpenBSD-dən olan insanlar tərəfindən təsvir olunur http://www.psionic.com/papers/dns.html.

-d

Debug rejimində işləyir. Bu daemon istifadə edərək çəngəl (2) arxa planda qurulacaqdır, lakin ön planda qalmağına zidd və mövcud tty haqqında çox məlumatlar yazır. Daha ətraflı məlumat üçün DEBUGGING bölməsinə baxın.

-f konfiqurasiya faylı

Varsayılan /etc/syslog.conf yerinə alternativ bir konfiqurasiya faylını daxil edin.

-h

Syslogd default olaraq uzaq hostlardan aldığınız mesajları iletmez. Komanda xəttində bu keçidin göstərilməsi log daemonun təyin edilmiş hostları ötürmək üçün aldığınız hər hansı bir uzaqdan mesajı ötürməyə səbəb olacaq.

-l host siyahısı

Fqdn deyil, sadə hostname ilə daxil edilməli olan bir hostname daxil edin. Birdən çox ana, kolon (``: '') separator istifadə edilə bilər.

-m aralığında

Syslogd müntəzəm olaraq bir qeyd vaxt damgasını qeyd edir. İki - MARK - xəttlər arasındakı default interval 20 dəqiqədir. Bu, bu seçimi ilə dəyişdirilə bilər. Aralığın sıfıra qurulması tamamilə sönür.

-n

Avtomatik fondan çəkinin. Bu xüsusilə syslogd başlatılsa və init (8) tərəfindən idarə olunsa lazımdır.

-p yuvası

/ Dev / log əvəzinə alternativ unix domen socket müəyyən edə bilərsiniz.

-r

Bu seçim sistemin syslog xidməti ilə bir internet domain socket istifadə edərək şəbəkədən bir mesaj almasını təmin edəcəkdir (bax (5)). Varsayılan şəbəkədə heç bir mesaj qəbul edilmir.

Bu seçim sysklogd paketinin 1.3 versiyasında təqdim olunur. Xatırlayın ki, default davranış, köhnə versiyaların necə davrandığına zidddir, buna görə də bunu açmaq məcburiyyətindəsiniz.

-s domen siyahısı

Daxil edilməmişdən əvvəl ləğv edilməli olan bir domen adı göstərin. Çox domenlər kolon (``: '') separator istifadə edilə bilər. Xahiş edirik, heç bir alt etki alanının belirtilemeyeceğini, ancaq bütün etki alanlarını belirtin. Örneğin, -s north.de belirtilmişse ve host logging satu.infodrom.north.de üçün heç bir domain kesilemezse, aşağıdakı kimi iki etki alanı belirlemeniz lazımdır: -s north.de:infodrom.north.de .

-v

Çap versiyası və çıxış.

-x

Uzaqdan mesajlar qəbul edərkən adın axtarışlarını söndürün. Bu, sunucu syslog daemonunu işləyən eyni maşında işləyərkən kilidlənmələri aradan qaldırır.

Siqnallar

Syslogd bir sıra sinyalleri reaksiya verir. Aşağıdakıları syslogd- a siqnal göndərə bilərsiniz:

öldürmək -SIGNAL` cat / var / run / syslogd.pid`

Sighup

Bu syslogd yenidən yenidən başlamağa imkan verir. Bütün açıq fayllar bağlıdır, konfiqurasiya faylı (default /etc/syslog.conf ) yenidən oxunacaqsyslog (3) obyekti yenidən açılır .

SİGTERM

Syslogd öləcək.

SIGINT , SIGQUIT

Hata ayıklama effektiv olsaydı bunlar nəzərə alınmır, əks halda syslogd öləcək.

SIGUSR1

Hata ayıklamasını açma / qorumaq. Bu seçim yalnız syslogd -d Debug seçimi ilə başlandığında istifadə edilə bilər.

SIGCHLD

Bəziləri doğulduqları təqdirdə, uşaqlara mesaj göndərmək üçün gözləyin.

Konfiqurasiya faylının sintaksis fərqləri

Syslogd özünün konfiqurasiya faylları üçün orijinal BSD mənbələrindən daha az fərqli bir sintaksis istifadə edir. Başlanğıcda müəyyən bir prioritet və yuxarıdakı bütün mesajlar günlük faylına göndərildi.

Məsələn, aşağıdakı xətt daemon qurğularından istifadə edilən bütün çıxışlara gətirib çıxardı (debug - ən aşağı prioritetdir, belə ki, hər bir ali daha uyğun olacaq) / usr / adm / daemons daxil :

# Örnek syslog.conf daemon.debug / usr / adm / daemons

Yeni sxem çərçivəsində bu davranış eyni qalır. Bu fərq dörd yeni spesifikator, ulduz ( * ) joker, bərabərlik işarəsi ( = ), hörmət işarəsi ( ! ) Və eksi işarəsinin ( - ) əlavə edilməsidir.

*, Müəyyən edilmiş obyektin bütün mesajlarının təyinata yönəldiləcəyini bildirir. Qeyd edək ki, bu davranışın debugin prioritet səviyyəsini göstərməklə pozulur. İstifadəçilər, qeydlərin qeyd olunmasının daha intuitiv olduğunu göstərmişlər.

= Joker müəyyən edilmiş prioritet sinifə girişin məhdudlaşdırılması üçün istifadə olunur. Bu, məsələn, müəyyən bir giriş mənbəyinə yalnız debug mesajları göndərməyə imkan verir.

Məsələn, syslog.conf - daki aşağıdakı satır bütün kaynaklardan / usr / adm / debug faylına debug mesajları göndərə bilər.

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

müəyyən prioritetlərin qeyd edilməsini istisna etmək üçün istifadə olunur. Bu, prioritetləri göstərmək üçün bütün (!) Imkanlara təsir göstərir.

Məsələn, aşağıdakı xətlər, prioritet məlumatı / usr / adm / mail faylına aid olanlar istisna olmaqla, tesis poçtunun bütün mesajlarını qeyd edir. News.info (habelə) news.crit (hariç) daxil olan bütün mesajlar / usr / adm / news faylına daxil ediləcəkdir.

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

İstədiyiniz bir istisna kimi istifadə edə bilərsiniz. Yuxarıda göstərilən şərh təvəllüdü. Bunu istifadə edə bilərsiniz

mail.none

və ya

mail! *

və ya

debug

poçt vasitəsi ilə gələn hər bir mesajı atmaq. Onunla oynamaq üçün çox yer var. :-)

Faylın hər bir yazıdan sonra sinxronlaşdırılmasını istəmirsinizsə, yalnız bir faylın önünü istifadə etmək üçün istifadə oluna bilər.

Bu təmiz BSD davranışı üçün istifadə edilən şəxslər üçün bəzi uyğunlaşma ola bilər, lakin testlər bu sözdiziminin BSD davranışından daha sadədir. Qeyd edək ki, bu dəyişikliklər standart syslog.conf (5) fayllarına təsir etməməlidir. Geliştirilmiş davranışı əldə etmək üçün konfiqurasiya fayllarını xüsusi olaraq dəyişdirməlisiniz.

Uzaqdan Qeydiyyat üçün Dəstək

Bu dəyişikliklər syslogd tesisinə şəbəkə dəstəyi təmin edir. Şəbəkə dəstəyi mesajların syslogd-dan çalışan bir node-dan syslogd-u işləyən digər bir nodeya köçürdüyü deməkdir ki, onlar həqiqətən bir disk faylına daxil olacaqlar.

Bunu təmin etmək üçün komanda xəttində -r parametrini təyin etməlisiniz . Standart davranış syslogd şəbəkəni dinləməyəcəkdir.

Strategiya, syslogd yerli olaraq yaradılan günlük mesajları üçün unix domen səsini dinləməkdir. Bu davranış, syslogd'ın standart C kütüphanesinde bulunan syslog ile çalışmasına imkan verir. Eyni zamanda syslogd digər hostlardan göndərilən mesajlar üçün standart syslog portunu dinləyir. Bu işi düzgün aparmaq üçün xidmətlərin (5) faylları (adətən / və s. Daxilində ) aşağıdakı qeydlərə malik olmalıdır:

syslog 514 / udp

Bu giriş syslogd olmadıqda nə UDP portu açılacaq, nə də uzaqdan mesajlar qəbul edə bilməz. Bunun əvəzinə, syslogd bir səhv mesajı üfürərək, dərhal öləcək.

Mesajların başqa bir hocaya ötürülməsinə səbəb olmaq üçün, syslog.conf faylında olan normal fayl xəttini mesajların göndərilməsi lazım olan hostun adı ilə @ əvəzinə göndərin.

Aşağıdakı syslog.conf girişini istifadə edərək, ALL mesajlarını uzaq bir hosta ötürmək üçün :

# Nümunə syslogd konfiqurasiya faylını # mesajlara uzaq bir hosta göndərin. *. * @ hostname

Bütün yadelli mesajları uzaq bir hosta göndərmək üçün konfiqurasiya faylı aşağıdakı kimi olacaq:

# Nümunə konfiqurasiya faylı bütün kernel # mesajlarını uzaq bir hosta çatdırmaq üçün. kern. * @ hostname

Əgər uzaq hostname başlanğıcda həll oluna bilməzsə, ad-server əlçatan olmaya bilər (syslogddan sonra başlana bilər) narahat olmayın. Syslogd adını on dəfə həll etməyə cəhd edir və sonra şikayət edir. Bunun qarşısını almaq üçün başqa imkanlar hostname / etc / hosts ünvanına yerləşdirməkdir .

Normal syslogd ilə syslog-loops alacaqsınız, əgər uzaqdan bir hostdan eyni hosta (və ya daha mürəkkəb birinə geri göndərən bir üçüncü ev sahibinə göndərilmiş mesajlar göndərirsinizsə) və s. Alanımda (Infodrom Oldenburg) təsadüfən bir və disklərimiz eyni bir mesajla doldu. :-(

Bundan başqa, uzaq bir hostdan alınan mesajlar bundan sonra başqa (ya da eyni) uzaq ev sahibinə göndərilmir. Bu ssenarilərin olması mantiqsizdirsə, mənə (Joey) bir xətt buraxın.

Uzaq ana kompüter host ilə eyni sahədə yerləşirsə, syslogd işləyir, bütün fqdn əvəzinə yalnız sadə hostname daxil edilir.

Yerli bir şəbəkədə, bir maşın üzərində saxlanan bütün mühüm məlumatların olması üçün mərkəzi bir günlük server təmin edə bilərsiniz. Şəbəkə fərqli domainlərdən ibarətdirsə, sadə hostname əvəzinə tam adları qeyd etmədən şikayət etmək məcburiyyətində deyilsiniz. Bu serverın zolaq-domain xüsusiyyətindən istifadə etmək istəyə bilərsiniz. Syslogd- a bir neçə serverin yerləşdiyi serverdən başqa bir sıra domenləri ləğv edə biləcəyini və yalnız sadə hostnamesləri qeyd edə bilərsiniz.

-l variantını istifadə edərək, tək maşınları yerli maşın kimi təyin etmək imkanı da var. Bu da, fqdns deyil, yalnız sadə basma adlarını qeyd etməklə nəticələnir.

Uzaqdan hostlara mesaj göndərmək və ya mesaj almaq üçün istifadə olunan UDP səsi yalnız lazım olduqda açılır. 1.3-23-dən əvvəl relizlər hər dəfə açılmışdı, lakin oxumaq və ya ötürmək üçün açılmadı.

Named Borulara Çıxış (FIFO)

Syslogd'ın bu versiyası, adlandırılmış boruların (fifos) çıxışına girişə dəstək verir. Bir fifo və ya adlandırılmış boru faylın adına bir pipe simvolu (`` | '') daxil edilərək giriş mesajları üçün təyinat kimi istifadə edilə bilər. Bu ayıklama üçün əlverişlidir. Qeyd edək ki, syslogd başlamazdan öncə mkfifo əmri ilə beşlik yaradılmalıdır.

Aşağıdakı konfiqurasiya faylları marşrutları çekirdekdən fifo'ya qədər debug mesajları:

# Kernelin ayıklanması üçün nümunə konfiqurasiya yalnız # adlandırılmış boru olan / usr / adm / debug ünvanına göndərilmiş mesajlar. kern. = debug | / usr / adm / debug

Quraşdırıcı narahatlıqlar

Syslogd'ın bu versiyasını qurarkən, ehtimal ki, bir vacib məsələ var. Syslogd'ın bu versiyası syslog funksiyası tərəfindən mesajların düzgün biçimlendirilmesinden asılıdır. Paylaşılan kitabxanalarda syslog funksiyasının işləməsi libc.so.4 bölgəsində bir yerdə dəyişdi. [2-4] .n. Xüsusi dəyişdirmə, / dev / log yuvasına ötürülməzdən əvvəl mesajı null-ləğv etmək idi. Syslogd'ın bu versiyasının düzgün işləməsi mesajın null-terminasiya edilməsindən asılıdır.

Sistemdə köhnə statik əlaqəli ikili fayllar istifadə olunursa, bu problem adətən özünü göstərir. Syslog funksiyasının köhnə versiyalarını istifadə edən binarlar, boş xətlərin daxil edilməsinə səbəb olur və mesajı çıxarılan mesajdakı ilk xarakterli mesaj ilə izah edir. Paylaşılan kütüphanelerin yeni versiyalarına bu binarların çıxarılması bu problemi düzəldəcəkdir.

Həm syslogd (8) həm də klogd (8) ya init (8) -dən istifadə edilə bilər və ya rc. * Ardıcıllığının bir hissəsi kimi başlana bilər. Əgər init-dan başlayırsa, seçim- n olmalıdır, əks halda, syslog daemonlarının başlanğıcını ton əldə edəcəksiniz. Çünki init (8) proses kimliyinə bağlıdır.

Təhlükəsizlik təhdidi

Syslogd daemonunun xidməti hücumdan imtina edilməsi üçün bir kanal kimi istifadə edilməsi potensialı var. Təşəkkür məni bu potensiala xəbərdar etmək üçün John Morrison'a (jmorriso@rflab.ee.ubc.ca) gedin. Xırda bir proqram (mer) syslogd daemonunu syslog mesajları ilə çox asanlıqla daşıyaraq, fayl sistemindəki qalan məkanı istehlak edən günlük faylları ilə nəticələnə bilər. Inet domen sockets üzərində giriş aktivləşdirmək, əlbəttə, yerli maşın proqram və ya şəxslər xaricində risklər bir sistem ifşa edəcək.

Bir maşının qorunması üçün bir sıra üsullar var:

  1. Hücumçuların və ya şəbəkələrin 514 / UDP yuvasına daxil olmasını məhdudlaşdırmaq üçün kernel firewalling tətbiq edin.
  2. Güngötürmə izolyasiya edilmiş və ya köklü olmayan bir fayl sisteminə yönəldilə bilər ki, doldurulursa, maşına zərbə vurmayacaqdır.
  3. Ext2 fayl sistemi, bir fayl sisteminin müəyyən bir faizini kök ilə istifadə etmək üçün məhdudlaşdırmaq üçün konfiqurasiya edilə bilən istifadə edilə bilər. Bu, syslogd'ın qeyri-köklü bir proses olaraq çalışmasını tələb edir. Bununla yanaşı, syslogd 514 / UDP yuvasına bağlana bilməyəcəyi üçün uzaqdan dayaqdan istifadənin qarşısını alacaq.
  4. Inet domen sockets-in aradan qaldırılması yerli maşın üçün riskləri məhdudlaşdırır.
  5. 4-cü addımı istifadə edin və problem davam edərsə və bir yaramaz proqram / daemon üçün ikincil deyilsə, 3,5 metr (təxminən 1 metr) uzunluqda olan süpürgə çubuğunu * əldə edin və sözügedən istifadəçi ilə söhbət edin. Sucker rod def. --- 3/4, 7/8 və ya 1in. sərtləşdirilmiş polad çubuq, hər bir ucunda tıxanan kişi. Qərb Şimali Dakota və digər yerlərdəki neft sənayesində əsas istifadəsi neft quyularından 'emal' yağını çıxarmaq üçün. İkincilik, mal-qara yemlərinin qurulması və ara sıra geri çəkiliş edən və ya döyüşən fərdlə məşğul olmaqdır.

Debugging

Debugging istifadə edildikdə -d variantını istifadə edərkən, syslogd stdout-da nə etdiyinin çoxunu yazmaqla çox bəllidir. Konfiqurasiya faylı yenidən oxunduqda və yenidən təhlil edildikdə, daxili məlumat strukturuna müvafiq olaraq bir cədvəl görürsünüz. Bu cədvəl dörd sahədən ibarətdir:

sayı

Bu sahədə sıfırdan başlayan seriya nömrəsi var. Bu rəqəm daxili məlumat strukturunda (yəni array) mövqeyini əks etdirir. Bir ədəd xaricində qaldıqda , /etc/syslog.conf-daki müvafiq satırda bir səhv ola bilər.

nümunə

Bu sahə çətin və daxili quruluşu tam olaraq təmsil edir. Hər bir sütun bir obyekt üçün dayanır ( syslog (3)). Gördüyünüz kimi, hələ də köhnədən istifadə üçün azad qalan bəzi obyektlər var, yalnız sol ən çox istifadə olunur. Sütundakı hər bir sahə prioritetləri əks etdirir ( syslog (3)).

hərəkət

Bu sahədə nümunə uyğun gələn bir mesaj alındıqda baş verən xüsusi əməliyyat təsvir olunur. Bütün mümkün tədbirlər üçün syslog.conf (5) səhifəsinə baxın.

arqumentlər

Bu sahədə son sahədəki hərəkətlərə əlavə arqumentlər göstərilir. Faylın qeyd edilməsi üçün bu, logfile üçün filename; istifadəçi giriş üçün istifadəçilərin siyahısı; Uzaqdan giriş üçün bu, maşına daxil olmaq üçün maşının adıdır; konsol-giriş üçün bu istifadə olunan konsoldur; tty-logging üçün bu müəyyən tty; divarın əlavə arqumentləri yoxdur.

Həmçinin bax

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

Əməkdaşlar

Syslogd BSD mənbələrindən götürülmüşdür, Greg Wettstein (greg@wind.enjellic.com) Linux portunu yerinə yetirdi, Martin Schulze (joey@linux.de) bəzi səhvləri müəyyən etdi və bir sıra yeni funksiyalar əlavə etdi. Klogd ilk olaraq Steve Lord tərəfindən yazılmışdır (lord@cray.com), Greg Wettstein böyük inkişaf etmişdir.

Dr. Greg Wettstein
Enjellic Systems Development

Onkoloji Tədqiqat Şöbəsi Hesablama Mexanizmi
Roger Maris Xərçəng Mərkəzi
Fargo, ND
greg@wind.enjellic.com

Stephen Tweedie
Kompüter elmləri bölməsi
Edinburgh Universiteti, Şotlandiya
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

Shane Alderton
shane@ion.apana.org.au

Martin Schulze
Infodrom Oldenburg
joey@linux.de

Mühüm: Şəxsi kompüterinizdə bir komanda necə istifadə edildiyini görmək üçün man komutunu ( % man ) istifadə edin.

Əlaqədar məqalələr