从网站杀死一个进程

2 php linux centos su kill-process

我有代码和一切:

     pkill python
Run Code Online (Sandbox Code Playgroud)

但是我想从这样的 php 脚本运行它:

  echo shell_exec("pkill python");
Run Code Online (Sandbox Code Playgroud)

我得到一个输出,上面写着:

bash: pkill: (1503) - Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我知道问题是什么,即 pkill 是 su 命令。无论如何要更改它以便php脚本可以运行它?

ibl*_*lue 6

问题是,您要杀死的进程不属于 apache 用户(apache 通常www-data与 group 一样运行www-data)。如果您授予 apache 更多权限(例如以用户身份运行root),您的 PHP 脚本将以更多权限运行并且可以执行此类操作。但这会很危险,因为如果 apache 或您的 php 脚本存在安全漏洞,恶意攻击者可能会接管您的系统。

相反,我建议使用setuid位。

  1. 创建一个kill.sh包含内容的文件pkill python
  2. 使其可执行 ( chmod a+x kill.sh)
  3. 使其属于根 ( chown root:root kill.sh)
  4. 设置为 setuid ( chmod u+s kill.sh)
  5. 从您的 php 脚本调用此脚本