web-dev-qa-db-ja.com

sudo + x11アプリケーションが正しく機能しない

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」を追加することを考えましたが、これは私が訴えている場合にのみ呼び出されます。須藤だけなら。

この問題を適切に解決する方法についてのアイデアはありますか?

3
manuhalo

一般に、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をいじる必要がありました...

2
terdon

代わりにgksuを使用しますが、安全なxauth転送を処理します

0
Matija Nalis

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
    

前提条件

  • ssh
  • xauth

  • サーバー上のssh構成ファイルには、次の行が含まれている必要があります。

X11Forwarding yes 
 X11DisplayOffset 10 
 X11UseLocalhost no
  • クライアント側のSSHは大文字で実行する必要があります-Xおよびトラブルシューティング用-v

    ssh -X -v username@machine
    

タイプecho $DISPLAYx11転送が機能しているかどうかを確認します。

0
AlexOnLinux