jbeverly / pam_ssh_agent_auth

Moving pam_ssh_agent_auth to github as primary development location
Other
98 stars 27 forks source link

authorized_keys_command= is passing wrong username argument when used in /etc/pam.d/su-l #34

Open neilfx1 opened 2 years ago

neilfx1 commented 2 years ago

Tested on several versions from 8.8p1 right back to 7.4p1 and on different distros (RHEL, Ubuntu)

Issue: If you use su - to elevate privileges when using the auth suffucient pam_ssh_agent_auth .so authorized_keys_command=/usr/bin/sss_ssh_authorizedkeys parameters within /etc/pam.d/su-l it passes the logged on username instead of the user to be elevated to. The result of this is the wrong public key is returned by sss_ssh_authorizedkeys.

Debugging: It seems to be specific to authorized_keys_command within pam_ssh_agent as I've tried writing a simple bash script which outputs %u and that is returning the wrong user. If you use file=/%h/%u/.ssh/authorized_keys that does return the correct user which makes e think its specific to the command.

Scenario: User alice with standard privileges logs on from Windows using pageant/PuttyCAC and has a smart card inserted. To do any superuser commands, she has to elevate herself with su - adminalice.

Jakuje commented 2 years ago

I am wondering if the pam_ssh_agent_auth is designed to be used with the su as you describe. Most of the guides here talk about configuring this in the sudo, where this behavior is expected. The pam_ssh_agent_auth reads PAM_RUSER and if it is not defined, it falls back to the getuid() syscall, which is usually the right thing to do to authenticate a user with sudo, but not with a su.

msantos commented 2 years ago

FYI there is a patch to set PAM_RUSER to work with programs like su(1):

https://github.com/jbeverly/pam_ssh_agent_auth/pull/7