On this page
6.7. pam_exec-调用外部命令
pam_exec.so
[调试] [Exposure_authtok] [seteuid] [安静] [stdout] [日志= * +41+
*] [类型= * +42+
*] * command
* [* +44+
*]
6.7.1. DESCRIPTION
pam_exec 是一个 PAM 模块,可用于运行外部命令。
如 pam_getenvlist(3)返回的那样,孩子的环境设置为当前 PAM 环境列表。此外,以下 PAM 项作为环境变量导出:* PAM_RHOST , PAM_RUSER , PAM_SERVICE , PAM_TTY , PAM_USER 和 PAM_TYPE *,其中包含以下模块类型之一:account
,auth
,password
,open_session
和close_session
。
pam_exec 调用的命令需要意识到用户可以控制环境。
6.7.2. OPTIONS
debug
- 打印调试信息。
expose_authtok
- 在身份验证期间,调用命令可以从 stdin(3)中读取密码。该命令仅提供密码的前* PAM_MAX_RESP_SIZE *个字节。
log=file
- 命令的输出将附加到
file
- 命令的输出将附加到
type=type
- 仅在模块类型与给定类型匹配时运行命令。
stdout
- 默认情况下,已执行命令的输出将写入
/dev/null
。使用此选项,已执行命令的 stdout 输出将重定向到调用应用程序。输出发生的事情是该应用程序的责任。log
选项将被忽略。
- 默认情况下,已执行命令的输出将写入
quiet
- 默认情况下,如果 pam_exec.so 失败,它将回显外部命令的退出状态。指定此选项将禁止显示该消息。
seteuid
- 默认情况下,pam_exec.so 将使用调用进程的真实用户 ID 执行外部命令。指定此选项意味着该命令将以有效的用户 ID 运行。
6.7.3. 提供的模块类型
提供了所有模块类型(auth
,account
,password
和session
)。
6.7.4. 返回值
PAM_SUCCESS
- 外部命令已成功运行。
PAM_BUF_ERR
- 内存缓冲区错误。
PAM_CONV_ERR
- 应用程序提供的对话方法无法获取用户名。
PAM_INCOMPLETE
- 应用程序提供的对话方法返回了 PAM_CONV_AGAIN。
PAM_SERVICE_ERR
- 没有给出参数或参数数量错误。
PAM_SYSTEM_ERR
- 发生系统错误或执行命令失败。
PAM_IGNORE
pam_setcred
被调用,它不执行命令。或者,为 type =参数提供的值与模块类型不匹配。
6.7.5. EXAMPLES
在每次更改本地密码后,将以下行添加到/etc/pam.d/passwd
以重建 NIS 数据库:
password optional pam_exec.so seteuid /usr/bin/make -C /var/yp
这将执行命令
make -C /var/yp
具有有效的用户 ID。
6.7.6. AUTHOR
pam_exec 由 Thorsten Kukuk<kukuk@thkukuk.de>和 Josh Triplett<josh@joshtriplett.org>编写。