「Root で X アプリケーションを起動」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎安全な方法: 英語版に合わせて項目を削除)
(fix en page link.)
 
(同じ利用者による、間の5版が非表示)
1行目: 1行目:
 
[[Category:グラフィカルユーザーインターフェイス]]
 
[[Category:グラフィカルユーザーインターフェイス]]
 
[[Category:セキュリティ]]
 
[[Category:セキュリティ]]
[[en:Running GUI apps as root]]
+
[[en:Running GUI applications as root]]
 
[[ko:Running X apps as root]]
 
[[ko:Running X apps as root]]
  +
{{Warning|1=以下のすべての方法には、ユーザーが注意すべきセキュリティ上の影響があります。GNOME 開発者の Emmanuele Bassi によって [https://bugzilla.gnome.org//show_bug.cgi?id=772875#c5 説明] された通りです。
{{Warning|1=以下の方法は全てセキュリティに影響があるためユーザーは注意する必要があります。GNOME の開発者である Emmanuele Bassi の発言より: "''root で GUI アプリケーションを実行しなければならないという理由はありません。技術的な裏付けなどは全くないのです。管理者ユーザーとして GUI アプリケーションを実行するということは文字通り数百万行のコードを特権で動かすということに他なりません。$HOME の中のファイルにアクセスするコードを実行してファイルシステムの所有権を変えることができ、IPC で接続することでさらに別のコードも実行できます。大きなセキュリティホールがぽっかりと空いているわけです [...]''"[https://bugzilla.gnome.org//show_bug.cgi?id=772875#c5]。}}
 
   
  +
:[...] 誰もが root 権限で GUI アプリケーションを実行すべき理由は、*実際には* 技術的に根拠のあるものではありません。管理者権限で GUI アプリケーションを実行することで、監査されていない膨大な量のコードを特権的な権限のもとで実行することになります。また、$HOME 内のファイルにアクセスし、その所有権を変更する可能性があるコードも実行されます。さらに、IPC を介して他のコードとも接続される可能性があります。
グラフィカルアプリケーションを root で実行するのはできるかぎり避けてください。[[#root 実行の回避]]を見てください。
 
  +
:これにより、大規模で重大なセキュリティホールが開くことになります [...]。
  +
}}
   
 
== root 実行の回避 ==
 
== root 実行の回避 ==
54行目: 56行目:
 
==== 永続的に root のアクセスを許可 ====
 
==== 永続的に root のアクセスを許可 ====
   
  +
:'''方法 1''': 以下の行を追加します
===== 方法 1 =====
 
 
以下の行を {{ic|/etc/pam.d/su}} と {{ic|/etc/pam.d/su-l}} に追加してください:
 
   
 
session optional pam_xauth.so
 
session optional pam_xauth.so
   
その後 {{ic|su}} {{ic|su -}} を使て root ユーザーに切り替えてください
+
{{ic|/etc/pam.d/su}} と {{ic|/etc/pam.d/su-l}} の両方に追加してください。その後{{ic|su}} または {{ic|su -}} を使用して root ユーザーに切り替えます
   
  +
:'''方法 2''': グローバルに {{ic|/etc/profile}} で設定
===== 方法 2 =====
 
   
{{ic|/etc/profile}} に以下の行を追加してください:
+
以下の行を {{ic|/etc/profile}} に追加します:
   
  +
{{hc|/etc/profile|2=
export XAUTHORITY=/home/non-root-usersname/.Xauthority
 
  +
export XAUTHORITY=/home/''username''/.Xauthority
  +
}}
  +
  +
これにより、root が非 root ユーザーの X サーバーに永続的に接続できるようになります。
   
  +
または、特定のアプリだけを指定することもできます:
上記の設定で root が root 以外のユーザーの X サーバーに永続的に接続できるようになります。
 
   
  +
# XAUTHORITY=/home/''username''/.Xauthority ''appname''
あるいは、接続するアプリを指定する場合 (例: kwrite):
 
   
  +
ここで、{{ic|''appname''}} は特定のアプリ名を指します(例: ''kwrite'')。
export XAUTHORITY=/home/usersname/.Xauthority kwrite
 
   
 
== Wayland ==
 
== Wayland ==
87行目: 91行目:
 
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 実行の回避]]を見て、できる限りグラフィカルアプリケーションは root で実行しないようにしてください。
   
 
また、[[#xhost を使う]]ことで、あらゆるグラフィカルアプリケーションを root で実行することができます。
 
また、[[#xhost を使う]]ことで、あらゆるグラフィカルアプリケーションを root で実行することができます。
98行目: 102行目:
 
アプリケーションを閉じた後に許可を取り消すには:
 
アプリケーションを閉じた後に許可を取り消すには:
 
$ xhost -si:localuser:root
 
$ xhost -si:localuser:root
  +
  +
=== sudo -E を使用する ===
  +
  +
次のコマンドでアプリケーションを起動できます:
  +
  +
$ sudo -E ''program''
  +
  +
これにより、WAYLAND_DISPLAY のような環境変数が保持されます。
  +
  +
HOME 環境変数をターゲットユーザーに設定したい場合は、次のコマンドを使用します:
  +
  +
$ sudo -EH ''program''
  +
  +
詳細は {{man|8|sudo}} を参照してください。
  +
  +
{{TranslationStatus|Running GUI applications as root|2024-09-05|812753}}

2024年9月7日 (土) 18:29時点における最新版

警告: 以下のすべての方法には、ユーザーが注意すべきセキュリティ上の影響があります。GNOME 開発者の Emmanuele Bassi によって 説明 された通りです。
[...] 誰もが root 権限で GUI アプリケーションを実行すべき理由は、*実際には* 技術的に根拠のあるものではありません。管理者権限で GUI アプリケーションを実行することで、監査されていない膨大な量のコードを特権的な権限のもとで実行することになります。また、$HOME 内のファイルにアクセスし、その所有権を変更する可能性があるコードも実行されます。さらに、IPC を介して他のコードとも接続される可能性があります。
これにより、大規模で重大なセキュリティホールが開くことになります [...]。

root 実行の回避

sudoedit

root でファイルを編集するときは sudoedit を使ってください。

GVFS

admin バックエンド の URI を指定することで GVFS 経由で特権が必要なファイルやディレクトリにアクセスできます [1][2]:

$ nautilus admin:///root/

または:

$ gedit admin:///etc/fstab
ヒント: 上記の URI はアプリケーションのロケーションバーやファイル選択でも使うことができます。例えば nautilusgedit なら、Ctrl+l を押してからパスの前に admin:// を付けてください。Other locations サーバーアドレスバーでも同じことが可能です。

Xorg

セキュリティ上の理由で、デフォルトでは root は root 以外のユーザーが起動した X サーバーに接続することができません。必要な場合 root から接続できるようにする方法がいくつか存在します。

こちらのフォーラムの投稿 にあるように、特権で X の GUI アプリを実行するときの適切かつ推奨される方法は Polkit ポリシーを作成することです。ただし、この方法は pkexec(1) に書かれているように古いプログラムでのみ使用するべきです。アプリケーションは特権操作を最小限のコードに委任して、権限が必要なくなったら自動的に権限を消す必要があります [3]

安全な方法

以下の方法ではアプリケーションは昇格フレームワークにラッピングされ、アプリケーションの終了時に権限も落とされます:

$ kdesu application
$ sudo application
  • suxAUR (X のログイン情報を転送する su のラッパー)
$ sux root application

他の方法

以下の方法でも root からユーザーの X サーバーに接続することができますが、セキュリティ上の危険性が存在し、特に SSH を動作させている場合は危険です。

Xhost

Xhost を使うことで一時的に root のアクセスを許可できます。

永続的に root のアクセスを許可

方法 1: 以下の行を追加します
session         optional        pam_xauth.so

/etc/pam.d/su/etc/pam.d/su-l の両方に追加してください。その後、su または su - を使用して root ユーザーに切り替えます。

方法 2: グローバルに /etc/profile で設定

以下の行を /etc/profile に追加します:

/etc/profile
export XAUTHORITY=/home/username/.Xauthority

これにより、root が非 root ユーザーの X サーバーに永続的に接続できるようになります。

または、特定のアプリだけを指定することもできます:

# XAUTHORITY=/home/username/.Xauthority appname

ここで、appname は特定のアプリ名を指します(例: kwrite)。

Wayland

Wayland セッションで su, sudo, pkexec を使って root でグラフィカルアプリケーション (例: GPartedGedit など) を実行しようとした場合、以下のようなエラーが表示されます:

$ 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 サーバーを起動したユーザーだけです (バグレポート[4] [5], [6] を参照)。

#root 実行の回避を見て、できる限りグラフィカルアプリケーションは root で実行しないようにしてください。

また、#xhost を使うことで、あらゆるグラフィカルアプリケーションを root で実行することができます。

xhost を使う

回避策としては xhost を使うことで root ユーザーに対して一時的にローカルユーザーの X セッションへのアクセスを許可できます。非特権ユーザーで以下のコマンドを実行してください [7]:

$ xhost si:localuser:root

アプリケーションを閉じた後に許可を取り消すには:

$ xhost -si:localuser:root

sudo -E を使用する

次のコマンドでアプリケーションを起動できます:

$ sudo -E program

これにより、WAYLAND_DISPLAY のような環境変数が保持されます。

HOME 環境変数をターゲットユーザーに設定したい場合は、次のコマンドを使用します:

$ sudo -EH program

詳細は sudo(8) を参照してください。

翻訳ステータス: このページは en:Running GUI applications as root の翻訳バージョンです。最後の翻訳日は 2024-09-05 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。