从php运行csf命令而不是root

时间:2015-11-20 18:19:47

标签: php bash apache centos

我正在尝试从php脚本中运行以下csf命令:

$ipNbr = 199.231.184.25 ;   // for example
$csfCommand = 'sudo  /usr/sbin/csf  --tempdeny ' . $ipNbr . ' 3600;'  ;    
$csfResult = shell_exec($csfCommand) ;  

$csfResult = exec($csfCommand) ; // i also tried exec rather than shell_exec

到目前为止,它根本不做任何事情,包括返回任何类型的错误/诊断消息。在我的日志文件中,我看到:

[Fri Nov 20 13:28:13 2015] [error] [client 66.201.41.254] sh: /usr/sbin/csf: Permission denied

我在visudo中放置了以下一行:

visudo ;
marksdomain.com    ALL=(ALL)       NOPASSWD: /usr/sbin/csf

我已经尝试了我能想到的每一种组合:

/bin/sudo  /usr/sbin/csf    . . . . 
sudo  /usr/sbin/csf     . . . . 
/usr/sbin/csf     . . . .
csf     . . . .

任何想法如何从PHP脚本内部启动csf命令?

非常感谢你们。

1 个答案:

答案 0 :(得分:1)

我相信我现在已经开始工作,完全归功于上述所有善意和耐心的评论:

$csfCommand = '/usr/bin/sudo  -u root  -s  /usr/sbin/csf  --tempdeny ' . $ipNbr . ' 3600;'

visudo命令:

marksDomain(dot)com   ALL=(ALL:ALL)   NOPASSWD:       /bin/sh
marksDomain(dot)com   ALL=(ALL:ALL)   NOPASSWD:       /usr/sbin/csf