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 *,其中包含以下模块类型之一:accountauthpasswordopen_sessionclose_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. 提供的模块类型

提供了所有模块类型(authaccountpasswordsession)。

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<[email protected]>和 Josh Triplett<[email protected]>编写。