Изменяем порядок старта /etc/rc.d/ssh

По умолчанию, sshd стартует чуть ли не одним из последних (в том числе после squid’a, samb’ы, spamd и других демонов). Если на каком-то этапе один из таких демонов будет ожидать ввода пользователя, получим нерабочую систему, с невозможностью зайти удалённо. Почему так происходит? Ответ, оставлю цитатой юзера Eugene Grosbein:

Проблема, действительно, есть. Осложняется текущей политикой: при повышенном securelevel система должна пускать локальных юзеров уже после того, как запущены все сервисы, см. комментарии в /etc/rc.d/LOGIN

В Porters Handbook сказано, что практически все сервисы, запускаемые портами,
должны использовать REQUIRE: LOGIN, если нет особых причин делать иначе.
squid в том числе использует REQUIRE: LOGIN.

Получается конфликт зависимостей: при повышенном securelevel нельзя пускать юзеров
до старта сервисов, но надо запустить sshd до старта squid. Можно было бы выделить
новый класс сервисов, которые таки можно запускать после LOGIN и переместить
в него squid, но заставить всех маинтейнеров портов разом переделать свои порты нереально.

Более реально создать новый барьер SLOGIN по типу LOGIN, для того чтобы
критические скрипты типа fsck/mount/syslogd запускались до него и sshd был бы предпоследним из них, а последним securelevel. А остальные, включая все те, что REQUIRE: LOGIN (squid и почти все остальные портовые), строго после нового барьера SLOGIN.

Предполагается, что большинство портовых сервисов можно запускать до разрешения
логина локальных пользователей, а исключениям можно будет прописать запуск до SLOGIN.

Только вот кто возьмется за анализ зависимостей существующих системных скриптов
в /etc/rc.d и корректно раскидает их на такие группы?

После некоторых обсуждений, «родился» вот такой патч:

--- /etc/rc.d/sshd 2014-12-22 15:12:14.000000000 +0200
+++ /etc/rc.d/sshd 2014-12-22 15:11:22.000000000 +0200
@@ -4,7 +4,8 @@
 #
 
 # PROVIDE: sshd
-# REQUIRE: LOGIN FILESYSTEMS
+# BEFORE: LOGIN
+# REQUIRE: DAEMON
 # KEYWORD: shutdown
 
 . /etc/rc.subr

Изменяем порядок старта /etc/rc.d/ssh: 2 комментария

  1. Сергей

    Я правильно понял можно просто добавить 2 записи в sshd и все?
    А зачем там упоминается /etc rc.subr?

    1. skeletor Автор записи

      Добавить 2, удалить 1.
      rc.subr — это часть системы запуска скриптов FreeBSD

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *