将有效uid重置为root失败

时间:2015-02-25 20:04:21

标签: perl

我有一个以root身份运行的linux perl程序。它运行一些DBD :: Pg代码,它不能以root身份运行,而是作为另一个具有ident身份验证的用户运行。我不能使用密码验证或类似的东西。

我使用$>切换到其他用户。问题是我需要返回root继续处理。 $> = $<然后当我尝试返回root的有效uid时失败。我认为这只是因为非root用户没有权限切换到root。

有人能提出合理的选择吗?

1 个答案:

答案 0 :(得分:2)

我会分叉这个过程。更改子进程中的用户。

my $pid = fork;
die "error with fork" unless defined $pid;
if ($pid) {
    waitpid($pid);
} else {
    $>=2;
    eval {
        print qx(whoami),"\n";
    };
    exit();
}