努力する

努力する

しかし、ログイン離れてrootユーザーとして、私は欲しい私のセレンプログラムをリモートで実行するルート表示(私のリモートディスプレイの代わりに)。はいいいえうまくいくことについて話していますssh -Xが、セレンを使用する別のnodejsアプリを作成するnodejsアプリがあります。これはすべてSSH接続なしで自動的に行われます。ただし、セレンは必要ないくつかのjpgファイルをレンダリングするために一種のディスプレイを使用する必要があります。

私は多くの研究をしてきましたが、まだこの概念に悩んでいます。私が使用した情報の主なソースは次のとおりです。

これが私の理解です:

  • XプログラムはXディスプレイに接続するために2つの情報が必要です。
    • $DISPLAY
      • 通常:0または:1
      • 実際に私のラップトップに行き、ルートのディスプレイを見ると(リモートSSHの代わりに)またはに$DISPLAY設定されています。:0:1
    • $XAUTHORITY
      • 使用するマジッククッキーは~/.Xauthority環境変数で定義されています$XAUTHORITY
      • 実際には、ラップトップにアクセスすると(リモートでSSH接続ではなく)(when)または(when)$XAUTHORITYに設定されます。/tmp/xauth-0-_0$DISPLAY=:0/tmp/xauth-0-_1$DISPLAY=:1

======================

努力する

私は次のことをすべて試しました:

  1. スクリプトの設定$DISPLAYと転送$XAUTHORITY

    • Nodejs Seleniumアプリケーションを生成するスクリプトがあります。 Seleniumアプリケーションを実行する前に、まずスクリプトから次の2つの変数をエクスポートします。

      if [ -e "/tmp/xauth-0-_0" ]
      then
        export DISPLAY=":0"
        export XAUTHORITY="/tmp/xauth-0-_0"
      elif [ -e "/tmp/xauth-0-_1" ]
      then
        export DISPLAY=":1"
        export XAUTHORITY="/tmp/xauth-0-_1"
      fi
      
      #Then run the nodejs selenium app
      node index.js
      
    • この方法を使用したときに発生するエラーは次のとおりです。Invalid MIT-MAGIC-COOKIE-1 key[10332:10332:0713/112221.602744:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: :0.0

  2. X11Forwarding yes設定がありますが、この設定は次にのみ適用されるようです。/etc/ssh/sshd_configssh -X
  3. Chromeを開こうとする他の試みは次のとおりです。

    [root@localhost test]# xauth list
    localhost:0  MIT-MAGIC-COOKIE-1  ....
    
    [root@localhost test]# export XAUTHORITY=/tmp/xauth-0-_0
    
    [root@localhost test]# export DISPLAY=localhost:0
    [root@localhost test]# google-chrome
    [10673:10673:0713/141603.418401:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: localhost:0
    
    [root@localhost test]# export DISPLAY=127.0.0.1:0
    [root@localhost test]# google-chrome
    [10859:10859:0713/141617.346302:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: 127.0.0.1:0
    

私はFedora 23(サーバーエディション)x86_64を使用しています。

答え1

SeleniumのXディスプレイのみが必要な場合Xvfb(「Virtual Framebuffer X Server」)を使用して、2番目のスタンドアロンXサーバーを起動することもできます。 X サーバはメモリブロックを不可視フレームバッファとして使用し、セレンが X サーバに接続されているかのように偽装することを可能にします。

man Xvfb特に参照してください。これはい部分。認証を有効にせずに実行できるので、誰でも接続できます。

これは、全く異なるウォーム缶である3D加速(OpenGL)を許可しないことに注意してください。

root通常、他のモニター、特にログインしているモニターを占有しようとする試みは、巨大なセキュリティリスク:このモニターに接続している人は誰でもキーストローク(およびパスワード)をキャプチャしてrootとしてコマンドを実行できます。そのため、通常これを行うことはできません。

答え2

私はこれが不可能であるという結論に達しました:(

これが機能するには、ある時点でどこかにユーザーsshが必要です。

ユーザーなしでルートの表示を制御することはできません。

関連情報