【问题标题】:running a csf command from php not as root从 php 运行 csf 命令而不是 root
【发布时间】: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。

标签: php bash apache centos


【解决方案1】:

我相信我现在可以正常工作了,这完全感谢上面所有善良和耐心的 cmets:

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

视觉:

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

【讨论】:

  • 尝试实现这一点,效果很好。但是我发现,由于您使用的是 sudo,因此不需要 $csfcommand 的“-u root -s”部分。
猜你喜欢
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 2012-09-01
  • 1970-01-01
相关资源
最近更新 更多