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

DOO*_*iac 4 php linux sudo root

我有一个命令行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");
Run Code Online (Sandbox Code Playgroud)

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

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

有人有主意吗?

谢谢!

And*_*ndy 11

使用posix_getuid可以检查用户是否是root用户.

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

0 是根,其他任何事都不是.

  • 请不要使用`== 0`,如果你在检查过程中遇到错误并且返回FALSE或NULL,它仍然会被认为是`0-ish`并说“root”。此处使用 `=== 0` (2认同)

Ed *_*eal 5

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