首页 > 解决方案 > 使用 html 按钮运行 sudo 命令

问题描述

对于我的覆盆子项目,我想托管一个简单的网站,其中包含一些可以运行 sudo 命令的 html 按钮。我试过这个方法:

<?php
    if (isset($_POST['button']))
    {
         exec('sudo reboot');
    }
?>
<html>
<body>
    <form method="post">
    <p>
        <button name="button">Run</button>
    </p>
    </form>
</body>
</html>

并将 www-data 添加到 sudo 组,并确保 sudo 登录不需要密码,并在我的 sudoers 文件中替换此行

%sudo   ALL=(ALL:ALL) NOPASSWD: ALL

但是不执行任何命令,甚至不执行非 sudo 命令。

标签: phphtmllinuxraspberry-pi

解决方案


这可能失败的原因有很多。我不会在这里提供所有这些的详细信息,而是简要介绍一下:

  • 您的应用程序不仅受文件系统权限的限制。尝试禁用 apparmor
  • 您的 sudoers 文件上的权限可能是错误的。它必须由 root:root 拥有并具有权限位 0400
  • 您的 PHP 代码可能正在运行 chroot 环境。检查输出is_readable('/usr/bin/sudo');
  • Soething else -exec('touch /tmp/test1');然后尝试exec('sudo touch /tmp/testroot');- 查看文件的创建以及它们的所有者

推荐阅读