php - 使用 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 命令。
解决方案
这可能失败的原因有很多。我不会在这里提供所有这些的详细信息,而是简要介绍一下:
- 您的应用程序不仅受文件系统权限的限制。尝试禁用 apparmor。
- 您的 sudoers 文件上的权限可能是错误的。它必须由 root:root 拥有并具有权限位 0400
- 您的 PHP 代码可能正在运行 chroot 环境。检查输出
is_readable('/usr/bin/sudo');
- Soething else -
exec('touch /tmp/test1');
然后尝试exec('sudo touch /tmp/testroot');
- 查看文件的创建以及它们的所有者
推荐阅读
- react-native - 具有多点和周期标记样式的 React Native 日历
- android - 将波纹应用于自定义弹出菜单
- objective-c - NSOutlineView 列宽
- python - 将鼠标悬停在拖动条上并在 Python 中使用 Selenium-Webdriver 滚动
- r - dplyr 库中的 group_by 函数不起作用
- windows - 为什么批处理脚本不能与任务调度程序一起运行?
- reactjs - 反应路由器history.push没有加载预期的组件
- javascript - JSON文件中所有进程的PM2通用设置
- python - 在一排熊猫中找到不同的字符串
- laravel - 如何在表单请求验证 Laravel 中设置会话?