「Root で X アプリケーションを起動」の版間の差分
(同期) |
Kusanaginoturugi (トーク | 投稿記録) (校正(でき・出来)) |
||
(同じ利用者による、間の1版が非表示) | |||
40行目: | 40行目: | ||
* [[sudo]] ([[Sudo#設定|正しく設定]]する必要があります) |
* [[sudo]] ([[Sudo#設定|正しく設定]]する必要があります) |
||
$ sudo ''application'' |
$ sudo ''application'' |
||
− | |||
− | * {{Pkg|bashrun}}: |
||
− | $ bashrun --su ''application'' |
||
* {{AUR|sux}} (X のログイン情報を転送する [[su]] のラッパー) |
* {{AUR|sux}} (X のログイン情報を転送する [[su]] のラッパー) |
||
90行目: | 87行目: | ||
Wayland 以前では、特権による GUI アプリケーションの実行は [[Polkit]] ポリシーを作成して正しく実装するか、あるいはターミナルでコマンドの前に {{ic|sudo}} を付けて危なっかしく実行するようになっていましたが、(X)Wayland ではデフォルトでこのようなことはできなくなっています。クライアントの接続を許可されるのは X サーバーを起動したユーザーだけです ([https://bugzilla.redhat.com/show_bug.cgi?id=1266771 バグレポート] や [https://cgit.freedesktop.org/xorg/xserver/commit/?id=c4534a3] [https://cgit.freedesktop.org/xorg/xserver/commit/?id=4b4b908], [https://cgit.freedesktop.org/xorg/xserver/commit/?id=76636ac] を参照)。 |
Wayland 以前では、特権による GUI アプリケーションの実行は [[Polkit]] ポリシーを作成して正しく実装するか、あるいはターミナルでコマンドの前に {{ic|sudo}} を付けて危なっかしく実行するようになっていましたが、(X)Wayland ではデフォルトでこのようなことはできなくなっています。クライアントの接続を許可されるのは X サーバーを起動したユーザーだけです ([https://bugzilla.redhat.com/show_bug.cgi?id=1266771 バグレポート] や [https://cgit.freedesktop.org/xorg/xserver/commit/?id=c4534a3] [https://cgit.freedesktop.org/xorg/xserver/commit/?id=4b4b908], [https://cgit.freedesktop.org/xorg/xserver/commit/?id=76636ac] を参照)。 |
||
− | [[#root 実行の回避]]を見て、 |
+ | [[#root 実行の回避]]を見て、できる限りグラフィカルアプリケーションは root で実行しないようにしてください。 |
また、[[#xhost を使う]]ことで、あらゆるグラフィカルアプリケーションを root で実行することができます。 |
また、[[#xhost を使う]]ことで、あらゆるグラフィカルアプリケーションを root で実行することができます。 |
2024年7月10日 (水) 21:05時点における版
グラフィカルアプリケーションを root で実行するのはできるかぎり避けてください。#root 実行の回避を見てください。
目次
root 実行の回避
sudoedit
root でファイルを編集するときは sudoedit を使ってください。
GVFS
admin
バックエンド の URI を指定することで GVFS 経由で特権が必要なファイルやディレクトリにアクセスできます [2][3]:
$ nautilus admin:///root/
または:
$ gedit admin:///etc/fstab
Xorg
セキュリティ上の理由で、デフォルトでは root は root 以外のユーザーが起動した X サーバーに接続することができません。必要な場合 root から接続できるようにする方法がいくつか存在します。
こちらのフォーラムの投稿 にあるように、特権で X の GUI アプリを実行するときの適切かつ推奨される方法は Polkit ポリシーを作成することです。ただし、この方法は pkexec(1) に書かれているように古いプログラムでのみ使用するべきです。アプリケーションは特権操作を最小限のコードに委任して、権限が必要なくなったら自動的に権限を消す必要があります [4]。
安全な方法
以下の方法ではアプリケーションは昇格フレームワークにラッピングされ、アプリケーションの終了時に権限も落とされます:
$ kdesu application
$ sudo application
$ sux root application
他の方法
以下の方法でも root からユーザーの X サーバーに接続することができますが、セキュリティ上の危険性が存在し、特に SSH を動作させている場合は危険です。
Xhost
Xhost を使うことで一時的に root のアクセスを許可できます。
永続的に root のアクセスを許可
方法 1
以下の行を /etc/pam.d/su
と /etc/pam.d/su-l
に追加してください:
session optional pam_xauth.so
その後 su
や su -
を使って root ユーザーに切り替えてください。
方法 2
/etc/profile
に以下の行を追加してください:
export XAUTHORITY=/home/non-root-usersname/.Xauthority
上記の設定で root が root 以外のユーザーの X サーバーに永続的に接続できるようになります。
あるいは、接続するアプリを指定する場合 (例: kwrite):
export XAUTHORITY=/home/usersname/.Xauthority kwrite
Wayland
Wayland セッションで su, sudo, pkexec を使って root でグラフィカルアプリケーション (例: GParted や Gedit など) を実行しようとした場合、以下のようなエラーが表示されます:
$ sudo gedit No protocol specified Unable to init server: Could not connect: Connection refused (gedit:2349): Gtk-WARNING **: cannot open display: :0
Wayland 以前では、特権による GUI アプリケーションの実行は Polkit ポリシーを作成して正しく実装するか、あるいはターミナルでコマンドの前に sudo
を付けて危なっかしく実行するようになっていましたが、(X)Wayland ではデフォルトでこのようなことはできなくなっています。クライアントの接続を許可されるのは X サーバーを起動したユーザーだけです (バグレポート や [5] [6], [7] を参照)。
#root 実行の回避を見て、できる限りグラフィカルアプリケーションは root で実行しないようにしてください。
また、#xhost を使うことで、あらゆるグラフィカルアプリケーションを root で実行することができます。
xhost を使う
回避策としては xhost を使うことで root ユーザーに対して一時的にローカルユーザーの X セッションへのアクセスを許可できます。非特権ユーザーで以下のコマンドを実行してください [8]:
$ xhost si:localuser:root
アプリケーションを閉じた後に許可を取り消すには:
$ xhost -si:localuser:root