他のユーザーでxtermを開くことができません:Xtエラー:ディスプレイを開くことができません::0

他のユーザーでxtermを開くことができません:Xtエラー:ディスプレイを開くことができません::0

別のユーザーとしてxtermを開こうとしています。

$ su - michel 
$ xterm
No protocol specified
xterm: Xt error: Can't open display: :0
$ exit
$ sudo su - michel 
$ xterm
No protocol specified
xterm: Xt error: Can't open display: :0

答え1

次の場合su、廃棄されますDISPLAY環境変数(ターミナルにウィンドウを表示する場所を知らせるために使用されます)を設定するとDISPLAY、他の問題に直面するでしょう(本質的に特権)は何度も要求されました。X DISPLAY変数が正しい場合、「ディスプレイを開くことができません::0」(これらの1つが他の関連する質問の重複として誤ってマークされています。)

答え2

ヒール自体を使用できる場合は、ヒールを使用してもsudo意味がありません。susu

問題は、他のユーザーがそれを使用できないことです$DISPLAY。任意のユーザーがモニターに接続したくありません。他のユーザーが自分のモニターに接続できるようにするには、そのユーザーにファイルへの$XAUTHORITYアクセス権も付与する必要があります。通常、$XAUTHORITYファイルにはマルチモニタに関する情報が含まれていないため、ターゲットユーザーがファイルの内容にアクセスできるように設定またはファイルをコピーするだけです。

$XAUTHORITY情報を抽出してターゲットユーザー用のファイルにマージすることもできます。 @mosvyのコメントは次のように提案されていますsshが、suうまくいきます。

xauth extract - $DISPLAY | su sebastien -c 'xauth merge - <&7' 7<&0 </dev/tty

答え3

最後にこのコマンドが見つかりましたが、今は機能します。

$ xhost local:$USER
non-network local connections being added to access control list
$ sudo su - michel -c "xterm -e 'sleep 1'"
$

答え4

私は同様のすべての問題に対してほぼすべての解決策を試しました。それらのどれも動作しません。しかし、解決策を見つけました。ここ(中国語)解決しました。

~/.Xauthority単にシェルを削除して再起動できます。

もう一度ログインすると、すべてが正常です。

関連情報