Skip to main content

Syslogd LinuxおよびUnixコマンド

【初音ミク】技術的備忘録〜Linux編〜【オリジナル曲】 (六月 2025)

【初音ミク】技術的備忘録〜Linux編〜【オリジナル曲】 (六月 2025)
Anonim

Sysklogdは、システムログとカーネルメッセージトラップをサポートする2つのシステムユーティリティを提供しています。インターネットとUnixドメインソケットの両方をサポートすることで、このユーティリティパッケージはローカルロギングとリモートロギングの両方をサポートできます。

システムロギングは、syslogdストックBSDソースから派生した(8)。カーネルロギングのサポートは、klogd(8)ユーティリティを使用して、カーネルログをスタンドアロン形式またはsyslogdのクライアントとして実行することができます。

Syslogdは、最新の多くのプログラムが使用する一種のログを提供します。記録されたすべてのメッセージには、少なくとも1つの時間とホスト名フィールド(通常はプログラム名フィールド)も含まれますが、ログプログラムがどれほど信頼できるかによって異なります。

一方、syslogd ソースは大幅に変更されており、いくつかのノートが順番に並んでいます。まず第一に、syslogdがデフォルトの標準的なBSD動作に従うことを確実にする体系的な試みがありました。 2番目の重要な概念は、このバージョンのsyslogdが、標準ライブラリにあるsyslogのバージョンと透過的にやり取りすることです。標準共有ライブラリにリンクされたバイナリが正しく機能しない場合は、異常動作の例が必要です。

メインの設定ファイル /etc/syslog.conf または代替ファイル、-f オプションは、起動時に読み込まれます。ハッシュマーク( ``# '')で始まる行と空行は無視されます。解析中にエラーが発生すると、行全体が無視されます。

シノプシス

syslogd -a ソケット -d -f 設定ファイル -h -l ホストリスト -m 間隔 -n -p ソケット -r -s ドメインリスト -v -バツ

オプション

-a ソケット

この引数を使用すると、そのソケットから追加のソケットを指定できますsyslogd 聞く必要があります。これは、chroot()環境でデーモンを動作させる場合に必要です。最大19の追加ソケットを使用できます。あなたの環境がさらに必要な場合は、シンボルを増やす必要がありますMAXFUNIX syslogd.cソースファイル内にあります。 chroot()デーモンの例は、http://www.psionic.com/papers/dns.htmlのOpenBSDの人々によって記述されています。

-d

デバッグモードをオンにします。これを使用すると、デーモンはフォーク(2)バックグラウンドで自分自身を設定するが、フォアグラウンドにとどまるのとは反対に、現在のttyに関する多くのデバッグ情報を書き込む。詳細については、DEBUGGINGセクションを参照してください。

-f 設定ファイル

代替の構成ファイルを指定する代わりに /etc/syslog.conf これはデフォルトです。

-h

デフォルトでは、syslogdはリモートホストから受信したメッセージを転送しません。コマンドラインでこのスイッチを指定すると、ログデーモンは受信したリモートメッセージを転送先ホストに転送します。

-l ホストリスト

fqdnではなく単純なホスト名でのみログに記録する必要があるホスト名を指定します。コロン( ``: '')セパレータを使用して、複数のホストを指定することができます。

-m 間隔

syslogd 定期的にマークタイムスタンプを記録する。デフォルト 間隔 2人の間 - マーク - 行は20分です。これはこのオプションで変更できます。設定する 間隔 0にすると完全にオフになります。

-n

自動バックグラウンドは避けてください。これは、特にsyslogd によって開始され、制御されるその中に(8).

-p ソケット

あなたは代わりのunixドメインソケットを指定することができます / dev / log .

-r

このオプションは、施設がSyslogサービスでインターネットドメインソケットを使用してネットワークからメッセージを受信できるようにします((5)を参照)。デフォルトでは、ネットワークからのメッセージは受信されません。

このオプションは、sysklogdパッケージのバージョン1.3で導入されました。デフォルトの動作は古いバージョンの動作とは逆の動作なので、これをオンにする必要があります。

-s ドメインリスト

ロギングする前に削除するドメイン名を指定します。複数のドメインは、コロン( ``: '')セパレータを使用して指定できます。サブドメインを指定することはできませんが、ドメイン全体のみを指定することをお勧めします。たとえば、if-s north.de が指定されていて、ホストログがsatu.infodrom.north.deに解​​決されない場合は、次のような2つのドメインを指定する必要があります。-s north.de:infodrom.north.de.

-v

バージョンを印刷して終了します。

-バツ

リモートメッセージを受信するときに名前の参照を無効にする。これにより、ネームサーバーがsyslogデーモンを実行しているのと同じマシンで実行されているときに、デッドロックを回避できます。

信号

Syslogd 一連の信号に反応する。あなたは簡単にsyslogd 以下を使用してください:

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

サイアップ

これによりsyslogd 再初期化を実行する。開いているファイルはすべて閉じられ、設定ファイル(デフォルトは /etc/syslog.conf )が再読され、syslog(3)施設が再開される。

SIGTERM

syslogd 死んでしまいます。

SIGINT, SIGQUIT

デバッグが有効な場合は無視され、そうでない場合は無視されます。syslogd 死んでしまいます。

SIGUSR1

デバッグをオン/オフに切り替えます。このオプションは、syslogd は、-d デバッグオプション。

SIGCHLD

生まれたばかりの子どもたちは、メッセージを伝えているので、子供たちを待ちます。

構成ファイルの構文の違い

Syslogd 元のBSDソースとは少し異なる構文を使用しています。もともと、特定の優先度以上のすべてのメッセージがログファイルに転送されました。

たとえば、次の行はデーモン機能を使用するデーモンからのすべての出力を引き起こしました(デバッグは最も低い優先度なので、それ以上のすべての値も一致します)。 / usr / adm / daemons :

#サンプルsyslog.conf daemon.debug / usr / adm / daemons

新しいスキームの下では、この動作は変わりません。違いは、4つの新しい指定子、アスタリスク(*)ワイルドカード、方程式記号(=)、感嘆符(!)、マイナス記号(-).

* 指定された施設のすべてのメッセージを宛先に送信することを指定します。この動作は、デバッグの優先度を指定することによって縮退しています。ユーザーは、アスタリスク表記がより直感的であることを示しています。

= ワイルドカードは、指定された優先度クラスにログを制限するために使用されます。これは、例えば、デバッグメッセージのみを特定のロギングソースにルーティングすることを可能にする。

たとえば、次の行は syslog.conf デバッグメッセージをすべてのソースから / usr / adm / debug ファイル。

#サンプルsyslog.conf *。=デバッグ/ usr / adm / debug

! 指定された優先順位のロギングを除外するために使用されます。これは、優先順位を指定するすべての(!)可能性に影響します。

たとえば、次の行は、優先度情報を持つメッセージを除くファシリティメールのすべてのメッセージを / usr / adm / mail ファイル。 news.info(を含む)からnews.crit(除く)へのすべてのメッセージは、 / usr / adm / news ファイル。

#サンプルsyslog.confメール。*; mail!!= info / usr / adm / mail news.info; news。!crit / usr / adm / news

例外指定子として直感的に使用できます。上記の解釈は単純に逆転される。あなたが使うかもしれないことを行うこと

mail.none

または

郵便物。!*

または

メール!!debug

メール機能を備えたすべてのメッセージをスキップします。そこに遊ぶ余地があります。 :-)

- ファイルに書き込むたびにファイルの同期を省略したい場合は、ファイル名の接頭辞としてのみ使用できます。

これは、純粋なBSDの動作に使用された個人にはある程度の順応が必要かもしれませんが、テスターはこの構文がBSDの動作よりもいくらか柔軟性があることを示しています。これらの変更が標準に影響してはならないことに注意してくださいsyslog.conf(5)ファイル。拡張動作を取得するには、構成ファイルを特に変更する必要があります。

リモートロギングのサポート

これらの変更により、syslogd機能に対するネットワークのサポートが提供されます。ネットワークサポートとは、syslogdを実行している1つのノードからsyslogdを実行している別のノードにメッセージを転送し、実際にディスクファイルに記録することを意味します。

これを有効にするには、-r オプションを使用します。デフォルトの動作は、syslogd ネットワークに耳を傾けません。

syslogdは、ローカルに生成されたログメッセージのためのunixドメインソケットでリスンするようにします。この動作により、syslogdは標準のCライブラリにあるsyslogと相互運用できます。同時に、syslogdは、他のホストから転送されたメッセージの標準syslogポートで待機します。この作業を正しく行うにはサービス(5)ファイル(通常は /等 )には、次のエントリが必要です。

syslog 514 / udp

このエントリがない場合syslogd UDPポートを開くことができないため、リモートメッセージを受信することも送信することもできません。代わりに、 syslogd エラーメッセージを吹き飛ばし、直ちに死ぬでしょう。

メッセージを別のホストに転送させるには、通常のファイル行を syslog.conf メッセージの先頭に@を付けて送信するホストの名前のファイル。

たとえば、転送するすべて 次のコマンドを使用してリモートホストにメッセージを送信する syslog.conf エントリ:

#syslogdの設定ファイルをリモートホストへの#メッセージをすべて転送します。 *。* @hostname

すべてを転送するカーネル リモートホストへのメッセージは次のようになります。

#すべてのカーネル#メッセージをリモートホストに転送するサンプル設定ファイル。 kern。* @hostname

起動時にリモートホスト名を解決できない場合は、ネームサーバにアクセスできない可能性があります(syslogdの後に起動される可能性があります)ので、心配する必要はありません。Syslogd 名前を10回解決するために再試行し、その後不平を言う。これを避ける別の可能性は、ホスト名を / etc / hosts .

ノーマルsyslogdリモートホストから受信したメッセージを同じホストに送信した場合(または最初のホストに戻すなど、複雑なホストを3番目のホストに送信した場合など)、syslogループが発生します。私のドメイン(Infodrom Oldenburg)では、間違いなく1つのディスクと1つのディスクが同じメッセージでいっぱいになりました。 :-(

これを避けるために、リモートホストから受信したメッセージは、別の(または同じ)リモートホストにはもう送信されません。これが意味をなさないシナリオがある場合は、私(ジョーイ)の行をドロップしてください。

リモートホストがホストと同じドメインにある場合は、syslogd が実行されている場合、fqdn全体の代わりに単純なホスト名だけが記録されます。

ローカルネットワークでは、すべての重要な情報を1台のマシンに保持するために、中央ログサーバーを提供することができます。ネットワークが異なるドメインで構成されている場合、単純なホスト名の代わりに完全修飾名を記録することについて不平を言う必要はありません。ストリップドメイン機能を使用することができます-s このサーバーのあなたはsyslogd サーバーが置かれているドメイン以外のいくつかのドメインを取り除き、単純なホスト名だけを記録します。

を使用する-l オプションでは、単一のホストをローカルマシンとして定義することもできます。これもまた、単純なホスト名だけを記録し、fqdnsは記録しません。

メッセージをリモートホストに転送したり、リモートホストからのメッセージを受信するために使用されるUDPソケットは、必要なときにのみ開かれます。 1.3-23より前のリリースでは毎回開かれましたが、読書や転送のために開かれませんでした。

名前付きパイプ(FIFO)への出力

このバージョンのsyslogdは、名前付きパイプ(fifo)への出力ログをサポートしています。 fifoまたはnamed pipeは、ファイル名にパイプ記号( `` | '')を付けることで、ログメッセージの宛先として使用できます。これはデバッグに便利です。 syslogdを開始する前に、FIFOをmkfifoコマンドで作成する必要があります。

次の設定ファイルは、デバッグメッセージをカーネルからFIFOにルーティングします。

#カーネルのデバッグ#メッセージを#名前付きパイプである/ usr / adm / debugにのみルーティングする設定例。 kern。=デバッグ| / usr / adm / debug

インストールに関する懸念

このバージョンのsyslogdをインストールする際には、おそらく重要な考慮事項が1つあります。このバージョンのsyslogdは、syslog関数によるメッセージの適切な書式設定に依存しています。 libc.so.4。2-4 .nの領域のどこかで、共有ライブラリのsyslog関数の機能が変更されました。具体的な変更は、メッセージをヌル終了してから / dev / log ソケット。 syslogdのこのバージョンの適切な機能は、メッセージのヌル終了に依存します。

この問題は、古い静的にリンクされたバイナリがシステム上で使用されている場合、通常は現れます。 syslog関数の古いバージョンを使用しているバイナリは、空行が記録され、続いてメッセージの最初の文字が削除されたメッセージが記録されます。これらのバイナリを新しいバージョンの共有ライブラリに再リンクすると、この問題が解決されます。

両方のsyslogd(8)とklogd(8)はinit(8)から実行することも、rc。*シーケンスの一部として開始することもできます。 initから起動されている場合は、オプション -n 設定する必要があります。そうしないと、大量のsyslogデーモンが起動します。それの訳はその中に(8)はプロセスIDに依存します。

セキュリティ脅威

syslogdデーモンは、サービス拒否攻撃のコンジットとして使用される可能性があります。この可能性を私に警告してくれたJohn Morrison([email protected])に感謝します。悪意のあるプログラム(mer)は、syslogdデーモンにsyslogメッセージを非常に簡単に流すことができます。その結果、ログファイルはファイルシステム上の残りのスペースをすべて消費します。 inetドメインソケットを介してロギングを有効にすると、システムはローカルマシン上のプログラムや個人以外のリスクにさらされます。

マシンを保護するにはいくつかの方法があります。

  1. どのホストまたはネットワークが514 / UDPソケットにアクセスできるかを制限するカーネルファイアウォールを実装します。
  2. ロギングは、分離されているか非ルートのファイルシステムに向けることができます。ファイルシステムは、いっぱいになるとマシンを損なわないでしょう。
  3. ext2ファイルシステムは、ファイルシステムの特定のパーセンテージをrootだけが使用するように制限するように設定することができます。注意 syslogdを非ルートプロセスとして実行する必要があります。 また注意 これにより、syslogdが514 / UDPソケットにバインドできなくなるため、リモートロギングの使用が防止されます。
  4. inetドメインソケットを無効にすると、ローカルマシンのリスクが制限されます。
  5. ステップ4を使用し、問題が解決せず、不正なプログラム/デーモンのセカンダリでない場合は、3.5フィート(約1メートル)のサッカーロッド*を取得し、問題のユーザーとチャットします。サッカーロッドdef。 --- 3/4、7/8または1in。硬化した鋼棒、両端に雄ねじを付けたもの。西ノースダコタ州の石油産業、および油井から油を吸うための他の場所での主な用途。二次的な用途は、牛の飼料ロットの建設と、時折反抗的であるか、または好戦的な個人に対処するためである。

デバッグ

デバッグが有効になっている場合-d オプションsyslogd それがstdoutで行うことの多くを書くことによって非常に冗長になります。設定ファイルを再読み込みして再解析するたびに、内部データ構造に対応する表が表示されます。この表は4つのフィールドで構成されています。

このフィールドにはゼロから始まるシリアル番号が入ります。この数値は、内部データ構造(すなわち、配列)における位置を表す。 1つの番号が省略されている場合は、対応する行にエラーがある可能性があります。 /etc/syslog.conf .

パターン

このフィールドは厄介で、内部構造を正確に表します。すべての列は施設を表します(syslog(3)参照)。ご覧のように、以前の使用のために無料で残っている機能がいくつかありますが、左端のものだけが使用されています。列の各フィールドは優先順位を表します(syslog(3)).

アクション

このフィールドは、パターンに一致するメッセージが受信されるたびに実行される特定のアクションを記述します。参照してくださいsyslog.conf(5)マンページを参照してください。

議論

このフィールドには、最後のフィールドのアクションに対する追加の引数が表示されます。ファイルロギングの場合、これはログファイルのファイル名です。ユーザロギングの場合、これはユーザのリストです。リモート・ロギングの場合、これはログを取るマシンのホスト名です。コンソールログの場合、これは中古のコンソールです。 tty-loggingの場合、これは指定されたttyです。ウォールには追加の引数はありません。

関連項目

ロガー(1), syslog(2), (5)

共同作業者

Syslogd Greg Wettstein([email protected])がLinuxに移植し、Martin Schulze([email protected])がいくつかのバグを修正し、いくつかの新機能を追加しました。KlogdもともとSteve Lord([email protected])によって書かれたもので、Greg Wettsteinは大きな改善をしました。

Dr. Greg WettsteinEnjellicシステム開発

がん研究部コンピューティング施設ロジャーマリスがんセンターファーゴ、ND[email protected]

スティーブントゥイードコンピュータサイエンス学科エジンバラ大学、スコットランド[email protected]

Juha Virtanen[email protected]

シェーン・アルダートン[email protected]

マーティン・シュルツェインフォドロムオルデンブルク[email protected]

重要: 使用 おとこ コマンド( % おとこ 特定のコンピュータでどのようにコマンドが使用されているかを確認することができます。

関連記事

  • sysklogd - Linuxコマンド - Unixコマンド
  • rwall - rwaとは