【发布时间】:2016-02-23 08:11:35
【问题描述】:
我正在尝试从 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 命令吗??
非常感谢大家。
【问题讨论】:
-
以与 apache 执行相同的用户身份登录命令行和
su,然后运行相同的命令。会发生什么? -
优秀问题(我应该尝试过的,谢谢) - 结果:sh: /usr/sbin/csf: Permission denied
-
那么你需要确保你解决了这个问题。
-
再次 - 很好的问题 - 我做了一些调整,并且确实能够从以该特定用户身份登录的命令行执行此操作,但是我仍然无法从 apache 内部执行此操作。还要注意,我做了一个“whoami”只是为了验证用户名是否匹配。
-
您的问题之一似乎是您尝试以
sudo的身份执行,但您无权以 Apache 用户的身份执行 sudo。