Syslogd Linux dan Unix Command

Sysklogd menyediakan dua utiliti sistem yang memberikan sokongan untuk pembalakan sistem dan perangkap mesej kernel. Sokongan kedua-dua soket domain internet dan unix membolehkan pakej utiliti ini untuk menyokong pembalakan tempatan dan jauh.

Pembalakan sistem disediakan oleh versi syslogd (8) yang diperolehi daripada sumber BSD saham. Sokongan untuk pembalakan kernel disediakan oleh utiliti klogd (8) yang membolehkan pembalakan kernel dijalankan sama ada secara fizikal atau sebagai klien syslogd.

Syslogd menyediakan jenis pembalakan yang digunakan oleh banyak program moden. Setiap mesej yang dilog mengandungi sekurang-kurangnya satu masa dan satu field nama hos, biasanya satu medan nama program juga, tetapi bergantung pada betapa amanah program pembalakan itu.

Walaupun sumber syslogd telah diubah suai dengan banyak nota yang teratur. Pertama sekali terdapat percubaan sistematik untuk memastikan bahawa syslogd mengikuti kelakuan BSD lalai, piawai. Konsep penting kedua yang perlu diperhatikan ialah versi syslogd ini berinteraksi dengan telus dengan versi syslog yang terdapat dalam perpustakaan standard. Jika satu perduaan yang dikaitkan dengan perpustakaan yang dikongsi bersama tidak dapat berfungsi dengan betul, kami ingin contoh tingkah laku anomali.

Fail konfigurasi utama /etc/syslog.conf atau fail alternatif, diberikan dengan pilihan -f , dibaca pada permulaan. Mana-mana baris yang bermula dengan tanda hash (`` # '') dan baris kosong diabaikan. Sekiranya ralat berlaku semasa mengurai seluruh baris diabaikan.

Sinopsis

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

Pilihan

-a soket

Menggunakan hujah ini, anda boleh menetapkan soket tambahan dari syslogd yang perlu didengar. Ini diperlukan jika anda akan membiarkan beberapa daemon berjalan dalam lingkungan chroot (). Anda boleh menggunakan sehingga 19 soket tambahan. Sekiranya persekitaran anda memerlukan lebih banyak, anda perlu menambah simbol MAXFUNIX dalam fail sumber syslogd.c. Contoh untuk daemon chroot () digambarkan oleh orang-orang dari OpenBSD di http://www.psionic.com/papers/dns.html.

-d

Menghidupkan mod debug. Menggunakan ini daemon tidak akan meneruskan garpu (2) untuk menetapkan dirinya di latar belakang, tetapi bertentangan dengan yang tinggal di latar depan dan menulis banyak maklumat debug pada tty semasa. Lihat bahagian DEBUGGING untuk maklumat lanjut.

fail -f config

Tentukan fail konfigurasi alternatif bukannya /etc/syslog.conf , yang merupakan lalai.

-h

Secara lalai syslogd tidak akan menghantar mesej yang diterima dari hos jauh. Menetapkan suis ini pada baris arahan akan menyebabkan daemon log untuk menghantar sebarang mesej jauh yang diterima ke pemajuan tuan rumah yang telah ditentukan.

-l hostlist

Tentukan nama hos yang hanya perlu log masuk dengan nama hina yang sederhana dan bukan fqdn. Pelbagai tuan rumah boleh ditentukan menggunakan pemisah kolon (``: '').

-m selang

Syslogd logs timestamp marker secara teratur. Jeda lalai antara dua - MARK - garisan adalah 20 minit. Ini boleh diubah dengan pilihan ini. Menetapkan selang ke sifar mematikannya sepenuhnya.

-n

Elakkan latar belakang auto. Ini diperlukan terutamanya jika syslogd dimulakan dan dikawal oleh init (8).

-p soket

Anda boleh menentukan alternatif soket domain unix bukan / dev / log .

-r

Pilihan ini akan membolehkan kemudahan untuk menerima mesej dari rangkaian menggunakan soket domain internet dengan perkhidmatan syslog (lihat (5)). Lalai adalah untuk tidak menerima sebarang mesej dari rangkaian.

Pilihan ini diperkenalkan dalam versi 1.3 pakej sysklogd. Sila ambil perhatian bahawa tingkah laku lalai adalah bertentangan dengan bagaimana versi lama bertingkah laku, jadi anda mungkin perlu menghidupkan ini.

-s senarai domain

Tentukan nama domain yang harus dilucutkan sebelum log masuk. Beberapa domain boleh ditentukan menggunakan pemisah kolon (``: ''). Harap maklum bahawa tiada sub-domain boleh ditentukan tetapi hanya seluruh domain. Contohnya jika -s north.de dinyatakan dan penandatangan tuan rumah menjadi satu.infodrom.north.de tiada domain akan dipotong, anda perlu menentukan dua domain seperti: -s north.de:infodrom.north.de .

-v

Cetak versi dan keluar.

-x

Lumpuhkan carian nama apabila menerima mesej jauh. Ini mengelakkan kebuntuan apabila pelayan nama berjalan pada mesin yang sama yang menjalankan daemon syslog.

Isyarat

Syslogd bertindak balas kepada satu set isyarat. Anda boleh dengan mudah menghantar isyarat ke syslogd menggunakan yang berikut:

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

Sengsara

Ini membolehkan syslogd melaksanakan penyusunan semula. Semua fail terbuka ditutup, fail konfigurasi (default ialah /etc/syslog.conf ) akan dibaca semula dan kemudahan syslog (3) dimulakan semula.

SIGTERM

Syslogd akan mati.

SIGINT , SIGQUIT

Sekiranya penyahpepijatan diaktifkan, ini akan diabaikan, sebaliknya syslogd akan mati.

SIGUSR1

Matikan debugging hidup / mati. Pilihan ini hanya boleh digunakan jika syslogd dimulakan dengan pilihan debug -d .

SIGCHLD

Tunggu untuk kanak-kanak jika ada yang dilahirkan, kerana mesej wall'ing.

Perbezaan Syntax Fail Konfigurasi

Syslogd menggunakan sintaks yang sedikit berbeza untuk fail konfigurasinya berbanding sumber BSD yang asal. Pada asalnya semua mesej keutamaan khusus dan di atas dikemukakan kepada fail log.

Contohnya, baris berikut menyebabkan SEMUA output daripada daemon menggunakan kemudahan daemon (debug adalah keutamaan yang paling rendah, jadi setiap yang lebih tinggi juga akan sepadan) untuk masuk ke / usr / adm / daemon :

# Contoh syslog.conf daemon.debug / usr / adm / daemon

Di bawah skim baru, kelakuan ini tetap sama. Perbezaannya ialah penambahan empat penentu baru, asterisk ( * ) wildcard, tanda persamaan ( = ), tanda seru ( ! ), Dan tanda minus ( - ).

* Menetapkan bahawa semua mesej untuk kemudahan yang ditentukan akan diarahkan ke destinasi. Perhatikan bahawa tingkah laku ini merosot dengan menyatakan tahap keutamaan debug. Pengguna telah menunjukkan bahawa notasi asterisk lebih intuitif.

= Wildcard digunakan untuk menyekat pembalakan ke kelas keutamaan yang ditetapkan. Ini membenarkan, sebagai contoh, penghalaan hanya mesej debug ke sumber pembalakan tertentu.

Sebagai contoh, baris berikut dalam syslog.conf akan mengarahkan mesej debug dari semua sumber ke fail / usr / adm / debug .

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

The ! digunakan untuk mengecualikan pembalakan keutamaan yang ditetapkan. Ini memberi kesan kepada semua (!) Kemungkinan menentukan keutamaan.

Contohnya, baris berikut akan mencatatkan semua mesej mel kemudahan kecuali mereka yang mempunyai maklumat prioriti ke fail / usr / adm / mail . Dan semua mesej dari news.info (termasuk) ke news.crit (tidak termasuk) akan dilog masuk ke fail / usr / adm / news .

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

Anda boleh menggunakannya secara intuitif sebagai pengecualian pengecualian. Interpretasi yang disebutkan di atas hanya terbalik. Melakukannya yang anda boleh gunakan

mail.none

atau

mel.! *

atau

mel. debug

untuk melangkau setiap mesej yang datang dengan kemudahan mel. Terdapat banyak ruang untuk bermain dengannya. :-)

- Hanya boleh digunakan untuk awalan nama fail jika anda mahu menghilangkan penyegerakan fail selepas setiap menulis kepadanya.

Ini mungkin mengambil beberapa penyesuaian untuk individu yang digunakan untuk tingkah laku BSD tulen tetapi penguji telah menunjukkan bahawa sintaks ini agak lebih fleksibel daripada tingkah laku BSD. Perhatikan bahawa perubahan ini tidak akan menjejaskan syslog.conf (5) fail standard. Anda mesti mengubah suai fail konfigurasi secara khusus untuk mendapatkan tingkah laku yang dipertingkatkan.

Sokongan untuk Pembalakan Jauh

Pengubahsuaian ini memberikan sokongan rangkaian kepada kemudahan syslogd. Sokongan rangkaian bermaksud bahawa mesej dapat diteruskan dari satu nod yang menjalankan syslogd ke nod lain yang menjalankan syslogd di mana mereka akan benar-benar log ke file disk.

Untuk membolehkan ini anda perlu menentukan pilihan -r pada baris arahan. Tingkah laku lalai ialah syslogd tidak akan mendengarkan rangkaian.

Strateginya ialah untuk mendengarkan syslogd pada soket domain unix untuk mesej log yang dijana secara tempatan. Tingkah laku ini akan membolehkan syslogd berinteraksi dengan syslog yang terdapat di perpustakaan standard C. Pada masa yang sama syslogd mendengar pada standard syslog port untuk mesej yang dihantar dari host lain. Untuk mempunyai kerja ini dengan betul perkhidmatan (5) fail (biasanya dijumpai di / etc ) mesti mempunyai entri berikut:

syslog 514 / udp

Jika entri ini hilang syslogd tidak boleh menerima mesej jauh atau menghantarnya, kerana port UDP tidak dapat dibuka. Sebaliknya, syslogd akan mati segera, meniup mesej ralat.

Untuk menyebabkan mesej dihantar kepada hos yang lain, ganti fail fail biasa dalam fail syslog.conf dengan nama hos yang mana mesej akan dihantar dengan @.

Sebagai contoh, untuk menghantar SEMUA mesej ke hos jauh menggunakan entri syslog.conf berikut:

# Sampel fail konfigurasi syslogd ke # mesej ke hos jauh ke hadapan. *. * @hostname

Untuk menghantar semua mesej kernel ke hos jauh, fail konfigurasi adalah seperti berikut:

# Contoh fail konfigurasi untuk menghantar semua mesej # kernel ke hos jauh. kern. * @hostname

Jika nama hos jauh tidak dapat diselesaikan pada permulaan, kerana nama-pelayan mungkin tidak dapat diakses (ia boleh dimulakan selepas syslogd) anda tidak perlu bimbang. Syslogd akan cuba untuk menyelesaikan nama sepuluh kali dan kemudian mengadu. Satu lagi kemungkinan untuk mengelakkan ini ialah meletakkan nama hos di / etc / hosts .

Dengan syslogd biasa, anda akan mendapat syslog-loops jika anda menghantar mesej yang diterima dari host jauh ke host yang sama (atau lebih rumit ke host ketiga yang menghantarnya kembali ke yang pertama, dan sebagainya). Di domain saya (Infodrom Oldenburg) kami secara tidak sengaja mendapat satu dan cakera kami diisi dengan mesej tunggal yang sama. :-(

Untuk mengelakkan ini dalam masa selanjutnya tiada mesej yang diterima daripada hos jauh dihantar ke hos jauh lagi (atau yang sama). Sekiranya ada senario di mana ini tidak masuk akal, sila drop saya (Joey) satu baris.

Jika hos jauh berada di domain yang sama dengan hos, syslogd sedang dijalankan, hanya nama hos yang mudah akan dilogkan bukannya keseluruhan fqdn.

Dalam rangkaian tempatan, anda boleh menyediakan pelayan log pusat untuk memastikan semua maklumat penting disimpan pada satu mesin. Sekiranya rangkaian terdiri daripada domain yang berlainan, anda tidak perlu mengeluh mengenai pembalakan nama yang memenuhi syarat sepenuhnya daripada nama host yang sederhana. Anda mungkin mahu menggunakan ciri domain- s dari pelayan ini. Anda boleh memberitahu syslogd untuk memadam beberapa domain selain pelayan yang terletak di dalamnya dan hanya log nama host yang ringkas.

Menggunakan pilihan -l juga ada kemungkinan untuk menentukan tuan rumah tunggal sebagai mesin tempatan. Ini juga mengakibatkan pembalakan hanya nada nama ringkas mereka dan bukan fqdns.

Soket UDP yang digunakan untuk menghantar mesej kepada tuan rumah jauh atau untuk menerima mesej dari mereka hanya dibuka apabila diperlukan. Dalam siaran sebelum 1.3-23 ia dibuka setiap kali tetapi tidak dibuka untuk membaca atau penghantaran masing-masing.

Keluaran kepada Paip Dinamakan (FIFO)

Versi syslogd ini mempunyai sokongan untuk pembalakan output ke paip bernama (fifos). Paip fifo atau bernama boleh digunakan sebagai destinasi untuk mesej log dengan menyediakan simbol pipy (`` | '') kepada nama fail. Ini berguna untuk penyahpepijatan. Ambil perhatian bahawa fifo mesti dibuat dengan perintah mkfifo sebelum syslogd dimulakan.

Laluan fail konfigurasi berikut menyahpepijat mesej dari kernel ke fifo:

# Contoh konfigurasi untuk laluan debugging kernel # mesej HANYA ke / usr / adm / debug yang merupakan # bernama paip. kern. = debug | / usr / adm / debug

Kerosakan Pemasangan

Mungkin ada satu pertimbangan penting ketika memasang versi syslogd ini. Versi syslogd ini bergantung kepada pemformatan mesej yang betul oleh fungsi syslog. Fungsi fungsi syslog di perpustakaan yang dikongsi berubah di suatu tempat di rantau libc.so.4 [2-4] .n. Perubahan khusus adalah untuk membatalkan mesej sebelum menghantarnya ke soket / dev / log . Fungsi berfungsi versi syslogd ini bergantung kepada penolakan nol mesej.

Masalah ini biasanya akan ditunjukkan sendiri jika binari yang berkaitan dengan statik lama digunakan pada sistem. Binari yang menggunakan versi lama fungsi syslog akan menyebabkan baris kosong dilog masuk diikuti oleh mesej dengan aksara pertama dalam mesej yang dialih keluar. Menghidupkan semula binari ini ke versi baru perpustakaan yang dikongsi akan membetulkan masalah ini.

Kedua-dua syslogd (8) dan klogd (8) sama ada boleh dijalankan dari init (8) atau dimulakan sebagai sebahagian daripada urutan rc. *. Sekiranya ia bermula dari init, opsyen -n mesti ditetapkan, jika tidak, anda akan mendapat ton daemon mula syslog. Ini kerana init (8) bergantung kepada ID proses.

Ancaman Keselamatan

Terdapat potensi untuk daemon syslogd digunakan sebagai saluran untuk penafian serangan perkhidmatan. Terima kasih pergi ke John Morrison (jmorriso@rflab.ee.ubc.ca) untuk menyedarkan saya kepada potensi ini. Program penyangak (mer) dapat dengan mudah membanjiri daemon syslogd dengan mesej syslog yang menghasilkan file log yang memakan semua ruang yang tersisa pada sistem fail . Mengaktifkan pembalakan di atas soket domain inet tentu akan mendedahkan sistem kepada risiko di luar program atau individu di mesin tempatan.

Terdapat beberapa cara untuk melindungi mesin:

  1. Melaksanakan firewall kernel untuk menghadkan tuan rumah atau rangkaian yang mempunyai akses ke soket 514 / UDP.
  2. Pembalakan boleh diarahkan kepada sistem fail terpencil atau bukan akar yang, jika diisi, tidak akan menjejaskan mesin.
  3. Sistem fail ext2 boleh digunakan yang boleh dikonfigurasi untuk mengehadkan peratusan tertentu sistem fail kepada penggunaan dengan root sahaja. NOTA bahawa ini memerlukan syslogd untuk dijalankan sebagai proses bukan akar. JUGA PERHATIAN bahawa ini akan menghalang penggunaan pembalakan jauh kerana syslogd tidak dapat mengikat kepada soket 514 / UDP.
  4. Melumpuhkan soket domain inet akan menghadkan risiko kepada mesin tempatan.
  5. Gunakan langkah 4 dan jika masalah ini berterusan dan tidak menengah ke program jahat / daemon dapatkan panjang batang penyedut sebanyak 3.5 kaki (kira-kira 1 meter) * dan sembang dengan pengguna yang dipersoalkan. Tongkat penyedut def. --- 3/4, 7/8 atau 1in. batang keluli keras, lelaki yang diikat pada setiap hujungnya. Penggunaan utama dalam industri minyak di North Dakota Barat dan lokasi lain untuk mengepam 'menghisap' minyak dari telaga minyak. Penggunaan sekunder adalah untuk pembinaan banyak makanan ternakan lembu dan untuk berurusan dengan individu yang berulang-ulang atau berprofesi.

Debugging

Apabila debugging dihidupkan dengan menggunakan pilihan -d maka syslogd akan sangat verbose dengan menulis banyak apa yang dilakukan pada stdout. Apabila fail konfigurasi dibaca semula dan dihuraikan semula, anda akan melihat jadual, sepadan dengan struktur data dalaman. Jadual ini terdiri daripada empat bidang:

nombor

Bidang ini mengandungi nombor bersiri yang bermula dengan sifar. Nombor ini mewakili kedudukan dalam struktur data dalaman (iaitu array). Jika satu nombor dibiarkan maka mungkin terdapat ralat dalam baris yang sepadan dalam /etc/syslog.conf .

corak

Bidang ini rumit dan mewakili struktur dalaman dengan tepat. Setiap lajur bermaksud kemudahan (rujuk syslog (3)). Seperti yang dapat anda lihat, masih ada beberapa kemudahan yang dibiarkan bebas untuk digunakan dahulu, hanya yang paling kiri yang digunakan. Setiap medan dalam lajur mewakili keutamaan (rujuk syslog (3)).

tindakan

Bidang ini menerangkan tindakan tertentu yang berlaku apabila mesej diterima yang sepadan dengan corak. Rujuk kepada syslog.conf (5) manpage untuk semua tindakan yang mungkin.

hujah-hujah

Bidang ini menunjukkan hujah-hujah tambahan kepada tindakan di medan terakhir. Untuk pembalakan fail ini adalah nama fail untuk fail log; untuk pembalakan pengguna ini adalah senarai pengguna; untuk pembetulan jarak jauh ini adalah nama hos mesin untuk log masuk; untuk pembalakan konsol ini konsol yang digunakan; untuk tty-logging ini adalah tty yang ditentukan; dinding tidak mempunyai argumen tambahan.

Lihat juga

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

Kolaborator

Syslogd diambil dari sumber-sumber BSD, Greg Wettstein (greg@wind.enjellic.com) melakukan pelabuhan ke Linux , Martin Schulze (joey@linux.de) menetapkan beberapa bug dan menambah beberapa ciri baru. Klogd pada asalnya ditulis oleh Steve Lord (lord@cray.com), Greg Wettstein membuat penambahbaikan utama.

Dr. Greg Wettstein
Pembangunan Sistem Enjel

Kemudahan Pengkomputeran Bahagian Penyelidikan Onkologi
Pusat Kanser Roger Maris
Fargo, ND
greg@wind.enjellic.com

Stephen Tweedie
Jabatan Sains Komputer
Universiti Edinburgh, 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

Penting: Gunakan arahan lelaki ( % man ) untuk melihat bagaimana arahan digunakan pada komputer tertentu anda.

artikel berkaitan