通过 PHP 执行 root 命令
您已经表达了在 CentOS 服务器上使用 PHP 代码以 root 权限执行命令的愿望。让我们探讨这个问题并提出潜在的解决方案。
问题:
您尝试使用 exec() 函数重新启动 sshd 服务,但它需要root 访问权限,未授予 Apache 用户。虽然您尝试过使用 root 权限运行 Apache 或修改 sudoers 文件等解决方案,但它们并没有解决问题。
使用二进制包装器的解决方案(带有 Suid 位):
设置所有权和权限: 确保 root 用户拥有该脚本并具有以下权限:
创建二进制包装器:创建一个二进制包装器,它将以 root 权限执行 shell 脚本。这是一个示例包装器:
# cat > wrapper.c <<CONTENT #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main (int argc, char *argv[]) { setuid (0); system ("/bin/sh /path/to/php_shell.sh"); return 0; } CONTENT
编译并设置权限:编译二进制包装器并使用 suid 位设置它:
这个 php_root 包装器将在调用时以 root 权限执行 php_shell.sh 中指定的命令。
替代解决方案:
而不是使用外部 shell 脚本,您可以将命令直接嵌入到二进制包装器中。只需将步骤 3 中的内容替换为您想要以 root 权限执行的命令即可。
注意:
必须使用要执行的脚本的绝对路径防止恶意用户利用二进制文件执行任意命令。
以上是如何在 CentOS 上从 PHP 执行 root 命令?的详细内容。更多信息请关注PHP中文网其他相关文章!