如何让“pam_succeed_if.so”识别“service”用户?

如何让“pam_succeed_if.so”识别“service”用户?

我有一个 Linux 系统,用户名为service.我正在使用该pam_succeed_if.so模块来匹配该用户名。例如:

auth      required      pam_succeed_if.so user = service

但它不会匹配 的用户名service,显然是因为它也是 接受的字段pam_succeed_if.so。从手册页(为强调而编辑):

可用字段有 user、uid、gid、shell、home、ruser、rhost、tty 和服务

如何转义与字段名称匹配的值?

进一步故障排除:

我打开了debug的选项pam_succeed_if.so,它将用户名转换servicelogin

login: pam_succeed_if(login:auth): 'user' resolves to 'login'

这恰好是用于登录的 PAM 配置/etc/pam.d/login

答案1

pam_succeed_if.so如果该值存在,则将传入的值转换user为值。field例如,使用用户shell

login: pam_succeed_if(login:auth): 'user' resolves to '/bin/bash'

我不知道如何阻止它做出这种明显不受欢迎的决定。但有一种解决方法几乎适用于所有人。

只需检查解析值,而不是实际值。

例子

要匹配PAM 配置service中的用户login

auth      required      pam_succeed_if.so user = login

要匹配PAM 配置service中的用户sshd

auth      required      pam_succeed_if.so user = sshd

要匹配shell用户,其配置的 shell 是/bin/bash

auth      required      pam_succeed_if.so user = /bin/bash

相关内容