我正在使用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中触发脚本,所以我非常有信心问题不在我的自定义脚本中
答案 0 :(得分:0)
但我无法访问
pam_exec
中/etc/pam.d/sshd
触发的脚本中的值我最好的猜测是在设置环境变量之前执行pam脚本?那么我的选择是什么?
是的,你是对的。来自授权密钥的环境变量在do_setup_env()函数中设置,该函数在pam_session
之后调用。
如果你想访问这些变量,我建议你在评估变量后为用户设置ForceCommand
或特殊的shell,它将包装在普通的shell中。
但请注意,无论您的设置如何,为root设置此权限(无限制)将允许您的用户执行他们想要的任何操作(甚至更改密钥,环境变量)。