linux - Bash:如何注销/退出运行脚本的用户
问题描述
我有一个 bash 脚本,它创建几个目录等,创建一个反向 SSH 隧道,使用用户的加密密钥(它被解密并在登录时由 pam_ssh 启动一个 ssh-agent),然后启动一个 tmux 会话并分离(等待稍后重新连接)。至此,一切都完成了,我想确保执行脚本的用户将被注销。
原因如下:只允许特定用户(将来可能是 root)执行这个脚本,所以当regular_user
我在终端时我会这样做:su special_user
,./special_script.sh
现在如果我忘记注销并让终端保持打开状态 - 有人可以再次运行该脚本,所以我希望在其结束时./special_script.sh
将special_user
退出他的会话,将他返回到regular_user
.
备注:special_user
被支持人员使用,regular_users
他们在他们的会话中帮助他们,所以有一天支持人员很可能会忘记注销而让他的会话闲置。理想情况下,它会使用类似的东西sudo special_user special_script.sh
,但重要的是special_user
将请求密码(传递给 ssh-agent)。
可能吗?
解决方案
当您无法使用sudo
或将脚本嵌入到 setuid 位的常规可执行文件中时(请参阅https://unix.stackexchange.com/a/369/57293 ),您可以尝试操作.bashrc
special_user
special_script.sh
exit 0
请注意,所有解决方案都需要审查special_script.sh
何时涉及安全性。当 special_script.sh 调用类似vi
or的程序sqlplus
时,用户可以打开一个 shell 并在该 shell 中执行所有操作。
推荐阅读
- excel - VBA 相交行和列
- xamarin.forms - 如何在 Xamarin 表单的集合视图上添加 Click 事件
- ios - cocos2d JS WebGL 渲染在 iOS 14 公测版中不起作用
- css - 引导重新排序列以最小化给定行的大小
- python - model.predict(dataset) 给我“*: 'int' and 'NoneType' 的不支持的操作数类型”错误
- javascript - 在Angular中以反应形式测试输入元素时如何触发焦点和模糊事件?
- sql - Oracle:选择查询以通过将其格式从 varchar 更改为日期来过滤日期列
- javascript - 安装后如何触发vue的自定义指令
- java - Selenium 不接受我的 xpath 表达式
- http - 使用 HttpOnly cookie 进行身份验证后重定向