使用shell_exec()重启服务器?

use*_*422 1 php linux reboot su natty

我有一个128MB的VPS,偶尔也会变得杂乱无章.重新启动将解决问题,但如果我想从浏览器(密码保护页面)重新启动该怎么办.如何使用PHP的shell_exec()功能"www-data"重启我的机器(Natty Narwhal)?

我很困惑,因为它需要sudo.问题是我从未登录为www-data,它会是我的sudo密码吗?另外,我如何包含密码来执行此操作?

会使用root工作吗?如果是这样,我将如何从www-data做su?

new*_*rey 7

你是正确的,shutdown脚本需要执行root或sudo权限.如果您确实需要通过Web可访问页面重新启动服务器,则执行此操作的一种方法是添加www-data到sudoers列表,但用于访问shutdown命令.

编辑/etc/sudoers并添加以下行:

%www-data ALL=NOPASSWD: /sbin/shutdown
Run Code Online (Sandbox Code Playgroud)

该行允许该www-datasudo /sbin/shutdown 无需密码即可访问- 因此请确保您的Web可访问脚本不公开.

编辑sudoers文件后,您可以使用脚本中的以下内容重新启动:

shell_exec('sudo /sbin/shutdown -r now');
Run Code Online (Sandbox Code Playgroud)


Bar*_*mar 5

另一种方法是让根 cron 作业每隔几分钟运行一次,检查文件。如果找到该文件,则会将其删除并重新启动系统。您的网页只需要创建该文件。