Bash - 检查用户是否通过ssh登录

时间:2014-04-14 17:55:26

标签: linux bash ssh

我正在编写一个bash脚本,该脚本与给定目标用户T的UID和GID的递归修改有关。它必须在远程计算机上以root身份运行。

为了正常工作,脚本要求此类用户T不是进行ssh连接的用户。否则,usermod之类的命令将无法正常工作,因为T(ssh)存在进程。

换句话说,要在T上操作,我必须在连接为S后以root用户身份登录。

有没有办法可以确保用户登录的不是脚本的目标?即S!=T

1 个答案:

答案 0 :(得分:1)

如果您可以修改在权限提升之前运行的脚本部分,请记住ssh通常会设置USER环境变量。您可以将其导出到其他名称,以便在升级的环境中保留。

OLD_USER=$USER su -m # the `-m` flag says to keep the current environment

(然后,如果您可以修改在权限提升之前运行的脚本部分,那么为什么不检查S=T是否呢?)

此外,如果您使用sudo成为root用户,该命令会为您设置SUDO_USERSUDO_UID