如何在pam_exec脚本

时间:2016-02-17 17:36:18

标签: ssh debian pam

我正在使用sshd_config变量PermitUserEnvironment

#/etc/ssh/sshd_config
PermitUserEnvironment yes

在/root/.ssh/authorized_keys文件中的每个键上设置类似“REALUSERNAME”的内容。

#/root/.ssh/authorized_keys 
environment="REALUSER=custom_value" ssh-rsa AAAAB3....

但我无法访问/etc/pam.d/sshd中pam_exec触发的脚本中的值

我最好的猜测是在设置环境变量之前执行pam脚本?那么我的选择是什么?

我试过pam_env

#/etc/security/pam_env.conf
PAM_REALUSER    DEFAULT="unkonwn" OVERRIDE=${REALUSER}

这是我的pam.d / ssh文件的自定义部分

#/etc/pam.d/sshd
session    required     pam_env.so readenv=1
session    optional     pam_exec.so seteuid /usr/local/bin/scripts/my_script

甚至像SSH_CONNECTION这样的变量似乎也不可用,这对我来说很奇怪。在脚本执行时肯定可以获得信息,但是没有设置变量或者我做错了。

我曾经(成功)在/ etc / profile中触发脚本,所以我非常有信心问题不在我的自定义脚本中

1 个答案:

答案 0 :(得分:0)

  

但我无法访问pam_exec/etc/pam.d/sshd触发的脚本中的值

     

我最好的猜测是在设置环境变量之前执行pam脚本?那么我的选择是什么?

是的,你是对的。来自授权密钥的环境变量在do_setup_env()函数中设置,该函数在pam_session之后调用。

如果你想访问这些变量,我建议你在评估变量后为用户设置ForceCommand或特殊的shell,它将包装在普通的shell中。

但请注意,无论您的设置如何,为root设置此权限(无限制)将允许您的用户执行他们想要的任何操作(甚至更改密钥,环境变量)。