sky*_*ket 6 linux authentication pam centos shell-script
当用户使用pam_exec.so(或以其他方式)登录时,如何以 root 身份运行脚本?该脚本需要有关用户的信息才能运行。
我想在/path/script.sh每次用户登录时以 root身份运行一个脚本。我还需要知道登录的用户(例如作为环境变量或脚本的参数)。我使用的是最新版本的 CentOS 7。
我目前正在编辑/etc/pam.d/system-auth并添加以下行:
session optional pam_exec.so /path/script.sh
Run Code Online (Sandbox Code Playgroud)
当我成为具有 的用户时sudo su,这工作正常,但如果我对用户进行身份验证,则不起作用(脚本必须以 root 身份运行)。换句话说,
$ su - robot7
Password:
/path/script.sh failed: exit code 1
-bash-4.2$
Run Code Online (Sandbox Code Playgroud)
失败而
$ sudo su - robot7
Last login: Thu Jun 14 09:33:56 MDT 2018 on pts/5
-bash-4.2$
Run Code Online (Sandbox Code Playgroud)
工作并按预期运行脚本,但有一个警告:当用户断开连接时,脚本也会运行。$PAM_USER第二种情况下的变量是正确的用户名(robot7,而不是 root)。
该脚本将用于生产环境中,用户不能禁用它并且可能有不同的外壳;我无法使用类似.bashrc或其他脚本来运行它。
如果我将命令设置/etc/pam.d/system-auth为运行auth而不是session(如类似问题所建议的那样),它永远不会运行。
添加seteuid到pam_exec.so命令允许脚本在用户进行身份验证 ( su - robot7) 时运行,但不会在 SSH 上运行脚本(这是用户登录的主要方法)。