"connect /tmp/.X11-unix/X0: 対応するファイルまたはディレクトリなし"を引き起こす /tmp の複数インスタンスを修正

"connect /tmp/.X11-unix/X0: 対応するファイルまたはディレクトリなし"を引き起こす /tmp の複数インスタンスを修正

/tmpディレクトリを含むマルチシートデスクトップシステムマルチインスタンス化/tmp/.X11-unix/ディレクトリとインスタンスはまだユーザーの下ではなくXnルートの下に作成されます。/tmp

ssh -Y既定で使用するか、X 転送を通じて X11 アプリケーションを実行しようとすると、次のエラーが発生します。connect /tmp/.X11-unix/X0: No such file or directory

おそらく、これはインスタンス化されていないルートまたはシステムユーザーアカウントによってセッションが作成され、レガシーの場所/tmpにあるためです。

この問題を解決する方法はありますか?それとも互換性がないのですか?

システムは現在lightdmログインマネージャとして使用されているため、Xorgセッションはrootとして実行されます。

答え1

解決策(完全な解決策ではない)は、それをsshリレーを生成するスクリプトでラップすることです。

~/bin/ssh:

# Do we have a display?
# Does our display relay exist?
if [ ! -z $DISPLAY ] && \
   [ ! -e "/tmp/.X11-unix/X${DISPLAY#*:}*" ]
then
    # Create X11-unix dir if need be.
    mkdir -p /tmp/.X11-unix

    # Create reusable display relay
    socat \
     UNIX-LISTEN:/tmp/.X11-unix/X${DISPLAY#*:},fork,reuseaddr \
     ABSTRACT-CONNECT:/tmp/.X11-unix/X${DISPLAY#*:} \
     &>/dev/null &
fi

# Do the useful thing...
/usr/bin/ssh $@

関連情報