2

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

我做了一个shell脚本(adddomain.sh)如下:

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

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

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 用户运行这个命令时,它可以工作。

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

4

1 回答 1

1

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

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

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

于 2012-12-25T11:49:52.500 回答