如何使用exec PHP关闭Ubuntu

Dom*_*iik 0 php ubuntu exec

我真的需要用PHP exec关闭ubuntu.但我可能在获得许可时遇到了一些问题.

echo exec('whoami')
Run Code Online (Sandbox Code Playgroud)

返回'没人';

所以我放入了控制台

adduser nobody admin
Run Code Online (Sandbox Code Playgroud)

并尝试过

exec("shutdown -h now");
Run Code Online (Sandbox Code Playgroud)

但它不起作用;(

Pek*_*ica 10

为用户提供PHP作为root权限运行是非常危险的.这根本不是一个好主意,因为如果PHP脚本中的漏洞被利用,您将打开整个服务器.在生产服务器上,这绝对是不可接受的.

我知道安全执行此操作的唯一方法是让cron作业每分钟都以root身份运行一个shell脚本.shell脚本测试是否存在文件shutdown_now.txt.如果文件存在,脚本将启动关闭过程.如果有这样的指示,PHP脚本会创建关闭文件.

我不太熟悉shell脚本提供一个例子,但我确信有人可以在必要时使用.

  • 便利胜过安全。好的。 (2认同)

小智 9

实际上Pekka给了你一个很好的建议.在你的php文件中创建一个强制重启的文件,这很简单

  $file = fopen('.reboot-server',"w");
  fwrite($file, 'reboot');
  close($file);
Run Code Online (Sandbox Code Playgroud)

制作一个将检查该文件的bash脚本

#!/bin/bash
if [ -f /var/www/html/.reboot-server ]; then
  rm -f /var/www/html/.reboot-server
if [ -f /var/www/html/.reboot-server ]; then
   echo "Can't remove file .reboot-server"
else
  /sbin/shutdown -r now
fi
fi
Run Code Online (Sandbox Code Playgroud)

并在cronjob下添加它

*/1 * * * * root /home/scripts/reboot.sh
Run Code Online (Sandbox Code Playgroud)