Sudoで動作するためにx11を必要とするプログラム(gedit、nautilusなど)を取得できませんでした。 gksudoを使用すると、サイレントに失敗しますが、ターミナルで次のエラーが発生しました。
Sudo nautilus
** (nautilus:4160): WARNING **: Command line `dbus-launch --autolaunch=cced40b4aa1d252bc89d3a6a0000000a --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n
Could not parse arguments: Cannot open display:
友人の助けを借りて、回避策を見つけることができました。非特権ユーザーとしてxhost +
を実行し、export DISPLAY=:0
の後にrootとしてSudo su
を実行すると、最終的に機能します(xhostステップなし)未定義のプロトコルエラーが発生します)。しかし、そもそもなぜこの問題が発生するのかわかりません。これは面倒な回避策です。ルートの.bashrcに「exportDISPLAY =:0」を追加することを考えましたが、これは私が訴えている場合にのみ呼び出されます。須藤だけなら。
この問題を適切に解決する方法についてのアイデアはありますか?
一般に、OS(Linuxを使用していると思います)とディストリビューションを含めることを忘れないでください。
デフォルトでは、Xサーバーは他のユーザー(この場合はrootなど)が既存のXインスタンスに接続することを許可しません。これはxhost +
コマンドでオーバーライドできます。その後、rootは既存のXセッションに接続できます。
DISPLAYのエクスポートは必要ないはずですが、確かにそうですか? xhost +
を実行してから、Sudo gedit
などを実行するだけで問題ありません。その場合(そしてわずかなセキュリティリスクを気にしない)、xhost +
を~/.bashrc
に追加できます。
恐ろしい回避策として、$DISPLAY
変数を指定してSudo
を実行できます。
Sudo DISPLAY=:0 gedit
自動化するには、次の行を~/.bashrc
に追加します。
xhost +
alias Sudo='Sudo DISPLAY=:0'
これは恐ろしいハックですが、どうやってそれが必要な状況に陥ったのか知りたいです:)。上記のコメントで述べたように、これはUbuntu(および他のほとんどの最新のデスクトップLinuxシステム)ですぐに機能するはずです。約10年前にRedHatを使用していたとき、最後にxhostとDISPLAYをいじる必要がありました...
代わりにgksu
を使用しますが、安全なxauth転送を処理します
Sudo
を必要とするアプリケーションを実行すると、次のエラーが発生しました:
Sudo gadmin-samba debug1:client_input_channel_open:ctype x11 rchan 3 win 65536 max 16384 debug1:client_request_x11:127.0.0.137270からのリクエスト debug1:チャネル1 :新しい[x11] debug1:認証が間違っているためx11 X11接続が拒否されたことを確認します。 debug1:チャネル1:空き:x11、nchannels 2 (gadmin-samba:2166):Gtk-警告**:ディスプレイを開くことができません:hostname:10.0
アプリケーションをrootとして、またはSudo
経由で実行するには、次の手順に従う必要がありました ここ
経由でログイン
ssh username@machine -X
ログイン時よりもタイプ
xauth list $DISPLAY
出力は次のようになります
hostname:10 MIT-MAGIC-COOKIE-1 47c3222525f807fc9e8b5fb56e7fee2a
行全体をコピーします。
するより
Sudo xauth add hostname:10 MIT-MAGIC-COOKIE-1 47c3222525f807fc9e8b5fb56e7fee2a
またはrootとしてログインしますsu root
またはSudo -i
次に入力します
xauth add hostname:10 MIT-MAGIC-COOKIE-1 47c3222525f807fc9e8b5fb56e7fee2a
前提条件
xauth
サーバー上のssh構成ファイルには、次の行が含まれている必要があります。
X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost no
クライアント側のSSHは大文字で実行する必要があります-X
およびトラブルシューティング用-v
ssh -X -v username@machine
タイプecho $DISPLAY
x11転送が機能しているかどうかを確認します。