Polkit-123

Polkit の概要

Polkit パッケージは、権限情報を定義し操作するためのツールキットです。 非特権 (unprivileged) プロセス から特権 (privileged) プロセスへのアクセスを行う際に利用されます。

[注記]

注記

LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。

パッケージ情報

Polkit の依存パッケージ

必須

GLib-2.78.3

Recommended

[注記]

注記

Since elogind uses PAM to register user sessions, it is a good idea to build Polkit with PAM support so elogind can track Polkit sessions.

任意

GTK-Doc-1.33.2, dbusmock-0.30.0, and SpiderMonkey from Firefox-115.5.0 (can be used in place of duktape)

Optional Runtime Dependencies

One polkit authentication agent for using polkit in the graphical environment: polkit-kde-agent in Plasma-5.27.10 for KDE, the agent built in gnome-shell-45.2 for GNOME3, polkit-gnome-0.105 for XFCE, and lxqt-policykit-1.4.0 for LXQt

[注記]

注記

libxslt-1.1.39 をインストールしている場合は docbook-xml-4.5docbook-xsl-nons-1.79.2 が必要です。 また libxslt-1.1.39 はインストールしていても、その DocBook パッケージ類をインストールしたくない場合は、後述する手順にて -Dman=false を指定することになります。

Polkit のインストール

polkitd デーモンの起動には、これを制御するための専用のユーザーおよびグループが必要です。 そこで root ユーザーになって以下を実行します。

groupadd -fg 27 polkitd &&
useradd -c "PolicyKit Daemon Owner" -d /etc/polkit-1 -u 27 \
        -g polkitd -s /bin/false polkitd

If using SpiderMonkey from Firefox-115.5.0, make the following change (see Command Explanations below for more information):

sed -e '/mozjs/s/102/115/' -i meson.build      &&
sed -e 's/JS_Init/JS::DisableJitBackend(); &/' \
    -i src/polkitbackend/polkitbackendjsauthority.cpp

一般ユーザーとして以下のコマンドを実行し Polkit をビルドします。

mkdir build &&
cd    build &&

meson setup ..                      \
      --prefix=/usr                 \
      --buildtype=release           \
      -Dman=true                    \
      -Dsession_tracking=libelogind \
      -Dtests=true                  &&
ninja

To test the results, first ensure that the system D-Bus daemon is running, and both D-Bus Python-1.3.2 and dbusmock-0.30.0 are installed. Then run ninja test.

root ユーザーになって以下を実行します。

ninja install

コマンド説明

sed -e '/mozjs/s/102/115/' meson.build: Allow building this package with SpiderMonkey from Firefox 115 ESR releases.

sed -e 's/JS_Init/JS::DisableJitBackend(); &/' ... : The JIT compiling of SpiderMonkey from Firefox-115.5.0 needs W+X mapping which is dangerous and is not permitted by the systemd unit file shipped within the polkit package. This command is not strictly needed on systems based on sysvinit but it still improves security. It has no effect if building polkit with the recommended duktape-2.7.0 Javascript engine.

--buildtype=release: 本パッケージの安定版リリース向けに適したビルドタイプを指定します。 デフォルトにしていると、最適化されていないバイナリを生成する場合があるためです。

-Dtests=true: This switch allows to run the test suite of this package. As Polkit is used for authorizations, its integrity can affect system security. So it's recommended to run the test suite building this package.

-Djs_engine=mozjs: This switch allows using the SpiderMonkey from Firefox-115.5.0 JavaScript engine instead of the duktape-2.7.0 JavaScript engine.

-Dos_type=lfs: Use this switch if you did not create the /etc/lfs-release file or distribution auto detection will fail and you will be unable to use Polkit.

-Dauthfw=shadow: 本スイッチは認証フレームワークとして Linux-PAM ではなく Shadow を使うことを指定します。 Linux-PAM をインストールしていない場合は、本スイッチを用いてください。

-Dintrospection=false: Use this option if you are certain that you do not need gobject-introspection files for polkit, or do not have gobject-introspection installed.

-Dman=false: Use this option to disable generating and installing manual pages. This is useful if libxslt is not installed.

-Dexamples=true: Use this option to build the example programs.

-Dgtk_doc=true: Use this option to enable building and installing the API documentation.

パッケージ構成

インストールプログラム: pkaction, pkcheck, pkexec, pkttyagent, polkitd
インストールライブラリ: libpolkit-agent-1.so, libpolkit-gobject-1.so
インストールディレクトリ: /etc/polkit-1, /usr/include/polkit-1, /usr/lib/polkit-1, /usr/share/gtk-doc/html/polkit-1, /usr/share/polkit-1

概略説明

pkaction

登録されている PolicyKit アクションについての情報を取得するために用います。

pkcheck

プロセスがアクションを行う権限を有するかどうかをチェックするために用います。

pkexec

認証されたユーザーが、他ユーザーとなってコマンド実行することを許可します。

pkttyagent

プロセスなどに対して、テキスト情報による権限エージェントを開始します。

polkitd

システムメッセージバス上にて、org.freedesktop.PolicyKit1 なる D-Bus サービスを提供します。

libpolkit-agent-1.so

Polkit の認証エージェント API 関数を提供します。

libpolkit-gobject-1.so

Polkit 認証 API 関数を提供します。