| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование Web серверов и Web служб > нужно вызвать httpd graceful из скрипта |
| Автор: CTYDEHT 12.1.2006, 14:37 |
| Имеется скрипт perl, который должен перегрузить httpd.conf. Но при вызове system ("httpd graceful"); ничего не происходит, не ошибки, ни перезагрузки... Я думаю, может какая-то проблема с правами? |
| Автор: DENNN 12.1.2006, 16:19 |
| А почему не apachectl restart ? |
| Автор: CTYDEHT 12.1.2006, 17:56 | ||||||
DENNN, ну во первых вот например при таком вводе дает такой вывод, т.е. при запросе через SSH команды apachectl меня посылает на httpd и при вводе apachectl ничего не происходи и по больщому счету это то же самое.
А во вторых я попробовал вызвать apachectl restart через скрипт, но также ничего не произошло... а вот после вызова такого кода:
выдало такое:
С чего бы это? |
| Автор: CTYDEHT 13.1.2006, 18:06 |
| Существует ли возможность сделать так, чтоб какой-то определенный скрипт запускался от имени определенного пользователя (или скрипты определенного аккаунта на сервере), а все остальные по прежнему от nobody:nobody? Тогда я бы ског настроить sudo... |
| Автор: Sun 13.1.2006, 19:30 |
| Делаем так, в файле /etc/sudoers пишем nobody ALL = NOPASSWD:path_to_my_admin_script.pl the_secret_word Где path_to_my_admin_script.pl путь к скрипту который будет выполнять перезагрузку. В качестве параметра он будет прнимать секретное слово. Если оно будет равно the_secret_word, то производим перезагрузку, если нет то ничего не делаем. Дальше ты в своем CGI скрипте вставляешь вызов `sudo path_to_my_admin_script.pl the_secret_word` и радуешься жизни |
| Автор: CTYDEHT 14.1.2006, 13:39 |
| Попытался я настроить sudoers следующим образом nobody ALL=NOPASSWD: /usr/sbin/httpd graceful secword а мне выдало Sorry, sudo must be setuid root. Я подумал, что я сделал что-то не так, но то же сообщение было и после: nobody ALL=NOPASSWD: /usr/sbin/httpd graceful secword nobody ALL=NOPASSWD: /usr/sbin/httpd graceful nobody localhost=NOPASSWD: /usr/sbin/httpd graceful и даже после: nobody ALL=(ALL) ALL Люди, кто пользовался sudo, подскажите, в чем может быть косяк??? |
| Автор: CTYDEHT 15.1.2006, 19:47 |
| Проблема решилась. Спасибо всем, кто помог. Sudo не работал потому что не получал ID текущего юзера. Нужно было выставить права `chmod 4111 /usr/bin/sudo`. Тогда в sudoers нужно указывать не nobody, а имя юзера на чьем аккаунте выполняется скрипт. |