gpt4 book ai didi

php - 如何从 PHP 以 root 权限运行 shell 脚本?

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:50 24 4
gpt4 key购买 nike

我正在尝试使用 vpopmail 的 vadddomain 添加新的虚拟域。由于 apache 用户无法访问 vpopmail 的二进制文件,因此我无法直接从 PHP exec('../bin/vadddomain...')

我制作了一个 shell 脚本 (adddomain.sh),如下所示:

#!/bin/bash
cd /home/lxadmin/mail/bin
./vadddomain $1 postmaster_password

并使用 visudo 将此行附加到 /etc/sudoers(暂时忘记安全性):

ALL ALL=NOPASSWD: /home/lxadmin/mail/bin/adddomain.sh

我的 PHP 脚本中有这样的东西:

exec('sudo /home/lxadmin/mail/bin/adddomain.sh example.com', $output);

但这根本不起作用(域 example.com 不会添加到 vpopmail)。但是当我通过 SSH 并使用 root 用户运行这个命令时,它起作用了。

谁能告诉我这里的问题是什么?

最佳答案

这应该可以通过将 webmaster-user 添加到 /etc/sudoers 文件中并简单地接受该用户使用您愿意使用的命令来实现。我不建议直接在你的 php 中使用 sudo 命令,因为你可能必须将密码存储在某个地方,当然你不希望这样!您不希望在某个地方或其他您不希望对您的代码拥有 root 权限的开发人员意外发布您的密码。

仅使用 root 命令的另一个大缺点是,当您的代码中存在安全漏洞时,我可以通过表单等方式运行 sudo 命令。对权限要非常小心。

附言。我是 SSH 的新手,也是设置用户权限的新手,所以如果我错了,请纠正我。但这就是我所知道的。

关于php - 如何从 PHP 以 root 权限运行 shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14030230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com