SYSKLOGD(8) Linux System Administration SYSKLOGD(8) 名前 sysklogd - Linux システムロギングユーティリティ 書式 syslogd [ -a socket ] [ -d ] [ -f config file ] [ -h ] [ -l hostlist ] [ -m interval ] [ -n ] [ -p socket ] [ -r ] [ -s domainlist ] [ -v ] 説明 sysklogd はシステムロギングとカーネルメッセージの確保という二つの機能を 提 供 す るユーティリティである。このユーティリティではインターネットと UNIX ドメインの両方のソケットが利用可能なので、ローカルとリモートの両方 で記録可能である。 このシステムの記録を提供する syslogd(8) は BSD のソースコードに由来して いるものである。カーネルロギング機能は klogd(8) ユーティリティによっ て 提 供され、スタンドアロン形式、syslogd クライアントのどちらの形式でも動 作する。 syslogd は最近の多くのプログラムにロギングの手段を提供する。記録され る メ ッセージは少なくとも時間の情報とホスト名を持ち、通常はそれらに加えて プログラム名のフィールドも持っている。しかしながら記録される内容の信 頼 性についてはそれぞれのプログラムに依存する。 syslogd のソースコードは激しく変更されながらも二つの特徴についてはそれ を維持しつづけている。まず第一に、その基本となる、一般的な BSD らしい挙 動 への追随を保証することの系統的な意図の維持である。第二の重要な特徴は 、この版の syslogd が標準ライブラリに含まれる syslog と透過的に相互に影 響 しあっていることである。もし標準の共有ライブラリがリンクされたバイナ リコードが正常に機能しないならば、作者達にその異様な挙動の例を送って 欲 しい。 起動時にその主設定ファイルである /etc/syslog.conf かまたは代替として -f オプションであたえられる名前のファイルが読み込まれる。その各行のうち 、 シャープ記号 (‘‘#’’) ではじまるものと空行は無視する。その行の解析におい てエラーを生じた行もまた無視する。 オプション -a socket この引数を使って、 syslogd が listen する追加のソケットを指定 で きる。これはデーモンを chroot() 環境で動作させようとする時に必要 である。追加のソケットは 19 個まで指定できる。もしもっと多くのソ ケットが必要なら、syslogd.c ファイルの MAXFUNIX シンボルの値を増 やす必要がある。 chroot() デーモンの例としては OpenBSD の人が 記 した http://www.psionic.com/papers/dns.html がある。 -d デバッグモードを有効にする。このときデーモンは自身をバッググラウ ンドに推移させるための fork(2) を使用せずにフォアグラウンドに 留 ま り、豊富なデバッグ情報を現在有効な tty へ出力する。このマニュ アルページのデバッギングの章に詳細な解説があるので参照すること。 -f config file 既定値の /etc/syslog.conf ファイルの代替として、指示された名前の ファイルを使用する。 -h syslogd の既定値の設定では、リモートのホストから受信したメッセー ジをそれ以上転送することはない。コマンドラインからこのスイッチを 使用するとデーモンはリモートホストから受信したメッセージをさらに 別に定義されるホストへ転送する。 -l hostlist 記 録するホストとして、FQDN ではなく単純にホスト名のみを指定する 。コロン(‘‘:’’)を区切りに用いて複数のホストを指定することもで き る。 -m interval syslogd に定期的にタイムスタンプを記録させる。二行の -- MARK -- を記録する間隔 interval の既定値は 20 分であり、このオプションで 変更可能である。 interval を 0 にすると、-- MARK -- 行を全く出力 しない。 -n 自動的なバックグラウンドへの移行を抑止する。これは syslogd が init(8) により起動および制御される場合にのみ必要である。 -p socket /dev/log の代りに指定した UNIX ドメインソケットを利用する。 -r このオプションで、ネットワーク上でインターネットドメインソケット により syslog サービス( services(5) を参照せよ)を使用してメッ セ ージを受信する機能が有効になる。既定値ではネットワークからのいか なるメッセージも受信しない。 このオプションは sysklogd パッケージの version 1.3 で導入され た 。 既定値の挙動がより以前の版の挙動の反対となっていて(ネットワー ク越しに受信するには)このオプションを利用しなければならないと い う点にどうか注意していただきたい。 -s domainlist 記 録する際に剥ぎ取るドメイン名を指定する。コロン(‘‘:’’)を区切り に用いて複数のドメインを指定することもできる。ドメインの一部では な く 、 ド メ イン全体を指定することに注意すること。例えば、 -s north.de と指定して、ログを記録 す る ホ ス ト 名 が satu.info- drom.north.de だった場合、ドメインは剥ぎ取られない。このような場 合、 -s north.de:infodrom.north.de のように二つのドメインを指 定 しなければならない。 -v バージョンを出力し、終了する。 シグナルの処理 syslogd はシグナルに反応する。 syslogd に簡単にシグナルを送るには次のよ うに実行すればよい: kill -SIGNAL ‘cat /var/run/syslogd.pid‘ SIGHUP このシグナルは syslogd に再初期化を指示する。全ての開いていた フ ァイルを閉じ、設定ファイル(既定値では、 /etc/syslog.conf) を再度 読み込んで、 syslog(3) の機能を再び有効にする。 SIGTERM syslogd は終了する。 SIGINT, SIGQUIT デバッグモードが有効である場合は無視するが、そうでなければ sys- logd は終了する。 SIGUSR1 デバッグモードのオン/オフを切り替える。この動作は syslogd がその 起動時に -d オプションが指示されている場合にのみ有効。 SIGCHLD メッセージの一斉通知のために、子プロセスがあればその終了を待つ。 設定ファイル文法の差異について syslogd の設定ファイル文法はオリジナルの BSD のソースコードとは微妙に差 異がある。オリジナルでは、指示されたものとそれ以上の優先順位をもつメ ッ セージは全てログファイルに記録される。 た とえば、下記の例は daemon facility を使用する「全て (debug は 最低の優先順位なので、それ以上の全てが適合するわけである)」の デ ーモンからの出力が /usr/adm/daemons に記録される: # syslog.conf のサンプル daemon.debug /usr/adm/daemons 新しい仕組みのもとでもこの記述は全く同じ動作をもたらす。アスタリスク(*) 、イコール記号(=)、エクスクラメーションマーク(!)、マイナス記号(-)の四つ の新たな記述子が追加された相異点である。 * を指定すると、指示した facility に関するの全てのメッセージを一つに集 めることができる。この動作は特定の priority レベルに対するデバッグに 支 障 がでるかもしれない点に注意すること。このアスタリスク記法はより直観的 なものであることがわかるだろう。 = ワイルドカードは記録を指示された priority のもののみに限定する。た と え ば特定のロギングについて、デバッグメッセージのみを集めることが可能と なる。 下記の syslog.conf の記述例はすべての debug メ ッ セ ー ジ を /usr/adm/debug に記録する。 # syslog.conf のサンプル *.=debug /usr/adm/debug priority の先頭に付く ! は、上記の priority、記述子の解釈を反転する(訳 注:すなわち、!info なら info 未満の priority を表す)。 以下の例では、priority が info であるものを除くす べ て の mail facility のメッセージが /usr/adm/mail ファイルに記録される。そし て news.info(これは含む) から news.crit(こちらは含まれない)ま で のすべてのメッセージが /usr/adm/news ファイルに記録される。 # syslog.conf のサンプル mail.*;mail.!=info /usr/adm/mail news.info;news.!crit /usr/adm/news 除 外する指示子はもっと直観的にも利用できる。上述の例はもっと簡単にでき る。たとえば… mail.none であるとか mail.!* であるとか mail.!debug と記述すると mail facility によるすべてのメッセージが除外される。もっと 楽しむ余地もあるよね :-) - をファイル名に接頭すると書き込み時のファイルシステムバッファのフラッ シュ動作を抑制することができる。 純粋な BSD 的挙動からは多少順応した結果なのかもしれないが、使う立場から す れば、BSD 的挙動よりもよりいくらかでも柔軟であることがわかるだろう。 これらの変更は標準的な syslog.conf(5) ファイルにはなんら影響を及ぼし て い ない点に注意せよ。拡張機能を利用するには明示的に設定ファイルを調整す る必要がある。 リモートロギングサポート syslogd の機能にネットワークへのサポートを提供する変更点がいくつかあ る 。 ネットワークサポートとは、syslogd が稼働しているあるホストでのメッセ ージを別の syslogd が稼働しているホストへ転送し、そこで実際にディスクの ファイルに記録するようにできる、ということである。 この機能を有効にするにはコマンドラインで -r オプションを指定する。 sys- logd の既定の動作はネットワークを関知しない。 syslogd はローカルに生成されるメッセージについて UNIX ドメインソケッ ト を 監視する方法を用いる。この方法が syslogd に標準 C ライブラリに含まれ る syslog との協調動作を可能にしている。同時に syslogd は他のホストから 送 信されるメッセージのために標準の syslog ポートを監視している。正しい 動作のためには services(5) ファイル (普通 /etc にある)に次のエントリ が 必要である: syslog 514/udp もしこのエントリがなければ、UDP ポートが開設できないために syslogd はリ モートのメッセージを受信することも他へ送信することもできない。この場 合 、 syslogd は即座に終了する代りにエラーメッセージを出力する。 メ ッセージを送信するべきホスト名に @ を接頭して syslog.conf ファイルの 通常のファイル名のかわりに記述することで、他のホストへメッセージを送 信 することができる。 たとえば「すべて」のメッセージをリモートのホストへ送信するには、 syslog.conf に次のように記述する: # メッセージをすべてリモートのホストへ # 送信するための syslogd 設定ファイルの例 *.* @hostname すべての カーネル メッセージをリモートのホストに送信 す る に は (syslog.conf に)次のように記述する: # カーネルメッセージをリモートのホストへ # 送信する設定ファイルの例 kern.* @hostname 起 動時にネームサーバ(通常、syslogd よりも後から起動する)が応答しないた めにリモートのホストネームが名前解決できなくても問題はない。 syslogd は ホ スト名の問い合わせを 10 回繰り返し、そののちにエラーメッセージ出す。 あるいはこの問題を回避するために、 /etc/hosts ファイルに当のホスト名 を 記述しておくという方法もある。 普通の syslogd では、リモートホストが実は自分自身であった場合 (または、 より複雑な三角関係とか、そんなの) syslog-loop が発生する。たとえば作 者 の ドメイン(Infodrom Oldenburg)でもたった一つのメッセージがわれわれのデ ィスクをあふれかえさせるという事故が起きたことがある :-( これをさけるべく、リモートホストから(または自分自身)から発信されたメ ッ セ ージはそれ以上転送されない。これでもまだ問題があるような状況があるの なら作者(Joey) まで連絡してほしい。 もしリモートのホストが syslogd が稼働しているホストと同じドメインに属し ているのであれば、FQDN ではなくて単純にホスト名のみが記録される。 ロ ーカルネットワークにおいて、重要な情報のすべてを一台のコンピュータに 集めるための中央ロギングサーバを提供することができる。もしネットワー ク が 複数のドメインからなっているような場合には、単純なホスト名ではなくて FQDN で記録されるが、それが嫌な場合は、 -s でそのサーバで strip-domain 機能を使えばよい。これで syslogd はサーバが属するドメイン以外であっても 剥ぎ取って単純にホスト名のみを記録する。 -l オプションを使用するとローカルのコンピュータとしてのホスト名を定義で き る可能性が生じる。この場合でもやはり FQDN ではなくて単純なホスト名だ けを記録する。 リモートホストへメッセージを転送したり、リモートホストからメッセージ を 受け取るために用いられる UDP ソケットは、それが必要な時にだけオープンさ れる。 1.3-23 より前のリリースでは UDP ソケットは毎回オープンされていた が、読み込み用あるいは転送用という形ではなかった。 名前付きパイプ(FIFO)への出力 こ の版の syslogd は複数の名前付きパイプ(FIFO) へのログ出力も可能である 。記録するメッセージをFIFO あるいは名前付きパイプで記録するには、ファイ ル名の前にパイプ記号(‘‘|’’)を付ける。これはデバッグに役に立つ。使用する FIFO は syslogd の起動に先立って mkfifo コマンドで作成しておかなけれ ば ならない点に注意すること。 下記はカーネルのデバッグメッセージを FIFO で記録する為の設定例で ある。 # 名前付きパイプとしての /usr/adm/debug へ # カーネルのデバッグメッセージを記録するための # 基本的な設定例 kern.=debug |/usr/adm/debug インストール関連 この版の syslogd をインストールする場合において、重要な考察を要する点が 多分一つだけある。この版の syslogd は syslog ファンクションによるメッセ ージのフォーマットが適切なものであることを前提としている。共有ライブ ラ リ に よ り 提 供 さ れ る syslog フ ァ ン ク シ ョ ンの動作内容は、 libc.so.4.[2-4].n の範囲のなかだけでもどこかしら変更されている。なか で も明らかな変更は /dev/log ソケットへ出力される際にメッセージが NUL-ter- minate (\0 で終端されること) されるようになったことである。よって、この 版の syslogd はメッセージが \0 で終端されていることに依存することとなっ た。 この問題は、概して、システム上で古いスタティックにリンクされたバイナ リ コ ードを動作させるときにあらわになる。古い syslog ファンクションを用い るバイナリコードは、メッセージ中の最初の文字が削除されたメッセージを 記 録 し、空行を(複数)作ってしまう。この問題を修正するには、新しい版の共有 ライブラリを用いてリンクしなおすしかない。 syslogd(8) と klogd(8) の両方とも init(8) を用いる起動でも rc.* の中 で 起動でもどちらでも可能である。もし、init を用いる場合は -n オプションを 必ず設定すること、さもなくばたくさんの syslog デーモンが起動してしま う 。これは init(8) がプロセス ID に依存しているためである。 セキュリティ上の注意 syslogd デーモンは使用不能攻撃の抜け道として利用されてしまう潜在的な可 能性を持っている。Jon Morrison (jmorrison@rflab.ee.ubc.ca) がこの可能性 を警告した。ごろつきのプログラマ(達)が、 syslog メッセージを syslogd デ ーモンに殺到させて、その結果、ログファイルで全ての利用可能なファイル シ ス テムを埋め尽すことが簡単にできるようになっていた。インターネットドメ インソケットを用いるロギングを有効にすることはローカルのコンピュータ の 上 のプログラムや、他の誰かによる外部からの危険にシステムをさらすことに なりうる。 コンピュータを守るための手段がいくつかある: 1. 514/UDP ソケットにアクセスすることができるホストやネットワークを 制限するファイアウォールをカーネルに実装する。 2. ログの出力先をもしそれが破壊されてもコンピュータを損なうことはな いような独立しているかまたはルート (/) ではないファイルシステ ム にする。 3. ext2 ファイルシステムはそのうちの特定の割合を root だけが使用可 能とする制限を設定することができる。注意 この方法は syslogd を root ではないプロセスで実行する必要がある。さらに注意 この方法は syslogd が 514/UDP ソケットと接続できなくなるので、リモートロ ギ ングが不可能となる。 4. ローカルのコンピュータへの危険を制限するためにインターネットドメ インソケットを無効にする。 5. ステップ 4 を用いてもなお問題が残っていて、それが 3.5 フィー ト( だ いたい 1 メートル)の吸出し棒(注)を持ったごろつきのプログラム/ デーモンどころのさわぎではないようであれば、 問題を起している ユ ーザとおしゃべりしてみるしかないね。 注: 吸出し棒とは — 3/4、7/8、1 インチ の鋼鉄の棒で両端に吸い口が 付いている。もともとは西ノースダコタの油田などで使われた油井から 油を‘吸い出す’ポンプで使われているもののことである。それが転じて 牧場で牛に餌をあたえるため、また時には反抗的だったり喧嘩腰だった りする牛を追うために使われている棒を差す。 デバッギング -d オプションを用いてデバッグモードを有効にすると syslogd はとてつもな く饒舌になって、いまなにがおこっているかを標準出力に出力する。設定フ ァ イ ルが再度読み込み込まれ解釈され直すときはいつでもテーブル化された内部 データ構造が出力される。このテーブルは四つのフィールドから成っている: number このフィールドは 0 から始まるシリアル番号である。この番号は内 部 データ構造上(すなわち配列)での位置をあらわす。もし番号がないとき は、 /etc/syslog.conf の対応する行にエラーがある。 pattern このフィールドは巧妙で正確に内部構造を表現して い る 。 各 列 は facility( syslog(3) を参照)を表わす。以前使用されていたいくつか の facility もまだ残っているが、使用されているものだけがある。列 の各フィールドは priority( syslog(3) を参照)をあらわす。 action このフィールドには(facility/priority の)パターンに一致するメッセ ージを受信したときの action の詳細が記述される。全ての action に ついては syslog.conf(5) マニュアルページを参照すること。 arguments このフィールドは action の最後のフィールドによる付加的な引数を示 す。ファイルロギングではログファイルとするファイル名; ユーザロギ ングでは(ログ出力を通知する)ユーザの一覧; リモートロギングではロ グを配信するコンピュータのホスト名; コンソールロギングでは使用さ れ るコンソール; ttyロギングでは指定された tty; 一斉通知の場合は 付加引数はなし。 ファイル /etc/syslog.conf syslogd の設定ファイル。正確な情報は syslog.conf(5) を見ること。 /dev/log ローカル syslog メッセージを読み出す UNIX ドメインソケット。 /var/run/syslogd.pid syslogd のプロセス ID を保持するファイル。 バグ ある行にエラーがあると全てのルールを無視してしまう。 syslogd はその処理過程のどの時点においてもログファイルのファイルモード を変更しない。もしファイルが誰でも読み書きできるように作成されていて も 、 である。もしこのことによる問題を回避したいのであれば作成時に管理者の みがあつかえるように変更する必要がある。 これは、 smail 3.x の配布に含まれる savelog(8) によるログファイルのロー テーションと連携して都合がよい。auth.* メッセージはパスワードが含まれて いることがあり、それが誰にでも読めるということは重大なセキュリティホ ー ルになるという点を忘れないように。 関連項目 syslog.conf(5), klogd(8), logger(1), syslog(2), syslog(3), services(5), savelog(8) 協力 syslogd は BSD のソース コ ー ド に 由 来 し て い て 、Greg Wettstein (greg@wind.enjellic.com) が Linux に 移 植 し 、Martin Schulze (joey@linux.de) が幾つかのバグの修正と新しい機能追加を実装した。 klogd のオリジナルは Steve Lord (lord@crya.com)によって書かれ、Greg Wettstein が多くの改善を施した。 Dr. Greg Wettstein Enjellic Systems Development Oncology Research Division Computing Facility Roger Maris Cancer Center Fargo, ND greg@wind.enjellic.com Stephen Tweedie Department of 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 Version 1.3 12 October 1998 SYSKLOGD(8)
コロナウイルスの日ごとの感染者数・死者数をグラフ化してみました。どの国が増加傾向にあり、どの国が終息に向かっているかを視覚化しています。
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa