我让一个用户作为另一个用户运行一个脚本
假设我的用户是firstUser然后执行以下命令:sudo -u **secondUser** ....
是否有可能以某种方式获得用户(firstUser)的名称?谁试图在脚本中以secondUser的身份运行该命令
?在我的系统上,sudo -uusersome_script ...
运行some_script
作为sudo
的子进程。
$$
是shell的PID,而$PPID
是其父PID的派生,您应该能够执行以下操作:
#! /bin/bash
PARENT_USER=$( ps -eo user= $PPID )
if [ "$PARENT_USER" != "$( ps -eo user= $$ )" ]; then
# I'm not the same user as my parent
...
fi
检查ps -eo user= $$
比依赖$USER
更安全,因为后者可能被父进程覆盖。此外,如果名称"太长">
ps
将其用户格式说明符解释为十进制数字,而不是文本用户名。