我正在尝试使用vpopmail的vadddomain
添加新的虚拟域。由于apache
用户无法访问vpopmail的二进制文件,因此我无法直接从PHP exec('../bin/vadddomain...')
访问。
我制作了一个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用户运行此命令时,它可以工作。
谁能告诉我这里的问题是什么?
答案 0 :(得分:1)
这应该可以通过将webmaster
- 用户添加到/etc/sudoers
文件中,并且只是接受该用户使用您愿意使用的命令。我不建议直接在你的php中使用sudo命令,因为你可能必须存储这个地方的密码,当然你不需要!您不希望在某个地方意外发布您的密码,或者您不希望对您的代码拥有root权限的其他开发人员。
简单地使用root命令的另一个重大缺点是,当您的代码中存在安全漏洞时,我可以通过例如表单运行sudo命令。对这些特权要非常小心。
聚苯乙烯。我是SSH新手并设置用户权限,所以如果我错了请纠正我。但这就是我所知道的。