我正在编写一个bash脚本,该脚本与给定目标用户T
的UID和GID的递归修改有关。它必须在远程计算机上以root身份运行。
为了正常工作,脚本要求此类用户T
不是进行ssh连接的用户。否则,usermod
之类的命令将无法正常工作,因为T
(ssh)存在进程。
换句话说,要在T
上操作,我必须在连接为S
后以root用户身份登录。
有没有办法可以确保用户登录的不是脚本的目标?即S!=T
?
答案 0 :(得分:1)
如果您可以修改在权限提升之前运行的脚本部分,请记住ssh
通常会设置USER
环境变量。您可以将其导出到其他名称,以便在升级的环境中保留。
OLD_USER=$USER su -m # the `-m` flag says to keep the current environment
(然后,如果您可以修改在权限提升之前运行的脚本部分,那么为什么不检查S=T
是否呢?)
此外,如果您使用sudo
成为root用户,该命令会为您设置SUDO_USER
和SUDO_UID
。