PHP:如何检测用户是否为root / sudo?

时间:2014-01-02 17:16:13

标签: php linux root sudo

我有一个命令行PHP脚本,需要在Linux系统上使用root级别权限运行。

在我们旧的旧版Redhat Enterprise 2 Linux发行版中,此代码有效:

// If we are linux, make sure we're root
if ($bIsLinux && $_ENV['USER'] != 'root')
    die("This script must be run as root.\n");

但是,我们已经升级了服务器,现在是现代版的Linux(亚马逊Linux)。哪个好,但上面不再适用。在AML上,您实际上没有root密码,但您可以从ec2-user sudo。我甚至尝试过sudo -i,但这并没有改变环境变量 - 因此上面的代码失败了。

因此,在继续之前,我需要一种新的方法来确保根级权限。

有人有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:9)

使用posix_getuid,您可以检查用户是否是root用户。

<?php
    if (posix_getuid() == 0){
        echo "This is root !";
    } else {
        echo "This is non-root";
}
?>

0是root,其他任何东西都不是。

答案 1 :(得分:5)

尝试http://uk3.php.net/posix_getuid并检查它是否返回零。如果是的话,那就是root。如果不是,则是其他用户