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

使用特定的用户身份验证从另一个perl脚本调用perl脚本,perl,session,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命令从脚本调用它时,它被称为根,脚本无法执行。如何保留用户会话以执行 system("/opt

我有一个如下的系统脚本来显示堆栈细节

-r-xr-xr-x. 1 bin  bin    6560 Feb 17 21:01 displayPD
[sufuser@101 bin]$ ./displayPD

Usage: ./displayPD -n node
注意(此脚本不能以root用户身份运行)

我想在一个脚本中自动化并调用它,这个脚本也是用相同的用户登录名编写的

但当我使用下面的
system
命令从脚本调用它时,它被称为根,脚本无法执行。如何保留用户会话以执行

system("/opt/SMAW/SMAWsuf/bin/displayPD -n Node03 >> /tmp/HP_Details.txt");

如何将其称为sufuser并执行它?

如果您的程序以root用户身份运行,您可以随意更改进程的实际(
$
)UID。出于您的目的,更改EUID就足够了:

use v5.12;

say "euid: $>";
system('whoami');
# switch user
$> = 1000; 
say "euid: $>";
system('whoami');
# switch back
$>=$<; 
say "euid: $>";
system('whoami');

唯一的方法是以root用户身份运行perl脚本。但是作为另一个用户运行命令的最简单方式是通过
su
sudo
。感谢以上输入。
$ sudo perl uidtest
euid: 0
root
euid: 1000
ben
euid: 0
root