2012-12-25 77 views
1

我正在尝试使用vpopmail的vadddomain添加新的虚拟域。由于apache用户无法访问vpopmail的二进制文件,我不能直接从PHP登录exec('../bin/vadddomain...')如何使用PHP的root权限运行shell脚本?

我做了一个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用户运行此命令时,它的工作原理。

任何人都可以告诉我这里有什么问题吗?

+0

'chmod + s'也许? –

+1

似乎simular:http://stackoverflow.com/questions/3173201/sudo-in-php-exec –

+0

@WaleedKhan哪个文件到底?顺便说一句''chmod'ed'adddomain.sh'和'vadddomain'和我的php文件没有运气:( –

回答

0

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

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

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

+0

我不关心se因为它是我工作的开发环境。我希望代码和权限只是简单的工作! –

+0

关于你提到的密码部分我想我可以使用无密码'sudo'来防止在代码中使用清除密码。 –

+0

你很担心,但你希望它很简单的工作。我认为你的意思是'我不关心安全......'? – Jelmer

相关问题