📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の5版が非表示) | |||
| 16行目: | 16行目: | ||
sudo zypper install dbus-1-devel libexpat-devel systemd-devel glib2-devel gtk3-devel gobject-introspection-devel mozjs78-devel pam-devel duktape-devel | sudo zypper install dbus-1-devel libexpat-devel systemd-devel glib2-devel gtk3-devel gobject-introspection-devel mozjs78-devel pam-devel duktape-devel | ||
<br> | <br> | ||
[https://www.freedesktop.org/software/polkit/releases/ PolKitの公式Webサイト]または[https://gitlab.freedesktop.org/polkit/polkit/-/tags GitLab] | [https://www.freedesktop.org/software/polkit/releases/ PolKitの公式Webサイト] または [https://github.com/polkit-org/polkit GitHub]にアクセスして、ソースコードをダウンロードする。<br> | ||
<u>なお、[https://gitlab.freedesktop.org/polkit/polkit/-/tags GitLab]は、アーカイブされているため注意すること。</u><br> | |||
<br> | |||
ダウンロードしたファイルを解凍する。<br> | ダウンロードしたファイルを解凍する。<br> | ||
tar xf polkit-<バージョン>.tar.gz | tar xf polkit-<バージョン>.tar.gz | ||
| 22行目: | 24行目: | ||
<br> | <br> | ||
また、<code>git clone</code>コマンドを実行して、PolKitのソースコードをダウンロードする。<br> | また、<code>git clone</code>コマンドを実行して、PolKitのソースコードをダウンロードする。<br> | ||
git clone https:// | git clone https://github.com/polkit-org/polkit | ||
cd polkit | cd polkit | ||
<br> | <br> | ||
| 288行目: | 290行目: | ||
==== Qtで開発されたGUIソフトウェアの場合 ==== | ==== Qtで開発されたGUIソフトウェアの場合 ==== | ||
<u>Qtで開発されたGUIソフトウェアにおいては、PolKitにカスタムアクションを追加してもroot権限で実行することはできない。</u><br> | <u>Qtで開発されたGUIソフトウェアにおいては、PolKitにカスタムアクションを追加してもroot権限で実行することはできない。</u><br> | ||
これは、Qt GUIソフトウェア全体をroot権限で実行することは非推奨とされているからである。<br> | |||
<br> | |||
非推奨であるが、Qt GUIソフトウェア全体をroot権限で実行する場合は、<br> | |||
PolKitのカスタムアクションは作成せずに<code>env</code>オプションを付加することにより、<code>pkexec</code>コマンドで実行することができる。<br> | |||
<br> | <br> | ||
<u>ただし、動作には、/usr/share/polkit-1/actions/org.freedesktop.policykit.policyファイルが必要である。</u><br> | <u>ただし、動作には、/usr/share/polkit-1/actions/org.freedesktop.policykit.policyファイルが必要である。</u><br> | ||
| 307行目: | 312行目: | ||
kdesu <SkiaSharpで開発されたGUIソフトウェアのパス> | kdesu <SkiaSharpで開発されたGUIソフトウェアのパス> | ||
<br><br> | <br><br> | ||
== X11 == | |||
デフォルトでは、セキュリティ上の理由から、rootは非rootユーザのXサーバに接続することができない。<br> | |||
しかし、必要であれば、rootユーザとして接続できるようにする方法が複数存在する。<br> | |||
<br> | |||
X11上でGUIソフトウェアを昇格権限で実行するための推奨される方法は、PolKitポリシーファイルを作成することである。<br> | |||
しかし、<code>pkexec</code>コマンドが注意喚起しているように、これは、<u>レガシープログラムにのみ使用されるべき</u>である。<br> | |||
<br> | |||
GUIソフトウェアは、<u>特権的な操作を、監査可能で、自己完結した、最小限のコード片に委ね、特権昇格を行った後に実行され、必要ない時には削除する</u>べきである。<br> | |||
<br> | |||
X11を使用している場合、GUIソフトウェアを昇格フレームワークでラップして、終了時に取得した特権を削除する。<br> | |||
gnomesu <GUIソフトウェアのパス> | |||
kdesu <GUIソフトウェアのパス> | |||
<br><br> | |||
== Wayland および XWayland == | |||
Waylandセッションにおいて、<code>su</code>コマンド、<code>sudo</code>コマンド、<code>pkexec</code>コマンドを使用して、GUIソフトウェアを実行する場合、以下に示すようなエラーが発生する。<br> | |||
No protocol specified | |||
Unable to init server: Could not connect: Connection refused | |||
(gedit:2349): Gtk-WARNING **: cannot open display: :0 | |||
<br> | |||
X11では、昇格した特権でGUIソフトウェアを実行する場合は、PolKitポリシーファイルの作成、または、<code>sudo</code>コマンドでターミナルから実行することができたが、<br> | |||
WaylandおよびXWaylandでは、Xサーバを起動したユーザのみがクライアントに接続できるよう設定されているため、これらの方法は使用できない。<br> | |||
<br> | |||
安全性は劣るが、<code>xhost</code>コマンドを実行して、rootユーザがローカルユーザのセッションに一時的にアクセスできる方法がある。<br> | |||
これを行う場合は、現在の(非特権)ユーザにおいて、以下に示すコマンドを実行する。<br> | |||
xhost si:localuser:root | |||
<br> | |||
GUIソフトウェアの終了後は、特権を削除する必要がある。<br> | |||
xhost -si:localuser:root | |||
<br><br> | |||
== PolKitを使用したサンプルコード == | |||
C/C++を使用したPolKitのサンプルコードを知りたい場合は、[[C++の応用 - PolKit]]のページを参照すること。<br> | |||
<br><br> | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]] | ||