名前
sudoreplay - sudo
のセッションログを再生する
書式
sudoreplay [-h] [-d dir]
[-f filter] [-m num]
[-s num] ID
sudoreplay [-h] [-d dir]
-l [search expression]
説明
sudoreplay は、sudo
が生成した出力ログの再生、
または一覧表示を行う。再生する場合、
sudoreplay
はセッションの再生をリアルタイムで実行することもできるし、
コマンドライン・オプションによって再生速度を
(早くしたり、
遅くしたり)
調節することもできる。
上記書式の一つ目
(再生モード)
で指定する引き数 ID
は、たとえば 0100A5
のような、
数字とアルファベットの大文字からなる
6 字の文字列か、 sudoers
ファイルの iolog_file
オプションにマッチするパターンかの、
どちらかでなければならない。
sudoers ファイルの log_output
オプションが有効な状態で
sudo
を使ってコマンドを実行すると、
TSID=ID
という文字列が、syslog
経由や sudo
独自のログファイルに記録される
(訳注: その ID
を引き数として指定するのである)。
また、ID は、sudoreplay
のリストモード
(上記書式の二つ目)
を使用して、
突き止めることもできる。
- [訳注]:
- セッションの出力のロギングを有効にするには、
sudoers ファイルの Defaults
行で log_output
を指定するか、
あるいは、同ファイルのユーザ設定でコマンドに
LOG_OUTPUT タグを付ける。
詳細については、sudoers
のマニュアルを参照していただきたい。
リストモードで
sudoreplay
を使用すると、ユーザ、使用した端末
(tty)、
実行したコマンドなど、いくつかの条件に基づいて、セッションの
ID
を知ることができる。
再生モードでは、標準出力がリダイレクトされていないかぎり、
以下のキーが有効である。
- '\n' または '\r'
- 次の再生イベントに飛ぶ。イベント間の休止が長いとき便利。
- ' ' (space)
- 出力を停止する。任意のキーを押せば、続行する。
- '<'
- 再生速度を半分に下げる。
- '>'
- 再生速度を倍にする。
オプションとして以下のものが使用できる。
- -d dir,
--directory=dir
- セッションログは、デフォルトの
/var/log/sudo-io ではなく、
dir にある。
- -f filter,
--filter=filter
- 再生する I/O
タイプを選択する。
デフォルトでは、sudoreplay
はコマンドの標準出力、標準エラー、
それに端末 (tty)
への出力を表示することになっている。
引き数 filter
は、コンマで区切ったリストであり、stdout,
stderr, ttyout
から一つ以上指定する。
- -h, --help
- 簡単なヘルプ・メッセージを標準出力に表示して終了する。
- -l, --list [search
expression]
- 「リスト・モード」を有効にする。
このモードでは、sudoreplay
は、再生可能なセッションのリストを、
sudo
のログファイルにおける表記と同じような書式で、
/var/log/sudo-io
以下のファイル名
(すなわち、シーケンス・ナンバー)
によってソートして表示する。検索式
(search expression)
を指定すると、
表示する ID
を絞り込むために、それが使用されることになる。
検索式は以下の述語
(predicate)
から構成される。
- command
pattern
- 実行されたコマンドが
POSIX の拡張正規表現
pattern
にマッチすれば、
真になる。
- 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 name
- コマンドを実行したのが指定した端末デバイスならば、
真になる。tty name は
/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
max_wait
- キーを押してから次のキーを押すまでの間や、データ出力同士の間にある
待ち時間の上限を指定する。sudoreplay
はデフォルトでは、
キーの押し下げやプログラムの出力の間にある経過時間を正確に再現する。
しかし、それだと、セッション中に長い間合いがある場合など、
うんざりすることになりかねない。
-m
オプションを指定すると、sudoreplay
はそうした間合いを、
長くても max_wait
秒以内に抑えるようになる。この値は、
たとえば 2.5
といった、浮動小数点数で指定することも可能だ。
- -s, --speed
speed_factor
- このオプションを指定すると、sudoreplay
は、
キーの押し下げやプログラムの出力の間にある待ち時間の秒数を調節する。
このオプションを使えば、再生速度を早くしたり遅くしたりできるわけだ。
たとえば、speed_factor に
2
を指定すれば、再生速度が
2 倍になるし、 .5
を指定すれば、再生速度が半分になる。
- -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 friday"
と混同してはいけない。
"this friday"
ならば、今週の金曜日とマッチする。
- last week
- 7 日前の現在時刻。"a
week ago" と同じ。
- 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
分。
注意していただきたいが、相対的な日時指定は、
必ずしも期待通りに動作するとはかぎらない。
たとえば、"next"
修飾子は、"next Monday"
などのように、
曜日と一緒に使うようになっている。
week, month, year
などの単位と組み合わせて使った場合は、結果が期待よりも
1
多いものになってしまうのだ。たとえば、"next
week" は、
今からちょうど 2
週間後の日時を指すことになってしまい、
意図したところとはたぶん違うだろう。この問題については、
sudoreplay
の将来のバージョンで対処するつもりだ。
バージョン 1.8.4
以上の sudoreplay は、
柔軟なデバッグ用の枠組みをサポートしており、
sudo.conf(5) ファイルの Debug
行で設定するようになっている。
sudo.conf(5)
の設定についてさらに詳しいことをお知りになりたかったら、
sudo.conf(5)
のマニュアルをご覧になっていただきたい。
ファイル
- /etc/sudo.conf
- デバッグ用枠組みの設定
- /var/log/sudo-io
- 入出力ログを格納するデフォルトのディレクトリ
- /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
関連項目
script(1), sudo.conf(5), sudo(8)
作者
多数の人々が長年に渡って
sudo
の開発に携わってきた。
当バージョンは主として次の者が書いたコードからできている。
Todd C. Miller
sudo
の開発に貢献してくださった方々の詳細なリストについては、
配布物中の CONTRIBUTORS
ファイルをご覧になっていただきたい。
(https://www.sudo.ws/contributors.html)
バグ
sudoreplay
にバグを発見したと思ったら、https://bugzilla.sudo.ws/
にアクセスして、バグレポートを提出していただきたい。
サポート
ある程度の無料サポートが
sudo-users
メーリングリストを通して利用できる。
購読やアーカイブの検索には、次の
URL
を御覧になるとよい。
https://www.sudo.ws/mailman/listinfo/sudo-users
免責
sudoreplay
は「現状のまま」提供される。
明示的な、あるいは黙示的ないかなる保証も、
商品性や特定目的への適合性についての黙示的な保証を含め、
またそれのみに止まらず、これを否認する。詳細な全文については、
sudo
と一緒に配布されている
LICENSE ファイルや、 次の
Web
ページをご覧いただきたい。
https://www.sudo.ws/license.html