加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 添加到sudoers.d的脚本不是以root身份执行的

发布时间:2020-12-13 22:54:07 所属栏目:PHP教程 来源:网络整理
导读:在xubuntu框中,我有以下脚本让 PHP创建我的用户拥有的目录: ?phpif(!isset($_REQUEST['path'])) die('No path specified');$path = $_REQUEST['path'];$res1 = shell_exec("sudo mkdir -p $path");$res2 = shell_exec("sudo chown -R majid:majid $path");v
在xubuntu框中,我有以下脚本让 PHP创建我的用户拥有的目录:

<?php
if(!isset($_REQUEST['path'])) die('No path specified');
$path = $_REQUEST['path'];
$res1 = shell_exec("sudo mkdir -p $path");
$res2 = shell_exec("sudo chown -R majid:majid $path");
var_dump($res1,$res2);
?>

该脚本位于/var/www/path/to/mkdir.php中

我还将此文件添加到/etc/sudoers.d/grantmkdir,其中包含以下内容:

www-data ALL=(ALL:ALL) NOPASSWD: /var/www/path/to/mkdir.php

我已将文件chmoded到0440.从浏览器访问mkdir.php,var转储的输出为NULL NULL,并且不创建任何目录.我究竟做错了什么?

解决方法

你的设置有点混乱.

当您从浏览器访问此脚本时,apache会使用www-data用户启动它.

Sudo没有被执行.你不能让apache通过sudo调用你的脚本.
您必须将敏感脚本包装到sudo调用中.

例如这样:

创建两个脚本.第一个将由apache调用,第二个将由第一个通过sudo调用.

first.php:

<?php
if(!isset($_REQUEST['path'])) die('No path specified');
$path = $_REQUEST['path'];
// By the way here you should verify the path! Otherwise malicious users can make your system execute whatever they want...
shell_exec("sudo /var/www/path/to/second.php " . $path);
?>

second.php

#!/usr/bin/php
<?php
shell_exec("sudo mkdir -p " . $argv[1]);
shell_exec("sudo chown -R majid:majid " . $argv[1]);
?>

并使second.php可以通过sudo执行:

/etc/sudoers.d/second

www-data ALL=(ALL:ALL) NOPASSWD: /var/www/path/to/second.php

这样apache将启动first.php,它将使用sudo启动second.php.

您可以测试sudo设置是否正常工作,登录到您的服务器,切换到www-data(su www-data).并手动运行脚本.

一些附注:

>检查错误日志可能很有用. (tail / var / log / apache / error_log或stg类似)
>不要忘记验证您的输入,否则您的系统将容易受到攻击.此问题的详细信息和解决方案:http://php.net/escapeshellarg
> NULL NULL可以正常.详情:http://php.net/shell_exec

Note:

06003

failures using this function. exec() should be used when access to the program exit code is required.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读