sudoreplay - sudo
のセッションログを再生する
sudoreplay [
-h] [
-d directory] [
-f
filter] [
-m max_wait] [
-s speed_factor] ID
sudoreplay [
-h] [
-d directory] -l [search
expression]
sudoreplay は、
sudo
が生成した出力ログの再生、
または一覧表示を行う。再生する場合、
sudoreplay
はセッションの再生をリアルタイムで実行することもできるし、
コマンドライン・オプションによって再生速度を
(早くしたり、
遅くしたり)
調節することもできる。
上記書式の一つ目
(再生モード)
で指定する
ID は、
たとえば、0100A5
のような、
数字とアルファベットの大文字からなる
6 字の文字列か、
sudoers
の
iolog_file
オプションにマッチするパターンかの、
どちらかでなければならない。
sudoers の
log_output
オプションが有効な状態で、
sudo
を使ってコマンドを実行すると、
TSID=ID という文字列が syslog
経由で、 あるいは
sudo
独自のログファイルに記録される。
また、
IDは、
sudoreplay
のリストモードを使用して、
特定することもできる。
- [訳注]:
- セッションの出力のロギングを有効にするには、sudoers
ファイルの Defaults 行で
log_output を指定するか、
あるいは、同ファイルのユーザ設定でコマンドに
LOG_OUTPUT タグを付ける。
sudoers
のマニュアルを参照してほしい。
リストモードで
sudoreplay
を使用すれば、ユーザ、使用した端末
(tty)、
実行したコマンドなど、いくつかの条件に基づいて、セッションの
ID
を知ることができる。
再生モードでは、標準出力がリダイレクトされていないかぎり、
以下のキーが有効である。
- ' ' (space)
- 出力を停止する。任意のキーを押せば、続行する。
- '<'
- 再生速度を半分に下げる。
- '>'
- 再生速度を倍にする。
オプション¶
sudoreplay
では、以下のコマンドライン・オプションが使える。
- -d directory
- セッションログが格納されているディレクトリとして、デフォルトの
/var/log/sudo-io
の代わりに、directory
を使用する。
- -f filter
- デフォルトでは、sudoreplay
はコマンドの標準出力と標準エラー、
それに端末 (tty)
への出力を再生する。
-f を使えば、
そのうちのどれを出力するかを選択することができる。引き数
filter は、
コンマで区切られたリストであり、
stdout, stderr, ttyout
から一つ以上指定する。
- -h
- -h (help)
オプションを指定すると、
sudoreplay
は簡単なヘルプ・メッセージを標準出力に表示して、終了する。
- -l [search expression]
- 「リストモード」を有効にする。このモードでは、sudoreplay
は再生可能なセッション
ID
を一覧表示することになる。検索式
( search expression)
を指定すると、表示する
ID
を絞り込むために、
それが使用される。検索式は以下の述語
(predicate)
から構成される。
- [訳注]:
- このマニュアルで「ID」という言葉は、リストモードで表示される、
ある ID
を持つセッションそのものや、
そのセッションの情報の意味でも使われている。
- command command pattern
- 実行されたコマンドが
command pattern
にマッチすれば、真になる。
POSIX
の正規表現をサポートするシステムでは、
パターンに拡張正規表現が使える。
POSIX
の正規表現をサポートしていないシステムでは、
単なる部分文字列のマッチが行われる。
- cwd directory
- 指定したディレクトリをカレントディレクトリとして、
コマンドが実行されていれば、真になる。
- fromdate date
- コマンドを実行した日付が
date
以後なら、真になる。
サポートしている日時のフォーマットについては、
「日付と時刻のフォーマット」を参照すること。
- group runas_group
- 指定された runas_group
としてコマンドが実行されていれば、真になる。
runas_group
を明示的に指定して、
sudo
を実行しないかぎり、
この欄はログに書き込まれないことに注意してほしい。
- runas runas_user
- 指定された runas_user
としてコマンドが実行されていれば、真になる。
sudo
は、デフォルトでは
root
ユーザとしてコマンドを実行することを忘れないように。
- todate date
- コマンドを実行した日付が
date
以前なら、真になる。
サポートしている日付のフォーマットについては、
「日付と時刻のフォーマット」を参照すること。
- tty tty
- コマンドを実行したのが指定した端末デバイスならば、
真になる。 tty は /dev/
の部分を取って、指定する。
たとえば、 /dev/tty01
ではなく、 tty01
というように。
(訳注: この説明は sudo-1.7.4
のころの指定法である。
最近の sudoreplay
では、/dev/tty01
などと指定する必要があるようだ。)
- user user name
- コマンドを実行したユーザが
user name
なら、真になる。
述語は、他と区別できるなら、最短の文字列にまで短縮できる
(たとえば、現在のところ、述語
user の代わりに u
が使える)。
述語は
and,
or,
!
演算子を使って、結合することができる。
また、'(' と ')'
を使えば、グループ化が可能だ
(ただし、たいていの場合、カッコはシェルに解釈されないように、
エスケープしなければならない)。
and
演算子の指定はしてもしなくてもよい。
隣り合った述語は、間に
or がないかぎり、
and
で結合していると見なされるからだ。
- -m max_wait
- キーを押してから次のキーを押すまでの間や、データ出力同士の間にある
待ち時間の上限を指定する。
sudo
はデフォルトでは、
キーの押し下げやプログラムの出力の間にある経過時間を正確に再現する。
しかし、それだと、セッション中に長い間合いがある場合など、
うんざりすることになりかねない。
-m
オプションを指定すれば、
sudoreplay
はそうした間合いを、
長くても max_wait
秒以内に抑えるようになる。この値は、
たとえば 2.5
といった、浮動小数点数で指定することも可能だ。
- -s speed_factor
- このオプションを指定すると、sudoreplay
は、キーの押し下げやプログラムの出力の間にある待ち時間の秒数を調節する。
このオプションを使えば、表示速度を早くしたり遅くしたりできるわけだ。
たとえば、 speed_factor に
2 を指定すれば、
出力の速度が 2
倍になるし、 .5
を指定すれば、出力の速度が半分になる。
- -V
- -V (version)
オプションを指定すると、
sudoreplay
はバージョン番号を表示して終了する。
日付と時刻のフォーマット¶
日付と時刻の指定には、幾通りもの方法がある。よく使うフォーマットには、
次のものがある。
- HH:MM:SS am MM/DD/CCYY timezone
- 午前/午後 (am/pm)
の代わりに 24
時間制の時刻を使ってもよい。
- HH:MM:SS am Month Day, Year timezone
- 午前/午後 (am/pm)
の代わりに 24
時間制の時刻を使ってもよい。
月や曜日の名前には短縮形を使うこともできる。
月や曜日の名前は、英語で指定しなければならないのに注意すること。
(訳注:
曜日を指定する場合は、月と日にちの間以外なら、
たいていの場所に置くことができる。
なお、上記書式のように、年の前にコンマを入れるかどうかは、任意である。)
- CCYY-MM-DD HH:MM:SS
- ISO
の日時フォーマット。
- DD Month CCYY HH:MM:SS
- 月の名前には短縮形も使える。
日付と時刻の一方を省略することができる。
am/pm とタイムゾーンは、
指定してもしなくてもよい。日付が指定されない場合は、
当日が指定されたものと見なされる。時刻が指定されない場合は、
指定された日にちの
00:00:00 が使用される。
時刻や日付のそれほど重要ではない部分も省略できるが、
その場合は 0
が指定されたものと見なされる。
たとえば、以下の表記は、すべて有効である。
以下の表記は、すべて有効な日時の指定である。
- now
- 今日の今。
- tomorrow
- 今からちょうど 1
日後。
- yesterday
- 24 時間前。
- 2 hours ago
- 2 時間前。
- next Friday
- 次の金曜日の
00:00:00。
- this week
- 時刻は現在時刻。日付は来週の最初の日。
- a fortnight ago
- 14
日前の現在時刻。
- 10:01 am 9/17/2009
- 2009 年 9 月 17 日 午前 10
時 01 分。
- 10:01 am
- 今日の午前 10 時 01
分。
- 10
- 今日の午前 10 時 00
分。
- 9/17/2009
- 2009 年 9 月 17 日 午前 0
時 00 分。
- 10:01 am Sep 17, 2009
- 2009 年 9 月 17 日 午前 10
時 01 分。
ファイル¶
- /var/log/sudo-io
- I/O
ログを格納するデフォルトのディレクトリ。
- /var/log/sudo-io/00/00/01/log
- セッションログの情報
(一例)。
- /var/log/sudo-io/00/00/01/stdin
- セッションの標準入力のログ
(一例)。
- /var/log/sudo-io/00/00/01/stdout
- セッションの標準出力のログ
(一例)。
- /var/log/sudo-io/00/00/01/stderr
- セッションの標準エラーのログ
(一例)。
- /var/log/sudo-io/00/00/01/ttyin
- セッションの tty
入力のログ (一例)。
- /var/log/sudo-io/00/00/01/ttyout
- セッションの tty
出力のログ (一例)。
- /var/log/sudo-io/00/00/01/timing
- セッションのタイミングを記録したファイル
(一例)。
sudo
があるコマンドのためにパイプラインの一部として使用されたときを除いて、
stdin,
stdout,
stderr
用のファイルは空になることに注意してほしい。
ユーザ
millert
が実行したセッションを列挙する。
sudoreplay -l user millert
ユーザ
bob
が実行したセッションのうち、
コマンドに vi
という文字列が含まれるものを列挙する。
sudoreplay -l user bob command vi
ユーザ
jeff
が実行したセッションのうち、
コマンドが下記の正規表現にマッチするものを列挙する。
sudoreplay -l user jeff command '/bin/[a-z]*sh'
jeff か
bob
がコンソールで実行したセッションを列挙する。
sudoreplay -l ( user jeff or user bob ) tty console
関連項目¶
sudo(8),
script(1)
Todd C. Miller
sudoreplay
にバグを発見したと思ったら、下記にアクセスして、
バグレポートを提出していただきたい。
http://www.sudo.ws/sudo/bugs/
サポート¶
ある程度の無料サポートが
sudo-users
メーリングリストを通じて利用できる。
購読やアーカイブの検索をなさりたかったら、下記
URL をご覧になること。
http://www.sudo.ws/mailman/listinfo/sudo-users
sudoreplay
は「現状のまま」提供される。
明示的な、あるいは黙示的ないかなる保証も、
商品性や特定目的への適合性についての黙示的な保証を含め、
またそれのみに止まらず、これを否認する。詳細な全文については、
sudo
と一緒に配布されている
LICENSE ファイルや、 下記 Web
ページを御覧いただきたい。
http://www.sudo.ws/sudo/license.html