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命令退出,并返回第一个失败的脚本的非零值。 红帽建议使用以下命名约定来按照正确顺序执行脚本:
DDD_name.lang,其中:-
DDD是指示脚本执行顺序的十进制数字。如有必要,使用一个或多个前导零。 -
name是插件脚本的名称。 -
lang(可选)是给定编程语言的文件扩展。例如,插件脚本的名称可以是:001-check-groups.sh。
-
注意
插件脚本在创建时有效。在插件脚本之前创建的容器不会受到影响。
先决条件
-
container-tools元数据包已安装。
流程
创建名为
001-check-groups.sh的脚本插件。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 该脚本检查用户是否在指定的组中。
-
USER和GROUP是 Podman 设置的环境变量。 -
001-check-groups.sh脚本提供的退出代码将提供给podman二进制文件。 -
podman命令退出,并返回第一个失败的脚本的非零值。
验证
检查
001-check-groups.sh脚本是否正常工作:podman run image
$ podman run image ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果用户不在正确的组中,则会出现以下错误:
external preexec hook /etc/containers/pre-exec-hooks/001-check-groups.sh failed
external preexec hook /etc/containers/pre-exec-hooks/001-check-groups.sh failedCopy to Clipboard Copied! Toggle word wrap Toggle overflow