我有一个以root身份运行的linux perl程序。它运行一些DBD :: Pg代码,它不能以root身份运行,而是作为另一个具有ident身份验证的用户运行。我不能使用密码验证或类似的东西。
我使用$>切换到其他用户。问题是我需要返回root继续处理。 $> = $<然后当我尝试返回root的有效uid时失败。我认为这只是因为非root用户没有权限切换到root。
有人能提出合理的选择吗?
答案 0 :(得分:2)
我会分叉这个过程。更改子进程中的用户。
my $pid = fork;
die "error with fork" unless defined $pid;
if ($pid) {
waitpid($pid);
} else {
$>=2;
eval {
print qx(whoami),"\n";
};
exit();
}