запуск команды csf из php не как root

1

Я пытаюсь запустить следующую команду 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-скрипта?

Большое вам спасибо.

  • 1
    Войдите в командную строку и su как тот же пользователь, с которым работает apache, затем выполните ту же команду. Что происходит?
  • 0
    ОТЛИЧНЫЙ ВОПРОС (один, который я должен был попробовать, спасибо) - результаты: sh: / usr / sbin / csf: В доступе отказано
Показать ещё 3 комментария
Теги:
centos

1 ответ

0

я верю, что теперь у меня это работает, спасибо всем тем, кто сказал выше:

$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
  • 1
    Попытка реализовать это, и он работал отлично. Однако я обнаружил, что, поскольку вы используете sudo, часть '-u root -s' в $ csfcommand не нужна.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню