我正在编写一个 bash 脚本,该脚本与给定目标用户 T
的 UID 和 GID 的递归修改有关。它必须在远程机器上以 root 身份运行。
为了正常工作,脚本要求这样的用户 T
不是建立 ssh 连接的用户。否则,作为 usermod
的命令将无法工作,因为由于 T
(ssh) 存在事件进程。
换句话说,要在 T
上操作,我必须在连接为 S
后以 root 身份登录。
有什么方法可以确保登录的用户不是脚本的目标?即 S!=T
?
最佳答案
如果您可以修改在权限提升之前运行的脚本部分,请记住 ssh
通常会设置 USER
环境变量。您可以将其导出为另一个名称以保留在升级的环境中。
OLD_USER=$USER su -m # the `-m` flag says to keep the current environment
(话又说回来,如果您可以修改在权限提升之前运行的脚本部分,为什么不检查 S=T
呢?)
此外,如果您使用 sudo
成为 root,该命令会为您设置 SUDO_USER
和 SUDO_UID
。
关于linux - Bash - 检查用户是否通过 ssh 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23066888/