繁体   English   中英

如何从PHP以root特权运行shell脚本?

[英]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/sudoersvisudo忘记安全性):

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM