xenial (8) syslogd.8.gz

Provided by: manpages-ja_0.5.0.0.20140515+dfsg-2_all bug

名前

       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     自動的なバックグラウンドへの移行を抑止する。これは syslogdinit(8) により起動および制御される場
              合にのみ必要である。

       -p socket
              /dev/log の代りに指定した UNIX ドメインソケットを利用する。

       -r     このオプションで、ネットワーク上でインターネットドメインソケットにより       syslog      サービス(
              services(5) を参照せよ)を使用してメッセージを受信する機能が有効になる。既定 値ではネットワークから
              のいかなるメッセージも受信しない。

              このオプションは sysklogd パッケージの version 1.3 で導入された。既定 値の挙動がより以前の版の挙動
              の反対となっていて(ネットワーク越しに受信  するには)このオプションを利用しなければならないという点
              にどうか注意し ていただきたい。

       -s domainlist
              記録する際に剥ぎ取るドメイン名を指定する。 コロン(``:'')を区切りに用いて複数のドメインを指定するこ
              ともできる。   ドメインの一部ではなく、ドメイン全体を指定することに注意すること。   例えば、    -s
              north.de と指定して、ログを記録するホスト名が satu.infodrom.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
              デバッグモードが有効である場合は無視するが、そうでなければ syslogd は終了する。

       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 オプションを指定する。 syslogd の既定の動作はネットワークを関
       知しない。

       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-
       terminate (\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