# KDE su ハンドブック

Geert
Jansen

    g.t.jansen@stud.tue.nl

??/??/??
Version ??.??.??

これは、公式なKDE suドキュメントです。

KDE
su
password
root

## 導入

KDE suにようこそ！ KDE su は、UNIX"su"コマンドの、Kデスクトップ環境のため のグラフィカルフロントエンドです。これは、他のユーザーのパスワードを適応することに よって、そのユーザーとして、プログラムを実行する事が出来ます。KDE suは権利のないプ ログラムであり、システムのsuを使っています。

KDE su は、パスワードを保持する機能が一つ追加されています。この機能を使えば、 コマンド実行の度にパスワードを入力する必要は無くなります。この機能と、セキュリティ ー分析についての詳細は、を御覧下さい。

このプログラムは、コマンドライン、もしくは、.desktopファイルから実行出来ます。 それは、GUI ダイアログを使って root パスワードを尋ねますが、私は、純粋な GUI プロ グラムに代る、コマンドラインと GUI のより良い接続法であると考えています。

## インストール

### ダウンロード

KDE su は現在、KDE CVS の kdebase に入っています。全ての (2.x) KDE ディス トリビューションに含まれているはずです。あなたもまた、私の `ftp://skynet.stack.nl/pub/users/geertj/` にあるホームページからKDE 1.x バージョンを入手することが出来ます。

### コンパイル

KDE su は kdebase に入っていて、あなたは既に持っています、もしくは、 kdebase をインストールする時に入手します。

KDE 1.xバージョンをコンパイルするには、次のようにして下さい。

    &dollar; ./configure
    &dollar; make
    &dollar; make install

最後のステップはrootで実行する必要があります。インストール行程は システムワイドなKDEディレクトリに書き込める必要があるためです。

## KDE su の使い方

KDE su の使い方は簡単です。文法は次のようになっています。

    &dollar; kdesu &lsqb;USER&rsqb; &lsqb;-ntqd&rsqb; &lsqb;-f FILE&rsqb; -c
     COMMAND &lsqb;ARG1 &lsqb;ARG2 &lsqb;...&rsqb;&rsqb;&rsqb;
    &dollar; kdesu -v|-h|-s

コマンドラインオプションの説明は次のようになっています。

-c PROGRAM

  これは、root として実行するプログラムを指定します。それは、一つの引数として 記述しなければなりません。例として、新規のファイルマネージャーを実行するのであれば、 プロンプトに次のように入力します。

      &dollar; kdesu -c "kfm -sw"

-f FILE

  このオプションは .desktop ファイルにおいて、KDE su を効率的に使う事が出来ます。これは、FILE によって指定されたファイルをテストするということを KDE su に伝えます。もし、このファイルが現在のユーザーによって書き換え可能であれば、 KDE su は現在のユーザーとしてそのコマンドを実行します。もし、書き込み可能でなければ、 ユーザー USER(デフォルトは root )として、そのコマンドを実行します。

  FILE は次のように評価されます。もし、FILE が "/" から始まるのであれば、それは 絶対ファイル名として受け取られます。そうでなければ、グローバル KDE コンフィギュレーシ ョンファイル名として扱われます。例として、K ディスプレイマネージャーkdmを設定するに あたって、次のようにすることが出来ます。

      &dollar; kdesu -c kdmconfig -f kdmrc

-t

  ターミナル出力を有効にします。これはパスワード保持を無効にします。これは、広く、 デバッグ用途に使用します。もし、コンソールモードのアプリケーションを使いたい時には、 代わりに標準の "su" を使います。

-n

  パスワードを保持しません。これは、パスワードダイアログの "keep password" チェ ックボックスを無効にします。

-q

  無言モードです。

-d

  デバッグ情報を表示します。

-v

  バージョン情報を表示して終了します。

-h

  いくつかのヘルプを表示します。

-s

  kdesu デーモンを停止します。を御覧下さい。

## 設定

KDE su は kcmkdesu と呼ばれるコントロールモジュールと一緒に配布されます。 K メニューのSettings->Applications->KDE su にあります。以下の設定を変える事が 出来ます。

- エコーモードです。これは、入力されるどのような文字列をスクリーンにエコーさせるか の設定です。可能な選択肢は、一文字ごとにスター、三つのスター、もしくは、全くエコーしな い、です。デフォルトは、一文字ごとにスター、となっています。

- パスワードを保持します。"keep password" チェックボックスにチェックすることで、 入力したパスワードを KDE su に覚えさせることが出来ます。 チェックすると、タイムアウト 値を下方のテキストフィールドに入力出来るようになります。これは、パスワードが記憶される 時間で、単位は分になっています。デフォルトでは、パスワード保持しない、になっています。

## 内部

### X 認証

実行したプログラムは root ユーザー ID にて実行され、一般的にあなたの X ディスプ レイにアクセスする権限はありません。KDE su はあなたのディスプレイのための認証クッキー を一時的な`.Xauthority`ファイルに加えることによって権限を得ています。コマンドが終了すると、このファイルは取り除かれます。

もし、あなたが Xクッキーを使わないのであれば、自己責任です。KDE su は、これを検 出し、クッキーを加えませんが、root があなたのディスプレイにアクセス出来るようにしてお かなければなりません。

### su へのインターフェース

KDE su は権限を取得するのに、システムの "su" を使用します。この項では、kdesu は どのようにこれをするのかの詳細を説明します。

いくつかの su の実装(例えば、Redhatの su)では、標準入力からのパスワード読み込みを 使わないので、KDE su は、 pty/tty のペアを作成し、tty に接続されたそれ自身の 標準ファイルディスクリプターにて"su" を実行します。

ユーザーが選択したコマンドを実行するために、kde su は、対話シェルではなく、"-c" の引数を伴った su を使用します。この引数は、私の知る全てのシェルで認識され、汎用的に動 作するはずです。su は、この "-c" 引数を、対象とするユーザーのシェルに渡し、そして、シ ェルはプログラムを実行します。コマンド例は、"su root -c the&lowbar;program" となりま す。

su を使って直接ユーザーコマンドを実行する代わりに、kdesu は `kdesu&lowbar;stub`と呼ばれる小さな スタブプログラム を実行します。この スタブ(対象のユーザーとして実行されるている)は 、いくつかの情報を pty/tty チャンネル(スタブの標準入出力)越しに kdesu に要求し、それから、ユーザーの プログラムを実行します。渡される情報は、Xディスプレイ、(可能であれば)X 認証クッキー、 環境変数PATH、そして、実行するコマンド、となっています。スタブプログラムが使われる理由 は、X クッキーはプライベートな情報であるためで、コマンドラインに渡すことが出来ないので す。

### パスワードのチェック

KDE su は入力されたパスワードをチェックし、正しくなければエラーメッセージを返し ます。パスワードチェックは、テストプログラム`/bin/true` を実行することによって行われます。これが成功すると、パスワードは正しいと、想定されます。

### パスワード保持

便利になるように、KDE su は "keep password"機能を実装しています。もし、あなた がセキュリティーに興味があれば、この項を読むべきです。

KDE su にパスワードを保持させる事は、あなたのシステムに(小さな)セキュリティー ホールを作ることになります。明らかに、KDE su は、あなたのユーザー ID を除いて誰にも、 パスワードを使う事を許してはいませんが、もし、注意せずに使うのならば、これは、rootの セキュリティーレベルを一般ユーザー(あなた)のセキュリティーレベルへと下げてしまう事に なります。あなたのアカウントに討ち入ったクラッカーは、root 権限を取得することになりま す。KDE su はこれを防ごうと努めます。これを使うセキュリティー策は、少なくとも私の考え では、合理的に安全であり、ここで説明します。

KDE su は、kdesud というデーモンを使います。デーモンは/tmpにあるUNIXソケットに コマンドを教えます。ソケットのモードは 0600 なので、だた、あなたのユーザー IDのみがそ れに接続することが出来ます。パスワード保持が有効になっていると、KDE su はこのデーモン を通してコマンドを実行します。それは、上記にあるように、コマンドとroot のパスワードを そのソケットに書き込み、そして、デーモンは "su" を使ってそのコマンドを実行します。この あと、コマンドと、パスワードは捨てられません。代わって、それらは指定された時間だけ保持 されます。これは、コントロールモジュールの中のタイムアウト値です。もし、この期間中に、 同じコマンドの他のリクエストが来ても、クライアントはパスワードを入力する必要はありませ ん。あなたのアカウントを打破したクラッカーがデーモンからパスワードを盗む(例えば、デバ ッガを使って)のを防ぐために、デーモンはset-group-id nogroup でインストールされていま す。これは、全ての一般ユーザー(あなたを含めて)が、kdesudプロセスからパスワードを取得す ることを防ぐはずです。また、デーモンは環境変数DISPLAYに、デーモンが起動された時のその 値をセットします。クラッカーが唯一することの出来るのは、アプリケーションをあなたのディ スプレイ上で実行する、ということだけです。

この解決策の弱点は、恐らく、あなたが実行するプログラムはセキュリティーを考慮にい れて書かれていない、いう点です。(例えば、setuid のrootのプログラムなど。) これは、それ らのプログラムはバッファーオーバーラン、もしくは、その他の問題を持っている可能性がある ということを意味していて、そして、クラッカーはそれらの問題を見付け出すことが出来ます。

パスワード保持機能を使用するかどうかは、セキキュリティーと便利さの兼ね合いに依り ます。その機能を使いたいかどうかを良く考えて、自分で決めることを、私は勧めます。

## 作者

KDE su は Geert Jansen によって書かれました。それは、Pietro Iglio のKDE su 、 バージョン 0.3 に基づいたsomewhatです。Pietro と 私は、将来私がこのプログラムの保守を していくことに合意しています。

作者とは<g.t.jansen@stud.tue.nl>へのメールで連絡を取ることが出来ます。 バグがあれば、それを私がf修正出来るように、連絡して下さい。もし提案があれば、気楽に 連絡してください。