标签:linux authentication centos pam shell-script
题
当用户使用pam_exec.so(或其他方式)登录时,如何以root身份运行脚本?该脚本需要有关用户的信息才能运行.
问题与环境
我希望每次用户登录时都以root身份运行script- / path / script.sh.我还需要知道登录的用户(例如,作为脚本的环境变量或参数).我正在使用CentOS 7的最新版本.
我目前正在编辑/etc/pam.d/system-auth并添加以下行:
session optional pam_exec.so /path/script.sh
当我成为sudo su的用户时,这种方法很好,但如果我向用户进行身份验证,则无效(脚本必须以root身份运行).换一种说法,
$su - robot7
Password:
/path/script.sh failed: exit code 1
-bash-4.2$
失败了
$sudo su - robot7
Last login: Thu Jun 14 09:33:56 MDT 2018 on pts/5
-bash-4.2$
按预期工作并运行脚本,但有一点需要注意:当用户断开连接时,脚本也会运行.第二种情况下的变量$PAM_USER是正确的用户名(robot7,而不是root).
此脚本将在生产环境中使用,在该环境中,用户必须无法禁用它并且可能具有不同的shell;我不能使用像.bashrc或其他人这样的脚本来运行它.
如果我在/etc/pam.d/system-auth中设置命令在auth而不是session上运行(如类似问题所示),它永远不会运行.
编辑
将seteuid添加到pam_exec.so命令允许脚本在用户进行身份验证时运行(su – robot7),但不在SSH上运行脚本(这是用户登录的主要方法).
解决方法:
安全上下文阻止脚本运行. systemd日志表明即使允许所有用户执行脚本,脚本也无法运行;一些安全策略不喜欢脚本的路径.
我将脚本移动到/ bin,错误立即自行解决.
标签:linux,authentication,centos,pam,shell-script 来源: https://codeday.me/bug/20190815/1660080.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。