我有一个如下系统脚本来显示堆栈详细信息
-r-xr-xr-x. 1 bin bin 6560 Feb 17 21:01 displayPD
[sufuser@101 bin]$ ./displayPD
Usage: ./displayPD -n node
注意(此脚本不能以root身份运行)
我想自动化并在脚本中调用它,该脚本也是用相同的用户登录编写的。
但是当我使用system
命令从我的脚本调用它时,它被称为root,脚本无法执行。如何保留用户会话以执行?
system("/opt/SMAW/SMAWsuf/bin/displayPD -n Node03 >> /tmp/HP_Details.txt");
如何将其称为sufuser并将其执行?
答案 0 :(得分:2)
如果您的程序以root用户身份运行,则可以随意更改进程的实际($<
)和有效($>
)UID。为了您的目的,更改EUID就足够了:
use v5.12;
say "euid: $>";
system('whoami');
# switch user
$> = 1000;
say "euid: $>";
system('whoami');
# switch back
$>=$<;
say "euid: $>";
system('whoami');
将该脚本作为root
运行:
$ sudo perl uidtest
euid: 0
root
euid: 1000
ben
euid: 0
root