Я пытаюсь запустить следующую команду csf изнутри php-скрипта:
$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 . . . .
любые идеи, как я могу запустить команду csf изнутри php-скрипта?
Большое вам спасибо.
я верю, что теперь у меня это работает, спасибо всем тем, кто сказал выше:
$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
su
как тот же пользователь, с которым работает apache, затем выполните ту же команду. Что происходит?