コマンドラインでgpartedを開くことができないのはなぜですか?

コマンドラインでgpartedを開くことができないのはなぜですか?

コマンドラインからgpartedを起動できないようです。私はTrisquel 8(Ubuntu 16.04ベース)とLXDEを使用しています。開こうとすると、次のエラーが発生し、何も起こりません。

$ sudo gparted

(gpartedbin:7820): Gtk-WARNING **: cannot open display: 

しかし、グラフィカルアプリケーションメニューでは正しく開いているようです。

オンラインで検索した結果、次の提案がありました。

xhost +localhost

しかし、これは役に立ちませんでした。明らかに、Waylandでrootとしてコマンドラインでgtkアプリケーションを開くのに問題があるようです。しかし、X11を使用しています。これはローカルラップトップでのみ可能です。 SSHやリモートシステムは関係ありません。

過去には常にコマンドラインでgpartedを開くことができたので、これは奇妙に見えます。また、gpartedを再インストールしてみましたが、役に立たないようです。

修正する:

meuhがコメントで示したように、DISPLAY=:0/ etc / environmentファイルに追加してsudoを使用するときに渡す必要があります。しかし、まだエラーが発生しますが、今は変更されています。

$ sudo gparted
No protocol specified

(gpartedbin:5549): Gtk-WARNING **: cannot open display: :0

現在、DISPLAY変数が渡されているようですが、「プロトコルなし」メッセージが何を意味するのかわかりません。

答え1

Xにアクセスするには環境変数が必要で、DISPLAY設定XAUTHORITYによってはsudoがそれらを削除できます。環境変数を調べて確認できますsudo env

ご使用の環境を保護するために使用できますsudo -E。これにはHOMEユーザーのホームページのトラップ設定があり、プロファイルが間違ったファイル権限を取得する可能性があります。ただし、これを防ぐためににsudo -H設定してください。HOME/root

gpartedで結合します。

sudo -EH gparted

必須変数は、以下でのみ設定できます。

sudo env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gparted

エラーメッセージ:

cannot open display:DISPLAY空または存在しないことを示します。

no protocol specified有効であるDISPLAYXAUTHORITY認証クッキーが設定されていないか、またはクッキーが無効であることを示します。または、xhost +SI:localuser:rootログアウトするまでXへのルート一時アクセスを許可します。


Waylandを使用してアクセスするときもWAYLAND_DISPLAY同様ですXDG_RUNTIME_DIR。 Waylandルートアクセスの問題は、sudo -EH次の方法で解決することもできます。詳細と罠については、以下をXDG_RUNTIME_DIRご覧ください。Waylandはグラフィックスードをサポートしていますか?

答え2

この問題を解決するにはkdesudo、、、gsudoおよび他のいくつかの方法があります。sudo

(セキュリティレビュー/テストなし)一緒にハッキングした内容です。

#/bin/bash

inner() {
    su  - "$user" -c "xauth list" |
        grep "$(echo "$display" |
                cut -d ':' -f 2 |
                cut -d '.' -f 1 |
                sed -e s/^/:/ ) " |
        xargs -n 3 xauth add &&
        "$@"
}

if [ "$1" = "---innermode" ]
then
    shift
    user="$1"
    display="$2"
    shift 2
    inner "$@"
else
    self="$0"
    sudo "${self}" ---innermode "$USER" "$DISPLAY" "$@"
fi

関連情報