我有一个创建多个目录等的bash脚本,使用用户的加密密钥创建一个反向的SSH隧道(它被解密,登录时由pam_ssh启动ssh-agent),然后启动tmux会话并分离(等待以后再重新安装)。此时一切都已完成,我想确保已经注销执行该脚本的用户。
原因如下:只允许某个用户(以后可能是root用户)执行此脚本,因此当我在终端regular_user
时,我会执行:su special_user
,{ {1}}现在,如果我忘记注销并让终端保持打开状态 - 有人可以再次运行该脚本,所以我希望在./special_script.sh
结束时将./special_script.sh
退出会话,返回他到special_user
。
备注:regular_user
被接近special_user
的支持人员用来帮助他们在他们的会话中帮助他们,所以很可能有一天支持人员会忘记退出而离开他的会话。理想情况下,使用regular_users
之类的东西,但重要的是要求sudo special_user special_script.sh
的密码短语(传递给ssh-agent)。
有可能吗?
答案 0 :(得分:0)
当您无法使用sudo
或将脚本嵌入到setuid位的常规可执行文件中时(请参阅https://unix.stackexchange.com/a/369/57293),您可以尝试操纵.bashrc
special_user
1}}
special_script.sh
exit 0
请注意,所有解决方案都需要在涉及安全性时审核special_script.sh
。当special_script.sh调用vi
或sqlplus
之类的程序时,用户可以打开shell并在该shell中执行所有操作。