別のユーザーとして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
意味がありません。su
su
問題は、他のユーザーがそれを使用できないことです$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
単にシェルを削除して再起動できます。
もう一度ログインすると、すべてが正常です。