5.16. Podman での事前実行フックの設定
プラグインスクリプトを作成して、コンテナー操作の詳細な制御を定義できます。特に、コンテナーイメージのプル、実行、リストなどの不正なアクションをブロックできます。
ファイル /etc/containers/podman_preexec_hooks.txt
は管理者が作成する必要があり、空であってもかまいません。/etc/containers/podman_preexec_hooks.txt
が存在しない場合、プラグインスクリプトは実行されません。
次のルールがプラグインスクリプトに適用されます。
- root 所有である必要があり、書き込み可能ではありません。
-
/usr/libexec/podman/pre-exec-hooks
および/etc/containers/pre-exec-hooks
ディレクトリーに配置する必要があります。 - 英数字順に順次実行します。
-
すべてのプラグインスクリプトがゼロ値を返す場合、
podman
コマンドが実行されます。 -
いずれかのプラグインスクリプトがゼロ以外の値を返した場合、それは失敗を示します。
podman
コマンドは終了し、最初に失敗したスクリプトのゼロ以外の値を返します。 Red Hat では、スクリプトを正しい順序で実行するために、
DDD_name.lang
という命名規則を使用することを推奨します。-
DDD
は、スクリプトの実行順序を示す 10 進数です。必要に応じて、先頭に 1 つまたは 2 つのゼロを使用します。 -
name
はプラグインスクリプトの名前です。 -
lang
(オプション) は、指定されたプログラミング言語のファイル拡張子です。たとえば、プラグインスクリプトの名前は001-check-groups.sh
のようになります。
-
プラグインスクリプトは作成時点で有効です。プラグインスクリプトの前に作成されたコンテナーは影響を受けません。
前提条件
-
container-tools
モジュールがインストールされている。
手順
001-check-groups.sh
という名前のスクリプトプラグインを作成します。以下に例を示します。#!/bin/bash if id -nG "$USER" 2> /dev/null | grep -qw "$GROUP" 2> /dev/null ; then exit 0 else exit 1 fi
- スクリプトは、ユーザーが指定されたグループに属しているかどうかを確認します。
-
USER
とGROUP
は、Podman によって設定される環境変数です。 -
001-check-groups.sh
スクリプトによって提供される終了コードは、podman
バイナリーに提供されます。 -
podman
コマンドは終了し、最初に失敗したスクリプトのゼロ以外の値を返します。
検証
001-check-groups.sh
スクリプトが正しく動作するかどうかを確認します。$ podman run image ...
ユーザーが正しいグループに属していない場合は、次のエラーが表示されます。
external preexec hook /etc/containers/pre-exec-hooks/001-check-groups.sh failed