使用特定的用户身份验证从另一个perl脚本调用perl脚本

时间:2015-02-27 11:59:31

标签: perl session

我有一个如下系统脚本来显示堆栈详细信息

-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并将其执行?

1 个答案:

答案 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