Kデスクトップ環境

5.2. su へのインターフェース

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

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

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

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