質問: suユーザーの「プロトコルが指定されていません」を解決する方法 システムでグラフィカルソフトウェアを実行するために、代替ユーザー(非管理者)を使用しようとしています。この代替ユーザーには名前が付けられ、同じ名前のリモートシステムユーザーと一致するuidとgidが与えられています。 uidは500なので、ユーザーは「非ログイン」ユーザーになると思います。私のメインアカウントにログインしているubuntuから始めて、ターミナルを開き、代替ユーザーに対してsuを開きます。次に、コマンドを実行してアプリケーションを起動し、「プロトコルが指定されていません」を受け取ります。これは、uidが1000未満か、suが原因か、またはユーザーの非管理者が原因ですか?このユーザーにguiでアプリケーションを実行させるにはどうすればよいですか?
回答: 力ずくでxとの接続を確立したいとします。サーバー(xが実行されている場所)で既にコマンドを実行していると想定します。そうでない場合は、最初にコマンドを実行してから、クライアントから 'ssh -x user @ server)を使用します;)。xauthコマンドを実行する方法はいくつかあります。たとえば、 'sudo'を使用している場合でも、環境変数が失われたり変更されたりする可能性があります。次の環境変数を保持する必要があります:displayおよびxauthority。これが当てはまるかどうかをテストするには、コマンドを実行するのと同じ方法で「echo $ xauthority」を実行できますが、それらのコマンドを実行する前に環境変数を展開していないことを確認してください。たとえば、sudo bash -c 'echo "$ xauthority"'を試して、sudoの実行後に実際にxauthorityが何であるかを確認します(表示されない場合は、sudoersファイルに何かを追加する必要があります。他の場所を参照してください)。最終的に、サーバー上でアクセスを取得するユーザーとして次のコマンドを実行します。xauth infoこれにより、使用される「権限ファイル」が表示されます(デフォルトでは、/ root/.xauthority、rootの場合、または/home/theuser/.xauthorityなど)。正しい.xauthorityファイルが表示されている場合は、xauthority環境変数を実際に心配する必要はありません(実際には、そのファイルの非標準の場所を操作したい場合を除いて、いつそうならないかわかりません。 )。そのファイルを削除します(存在する場合でも)。rm /root/.xauthority/root/.xauthorityを、ケースに適したxauthorityファイルに置き換えます。それを再作成しますが、空です(これは多くのコマンドで必要です):touch /root/.xauthorityこの時点で、以前に無効なmit-magic-cookie-1を取得した場合でも、プロトコルが指定されていませんエラーが表示されます。 xサーバーが現時点で使用している認証ファイルを見つけます。ps aux | grep xorgこれは次のように表示されます。root 1153 0.0 1.0 149560 44464 tty7 ss+ dec02 0:00 /usr/lib/xorg/xorg -nolisten tcp -auth /var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711} -background none -noreset -displayfd 17 vt7-authの後のファイル名は、次のコマンドで必要なものです。これをrootとして実行します。sudo xauth -f '/var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711}' listこれは、32桁の16進数キーを示しています。たとえば、出力は次のようになります。hostname/unix:0 mit-magic-cookie-1 c0eaf749aa252101a0f57d5087089db7それを使用して.xauthorityファイルを生成します(再度ログインする必要があるユーザーとして):xauth add $display mit-magic-cookie-1 c0eaf749aa252101a0f57d5087089db7「c0eaf749aa252101a0f57d5087089db7」を、listコマンドによって返されたものに置き換えます。これで、.xauthorityのサイズは51バイトになり、xサーバーに接続できます(もう一度)。