
私は PureOS GNU/Linux ディストリビューション (Debian/Ubuntu ベース) を使用しています。ディスプレイ マネージャーとして XDM をインストールしました。X セッションに root としてログインした後、バグが発生しました。非 root X セッションで root として GUI コマンドを実行できなくなりました。MIT-MAGIC-COOKIE-1 が間違っているというエラー メッセージが表示されました。これは .Xauthority ファイルまたは $XAUTHORITY 変数に関連しているようです。
インターネットのいくつかのフォーラムで、この問題に対するいくつかの緩和策を見ました。xhost
さまざまな形式の引数を使用して非ルートとして実行する。ただし、これによりシステムの認証が無効になり、セキュリティの脆弱性が生じます。さらに、X セッションごとに実行する必要があります。実行するsudo -sE
。ただし、これにより非ルート環境が保持されます。実行するsu-to-root -X -c [command] %U
。うまくいきました。実行するssh -YXC [user]@[machine-name] [command]
。うまくいきました。しかし、これらは元の問題を解決しない回避策です。
DISPLAY=:0 /usr/bin/xhost +local:
動作しませんでした。 どちらもsu - root -c [command]
。 どちらもtouch ~/.Xauthority; xauth generate $DISPLAY . trusted; xauth add ${HOST}$DISPLAY . $(xxd -l 16 -p /dev/urandom); xauth merge .Xauthority
、エラーが発生しましたunable to rename authority file /var/lib/xdm/authdir/authfiles/, use /var/lib/xdm/authdir/authfiles/-n
。
少し調べた後 (x11vnc パッケージが役立ちました)、正しいマジック クッキーを含むファイルは であることがわかりました/var/lib/xdm/authdir/authfiles/A\:0-[whatever]
。奇妙なことに、それを新しい .Xauthority ファイルにコピーしても、最初は機能しませんでしたが、2 回目では機能しました。そこで を作成しexport XAUTHORITY="/var/lib/xdm/authdir/authfiles/A:0-[whatever]"
、これで問題は解決したようです。しかし、 を作成すると、機能しませんでした。しかし、最も奇妙なのは に完全なファイル パスが表示されるexport XAUTHORITY="/var/lib/xdm/authdir/authfiles/*"
ことです。echo $XAUTHORITY
また、非ルート ユーザーから .Xauthority ファイルと $XAUTHORITY 変数の両方を消去し、デバイスを再起動して、このアカウントに副作用があるかどうかを確認しました。奇妙なことに、再起動前は、非ルート ユーザーは GUI コマンドを使わなくても実行できます。再起動後、非ルート ユーザーの $XAUTHORITY 変数は を指していました/tmp/.Xauth[whatever]
。
また、コンピューターを再起動するたびに、非ルート ユーザーが A:0-[何でも] ファイルと一致する新しいマジック クッキーを受け取ることがわかりました (16 進ダンプにより、一致する 16 進文字列が含まれていることが示されました)。
これによって、次のような一連の疑問が生じます。なぜルート ユーザーはシステムからランダムなマジック クッキーを受信しなくなったのでしょうか。これらのマジック クッキーを生成して配信するプロセスは何でしょうか。ルートが適切なクッキーを生成するためのコマンドはあるのでしょうか。