【问题标题】:PHP: How to detect if user is root/sudo? [duplicate]PHP:如何检测用户是否是 root/sudo? [复制]
【发布时间】:2014-01-20 04:53:56
【问题描述】:

我有一个命令行 PHP 脚本,需要在 Linux 系统上以根级权限运行。

在我们旧的 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 (Amazon Linux)。这很好,但以上不再有效。在 AML 上,您实际上没有 root 密码,但您可以从 ec2-user 执行 sudo。我什至尝试过sudo -i,但这并没有改变环境变量——因此上面的代码失败了。

所以在继续之前我需要一种新的方法来确保 root 级别的权限。

有人有什么想法吗?

谢谢!

【问题讨论】:

标签: php linux root sudo


【解决方案1】:

尝试http://uk3.php.net/posix_getuid 并检查它是否返回零。如果是这样,它是根。如果不是,就是其他用户

【讨论】:

    【解决方案2】:

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

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

    0 是 root,其他都不是。

    【讨论】:

    • 请不要使用== 0 tho,如果您在检查过程中遇到错误并返回FALSE 或NULL,它仍将被视为0-ish 并说“root”。在这里使用=== 0
    猜你喜欢
    • 2013-03-21
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2013-10-17
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多