Waylandでrootでグラフィカルアプリケーションを実行する方法

Waylandでrootでグラフィカルアプリケーションを実行する方法

新しいWaylandディスプレイサーバーでは、root権限を必要とする複数のアプリケーションを実行できません。実際、私には答えがあります(この問題を解決する1つの方法)。より良い解決策や批判を歓迎します。

この質問に対する他の多くの答えは、xhostにルートを追加することを示唆しています。これは問題を解決しますが、Waylandセキュリティモデルを少し壊します。シナプティックでも gparted でも、プログラムの実行中に xhost のみにルートを追加することをお勧めします。

グープ:

gufw.desktopファイル(Debian 10の場合は/usr/share/applications/gufw.desktop)を編集し、次の行を変更します。

Exec=gufw

到着

Exec=sh -c "xhost +si:localuser:root && gufw && xhost -si:localuser:root"

シナプス:

次の投稿からインスピレーションを得ました。https://discourse.ubuntu.com/t/adding-applications-to-start-up/9288 /usr/bin/synaptic-pkexecを編集してzenity警告メッセージ(Debian 10と仮定)をコメントアウトし、次の行を変更します。

exec "/usr/sbin/synaptic" "$@"

到着

xhost +si:localuser:root
pkexec "/usr/sbin/synaptic" "$@"
xhost -si:localuser:root

他のほとんどのプログラムは、gufwのように修正が可能だと思います。これは、すべてをルート(GUIを含む)として実行する古いプログラムの基本的な問題を解決するわけではありませんが、少なくとも以前のように実行されます。

ベストアンサー1

Waylandでは、他のユーザーが次の場所にあるWaylandソケットファイルにアクセスできないため、アプリケーションを起動できません。$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY。ただし、ルートはすべてのファイル権限を無視するため、WAYLAND_DISPLAYにフルパスを指定すると、ソケットファイルに完全にアクセスできます。 Waylandクライアントライブラリの実装の詳細により、XDG_RUNTIME_DIRも何かで定義する必要があります(実際の値は実際には使用されていません)。

したがって、実際にSynapticを純粋なWaylandアプリケーションとして実行することが可能です。

sudo /bin/env WAYLAND_DISPLAY="$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY"  XDG_RUNTIME_DIR=/user/run/0  /usr/sbin/synaptic

これまでは、Swayを使ってこのトリックだけをテストしました。

おすすめ記事