[英]How to run a shell script with root privileges from PHP?
我正在尝试使用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
( 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用户运行此命令时,它可以工作。
谁能告诉我我的问题是什么?
这应该可以通过将webmaster
-user添加到/etc/sudoers
文件并仅接受该用户使用您愿意使用的命令来实现。 我不建议直接在php中使用sudo命令,因为您可能必须将密码存储在某个地方,这当然是您不希望的! 您不想在不希望对代码具有root特权的地方或其他开发人员中意外地发布密码。
仅使用根命令的另一个大缺点是,当您的代码中存在安全漏洞时,我可以通过例如表单来运行sudo命令。 请特别注意特权。
PS。 我是SSH的新手,并且还设置了用户特权,因此如果我输入错误,请更正我。 但这就是我所知道的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.