繁体   English   中英

通过 Web 浏览器 (PHP) 重新启动 Linux 服务器

[英]Restarting a Linux Server via Web Browser (PHP)

在打开并阅读 Google 上的每个结果后,我想是时候在某个地方创建自己的主题了。 很抱歉,我需要问一个之前已经问过的问题,我对此再怎么强调都不为过,但我别无选择,因为没有其他问题可以帮助我实现我的目标。

我正在尝试通过由 HTML(用于按钮/文本)和 PHP(用于执行上述功能)支持的 Web 界面来设置重新启动/执行其他系统功能的方法。

我无法让它工作。 我读过我需要将网络用户添加到 sudoers 文件中,我已经尝试过了。 我在我的服务器上运行 Nginx,在我的情况下如何将用户添加到 sudoers?

另外,我知道安全风险。

以下是我到目前为止所拥有的:

HTML (index.html):

<body>

<h3>Restart</h3>
<p>
<form action="restart.php" method="get">
  <input type="submit" value="Press me.">
</form>
</p>

</body>

PHP(重启.php):

<?php
echo "This is a test";
echo "<br>";
echo "<br>";
echo shell_exec('ifconfig');
echo "<br>";
echo "<br>";
echo "Restarting server...";
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
shell_exec("/sbin/reboot");
exec("/sbin/reboot");
system("/sbin/reboot");
?>

请注意,在这里,我只有这么多事情要尝试执行,所以我确保在其中一项工作时命中目标,如果这有意义的话。 IFConfig 只是一个测试,以确保它确实能够执行。

苏多尔:

# User privilege specification
root    ALL=(ALL:ALL) ALL
www-data reboot = NOPASSWD: /sbin/reboot

这一切都在 Ubuntu 14.04 LEMP 上。

您可以通过编辑您的 sudoers 文件来做到这一点:

苏多尔:

www-data ALL=(root) NOPASSWD: /sbin/reboot 

一个 ALL 用于主机名,如果您的主机名不是“重启”,我建议您保留 ALL,因为它可以在任何主机名中工作 这就是为什么它似乎在您的服务器上不起作用的原因

重启.php

exec('sudo /sbin/reboot');

或者不编辑您的 sudoers 文件。

  • 首先创建一个文件,您将在其中存储您的 root 密码

〜/密码

myrootpassword
  • 第二次运行你想要的任何命令,同时从 php 文件中获取 root 权限(不要忘记指定存储密码的文件)

phpfile.php :

exec('sudo -u root -S /sbin/reboot < ~/password');
 www-data reboot = NOPASSWD: /sbin/reboot

这意味着您在运行 sudo 时不需要密码,而不是在该用户运行时该命令以 sudo 身份运行。

答案是使用sudo /sbin/reboot作为命令

你可以用腻子。 我认为使用 php 不是一个好计划。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM