0

デーモンとして実行され、実行中の X セッションを監視するアプリケーションを作成しようとしています。現在、X セキュリティ モデルに関するドキュメントを探すのに苦労しています。具体的には、実行中の X ディスプレイにデーモン プロセスから接続しようとしています。XOpenDisplay(dispName)私のプロセスにはこのディスプレイに接続する権限がないため、呼び出し が機能しません。少し調べたところ、xauth で何かをする必要があるようです。

私のテスト環境では、X サーバーは次のように起動されます。

/usr/bin/X -br -nolisten tcp :0 vt7 -auth /var/run/xauth/A:0-QBEVDj

このファイルには、次のような 1 つのエントリが含まれています。

#ffff##:  MIT-MAGIC-COOKIE-1  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

~/.Xauthority同じ16進キーでエントリを追加することで、Xサーバーに接続できます。ただし、Xサーバーが使用している認証ファイルをプログラムで見つける必要があるため(その場所は、ディストリビューションごとに、おそらくブートごとに変わると思います)、クエリを実行してから、新しい認証ファイル。プロセスがデーモンとして実行されている場合、ホーム ディレクトリがない可能性があるため、新しいエントリをどこに書き込むかを知るにはどうすればよいでしょうか?

理想的には、私が探しているのは、xauth Cookie を に含める必要性を回避する方法~/.Xauthority、または Cookie が何であるかを知る方法です。これはありそうもないことだと思います。簡単にバイパスできるセキュリティ モデルに何の意味があるのでしょうか。しかし、このリストの誰かがいくつかの良いアイデアを持っていることを願っています. プロセスに特権があり、ローカル マシン上の任意のディスプレイへのアクセスを自動的に許可する必要があることを指定する方法はありますか?

4

2 に答える 2

1

Xauth は X の唯一のセキュリティメカニズムではありません

IPベースの認証のみを実行する別のもの(安全性が低い)もあります(xhostを参照)。

したがって、X サーバーをこの安全性の低いモードに切り替えると、定義された一連の IP からの接続はすべて信頼されます。

この方法では、Xauthority を扱う必要はまったくありません。

于 2009-08-19T13:25:02.883 に答える
1

XAUTHORITYファイルの場所を指定する環境変数を指定する場合、ホーム ディレクトリを使用する必要はありません.Xauthorityxauthマニュアルページを読んでください。

しかし、一般的に、あなたが言及した理由により、認証ファイルを見つけるのは困難です。また、この「認証トークンのフィッシング」アプローチは、ローカル ディスプレイでのみ機能します。

root (または他のユーザー) が X サーバーに勝手に接続できるようにすることに関しては、おそらくソース コードにパッチを適用するgetpeereid必要があり、接続しているユーザーの uid/ を取得するようなものを使用する必要があります。 gid (これは Unix ドメイン ソケットでのみ動作しますが、ローカル接続に使用されるタイプであると推測されます)。

于 2009-08-19T12:14:28.140 に答える