我正在处理网页,单击按钮以超级用户身份运行文件。我正在尝试通过网页使用 python 脚本运行 mininet 拓扑。
<?php
$mininet='sudo python loadbalancing.py';
$python=exec($mininet);
echo $python;
?>
当我执行上述代码时,它没有返回任何内容。
但是当我执行下面的代码时,它返回 *** Mininet 必须以 root 身份运行。
<?php
$mininet='sudo python loadbalancing.py';
$python=exec($mininet);
echo $python;
?>
有人能帮帮我吗,如何通过网页运行 mininet python 脚本。
我已经通过“visudo”和 chmod 设置了超级权限,但仍然不起作用。在 visudo 中,我添加了以下内容。
%sudo ALL=(ALL) NOPASSWD: /var/www/html/loadbalancing.py
我已经设定
sudo chmod 777 loadbalancing.py
sudo chmod 755 loadbalancing.py
但仍然不起作用或无法执行网页中的python脚本。
注意:不要担心安全性,因为在此过程之前会有身份验证过程。
谢谢。
答案1
我在这里做了一些假设……我怀疑你的第二个代码粘贴应该与第一个代码粘贴相同 - 只是没有 sudo。这就是你收到“必须以 root 身份运行”错误的原因。我还怀疑你的第一个代码块没有返回任何内容,因为它卡在了交互式 sudo 密码提示符上。
我对 php 或 mininet 一无所知,但当我看到上面的代码片段时,我想知道运行脚本的用户帐户是否具有无需密码即可使用 sudo 的能力。例如,如果您的脚本以“myuser”身份运行,那么您需要在 /etc/sudoers 文件中添加类似以下内容:
myuser ALL=(ALL) NOPASSWD: ALL
如果没有“NOPASSWD”,您的服务就会卡在等待 myuser 的密码尝试 sudo 时。由于服务无法处理交互式提示,它会挂掉,您不会得到任何返回结果。
标准警告:无需密码的 sudo 很危险。除非您处于封闭的沙盒环境中,否则使用它根据网页上的用户输入运行任意命令是非常糟糕的。