Добрый день.
У меня возникла необходимость осуществлять удаленный перезапуск apache.
В общем-то выполнить команду через SSH - не проблема.
Вопрос в другом. Как сделать "особого" пользователя, у которого не будет прав больше ни на что кроме перезапуска?
В идеале - хотелось бы чтоб он был вообще без shell.
Законектился на ssh, авторизовался, апач перезапустился, пользователя вылогинило.
Спасибо.
Перезапуск Apache по SSH
Модераторы: SLEDopit, Модераторы разделов
-
Alexxx
- Сообщения: 892
- Статус: --==XXX==--
- ОС: Archlinux current
Re: Перезапуск Apache по SSH
У мну навскидку два варианта.
1. Завести пользователя, дать ему права на перезапуск апача через судо. Автоматизировать процесс скриптом с использованием expect`a. В гугле по нему много инфы есть и куча примеров скриптов.
2. Использовать knock. Смысл работы в передаче определённой последовательности пакетов на определённые порты, после чего, если пакетики совпали, выполняется определённое действие, которое прописывается в конфиг.
Второй вариант проще имхо.
1. Завести пользователя, дать ему права на перезапуск апача через судо. Автоматизировать процесс скриптом с использованием expect`a. В гугле по нему много инфы есть и куча примеров скриптов.
2. Использовать knock. Смысл работы в передаче определённой последовательности пакетов на определённые порты, после чего, если пакетики совпали, выполняется определённое действие, которое прописывается в конфиг.
Второй вариант проще имхо.
-
cleg
- Сообщения: 39
Re: Перезапуск Apache по SSH
1. Завести пользователя, дать ему права на перезапуск апача через судо. Автоматизировать процесс скриптом с использованием expect`a. В гугле по нему много инфы есть и куча примеров скриптов.
вот это и надо. пользователя завел, судо настроил. теперь мне надо бы сделать так, чтоб этот пользователь больше ничего не мог седалть кроме перезапуска апача.
есть мысль попробовать прописать ему в качестве шела /sbin/sudo /etc/init.d/apachectl restart
но будет ли это работать?
knock - не подходит.
$2b or (not $2b)=$ff
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Перезапуск Apache по SSH
будет.
вообще лучше наврено вынести команду в скрипт, а его - в качестве шела.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Frank
- Сообщения: 1059
- ОС: Ubuntu, Debian
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Перезапуск Apache по SSH
может. привожу кусок с одного своего сервера:
Код: Выделить всё
konata:~# getent passwd ssh-vpn.atlas
ssh-vpn.atlas:x:1001:1001::/opt/ssh-vpn.atlas:/opt/ssh-vpn.atlas/pppinit
konata:~# cat /opt/ssh-vpn.atlas/pppinit
#!/bin/bash
/usr/bin/logger $(whoami) connecting
#proxyarp ktune
/usr/bin/sudo /usr/sbin/pppd ipparam atlas noauth 10.10.40.1:10.10.40.2работает.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Frank
- Сообщения: 1059
- ОС: Ubuntu, Debian
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Перезапуск Apache по SSH
ничего не происходит.
скорее всего - это из-за pppd, который этот ctrl-z съедает. а, если бы не съедал - юзер бы просто вышел, т.к. pppd ушел в фон, а скрипт отработал и закончился.
вот тут я потыкал ctrl-z и ctrl-c:
(пришлось пароль юзеру поставить)
куча фигни на экране - результат работы pppd, который ожидал, что к нему подключится другой pppd, а не я с шелом.
скорее всего - это из-за pppd, который этот ctrl-z съедает. а, если бы не съедал - юзер бы просто вышел, т.к. pppd ушел в фон, а скрипт отработал и закончился.
вот тут я потыкал ctrl-z и ctrl-c:
(пришлось пароль юзеру поставить)
куча фигни на экране - результат работы pppd, который ожидал, что к нему подключится другой pppd, а не я с шелом.
Код: Выделить всё
rakul@kagami:~$ ssh konata -l ssh-vpn.atlas
ssh-vpn.atlas@konata's password:
Linux konata 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Oct 5 06:13:32 2009 from 195.201.73.149
~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~~�}#�!}!}!} }4}"}&} } } } }%}&uP��}'}"}(}"��~Connection to konata closed.
rakul@kagami:~$Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Frank
- Сообщения: 1059
- ОС: Ubuntu, Debian
Re: Перезапуск Apache по SSH
И всё же, я бы сделал по-другому.
После добавление в sudoers, дал бы доступ этому юзеру исключительно по ssh ключу (пароль заблокировал), и в публичный ключ на сервере добавил бы
(прямо перед сигнатурой, ssh-dss).
Таким макаром, при логине произошло бы выполнение сей команды и отсоединение сразу после завершения.
После добавление в sudoers, дал бы доступ этому юзеру исключительно по ssh ключу (пароль заблокировал), и в публичный ключ на сервере добавил бы
Код: Выделить всё
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/bin/sudo /usr/sbin/apache2ctl graceful"(прямо перед сигнатурой, ssh-dss).
Таким макаром, при логине произошло бы выполнение сей команды и отсоединение сразу после завершения.
