【问题标题】:Bash: how to logout/exit the user who runs the scriptBash:如何注销/退出运行脚本的用户
【发布时间】:2018-10-14 22:16:48
【问题描述】:

我有一个 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)。

有可能吗?

【问题讨论】:

  • 使用sudosu -c

标签: linux bash session ssh terminal


【解决方案1】:

当您无法使用sudo 或将脚本嵌入到一个setuid 位的常规可执行文件中时(请参阅https://unix.stackexchange.com/a/369/57293),您可以尝试操作special_user.bashrc

special_script.sh
exit 0

请注意,所有解决方案都需要在涉及安全性时查看special_script.sh。当 special_script.sh 调用像 visqlplus 这样的程序时,用户可以打开一个 shell 并在该 shell 中执行所有操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    相关资源
    最近更新 更多