Linux Kernel 2.6 Documentation:
/usr/src/linux/Documentation/SAK.txt
SAK.txt
Linux 2.4.2 セキュア・アテンション・キー (Secure Attention Key; SAK) 操作
[プレインテキスト版]
- 原著作者: Andrew Morton <andrewm@uow.edu.au>
- 翻訳者: 川崎 貴彦 <takahiko(a)hakubi.co.jp>
- バージョン: 2.6.4
- 翻訳日時: 2004/03/31
Linux 2.4.2 セキュア・アテンション・キー (Secure Attention Key; SAK) 操作
2001 年 3 月 18 日 Andrew Morton <andrewm@uow.edu.au>
オペレーティングシステムのセキュア・アテンション・キーは、トロイの木馬型
パスワード捕捉プログラムに対する防護として提供されるセキュリティ・ツール
です。ログイン・アプリケーションを装う全てのプログラムを無効にする強力な
方法です。ユーザには、システムにログインする前にキー・シーケンスを入力
するように伝えておく必要があります。
PC キーボードからの場合、Linux には、SAK を提供する二つの似たような、しかし
異なる方法があります。一つは ALT-SYSRQ-K シーケンスです。このシーケンスは
使うべきではありません。これは、SYSRQ サポート付きでカーネルがコンパイル
されている場合にのみ利用できます。
SAK を生成する適切な方法は、`loadkeys' を使用してキー・シーケンスを定義
することです。これは、SYSRQ サポートがカーネルに組み込まれているか否かに
関係なく機能します。
SAK は、キーボードが RAW モードのとき正しく動作します。これは、ひとたび
定義されると、SAK が動作中の X サーバを kill しにいくことを意味します。
システムのランレベルが 5 の場合、X サーバは再起動します。これは、あなたが
望む動作でしょう。
どのようなキー・シーケンスを使うべきでしょうか? えー、CTRL-ALT-DEL は
マシンをリブートするのに使われています。CTRL-ALT-BACKSPACE は X サーバに
対する魔法です。CTRL-ALT-PAUSE を使うことにしましょう。
rc.sysinit (もしくは rc.local) ファイルに、コマンドを追加してください。
echo "control alt keycode 101 = SAK" | /bin/loadkeys
これだけです! SAK キーを再プログラムできるのは、スーパーユーザだけです。
メモ
====
1: Linux SAK は、C2 レベルセキュリティを実装するシステムに要求される
"true SAK" であるとは言われません。理由は分かりません。
2: PC キーボードでは、SAK は /dev/console をオープンしている全てのアプリ
ケーションを kill します。
残念ながら、これには、実際には kill されてほしくないアプリケーションが
多く含まれてしまいます。なぜかというと、これらは、誤って /dev/console
をオープンしたまま保持しているからです。これについては、あなたの Linux
ディストリビュータに文句を言いましょう!
次のコマンドで、SAK により kill されることになるプロセスを調べることが
できます。
# ls -l /proc/[0-9]*/fd/* | grep console
l-wx------ 1 root root 64 Mar 18 00:46 /proc/579/fd/0 -> /dev/console
次に、
# ps aux|grep 579
root 579 0.0 0.1 1088 436 ? S 00:43 0:00 gpm -t ps/2
これにより、`gpm' は SAK により kill されます。これは gpm のバグです。
標準入力を閉じておくべきなのです。gpm を起動する初期化スクリプトを
見つけ、次のように変更すれば、この問題を回避できます。
変更前:
daemon gpm
変更後:
daemon gpm < /dev/null
Vixie cron もこの問題を抱えているようです。同じように対処する必要が
あります。
また、ある有名な Linux ディストリビューションの rc.sysinit と rc
スクリプトには、次の三行が含まれています。
exec 3<&0
exec 4>&1
exec 5>&2
これらのコマンドにより、初期化スクリプトから起動される全てのデーモンが、
/dev/console に接続されたファイル記述子 3, 4, 5 を持つことになります。
このため、SAK はそれらを全て kill してしまいます。回避策は、単にこれら
の行を削除することですが、これにより、システム管理アプリケーションが
誤動作してしまうかもしれません。問題がないか全てテストしてください。
------------------------------------------------------------
翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >
翻訳日: 2004/03/31
翻訳者: 川崎 貴彦 <takahiko(a)hakubi.co.jp>
Linux カーネル 2.6 付属文書一覧へ戻る