Является /etc/rc.local хорошим местом для запуска скрипта, прежде чем какой-либо (обычный) пользователь сможет войти в систему?

У меня есть Ubuntu 14.04 Server, который во время загрузки должен синхронизировать некоторые вещи по сети, прежде чем любой обычный пользователь сможет войти в систему (через ssh).

Мне было интересно, правильно ли стоит сценарий /etc/rc.local ?

Глядя на комментарий этого скрипта:

Этот скрипт выполняется в конце каждого многоуровневого уровня запуска.

Похоже, он вызывается после того, как система готова принять логины от пользователей.

Вот как я понимаю «в конце каждого многоуровневого уровня».

Я видел ответ здесь: Цель и типичное использование /etc/rc.local , я все же нашел это немного двусмысленным.

ОБНОВИТЬ

Еще немного контекста присвоено: это автоматизированный процесс, в котором пользователь на самом деле много компьютеров, опросив сервер для входа в систему ….

  • Ubuntu: после обновления проводная сеть нестабильна
  • Одноранговое хранилище локальной сети
  • Предложение названия пакета в Fedora
  • восстановление данных после частичного измельчения
  • Почему Debian Bug-Squash занимает много времени по сравнению с Ubuntu?
  • Как тусклый экран, даже если искусственно, ниже минимума?
  • Что установил nginx?
  • Есть ли способ сообщить о неправильных попытках входа в Ubuntu 12.10?
  • 4 Solutions collect form web for “Является /etc/rc.local хорошим местом для запуска скрипта, прежде чем какой-либо (обычный) пользователь сможет войти в систему?”

    Обычно /etc/rc.local является допустимым параметром, но он также зависит от объема работы, связанной с «синхронизацией некоторых вещей» и важности того, что пользователи не могут войти в систему до того, как это действие завершится.

    Если вы хотите убедиться, что синхронизация завершилась до входа в систему, вы можете рассмотреть один из двух вариантов «nologin».

    1. Напишите сценарий, который устанавливает оболочку входа (определенной группы пользователей) в /usr/sbin/nologin перед синхронизацией и восстанавливает ее после синхронизации.

    2. Создайте пустой файл /etc/nologin перед синхронизацией с помощью touch /etc/nologin и удалите его после синхронизации. Обратите внимание, что этот параметр может легко заблокировать вас, если вы отключили вход в систему с правами root через SSH, поскольку он запрещает вход в систему всех учетных записей, отличных от root.

    Для описанного вами случая вызов сценария синхронизации из /etc/rc.local является допустимым решением. Это то, с чем я, вероятно, тоже поеду, хотя есть, несомненно, другие решения, которые придумали бы другие люди.

    Он выполняется после всех «встроенных» сценариев запуска rc, но перед приглашением на вход в консоль. Однако имейте в виду, что пользователи смогут войти в систему через SSH до rc.local . Если это вызывает беспокойство, вы можете поместить свой скрипт в последовательность запуска после запуска сети, но до запуска SSH. Причина, по которой я все еще буду использовать rc.local и не беспокоиться о перемещении ее местоположения, заключается в том, что время между запуском демона SSH и пользователями, реализующими систему, доступно, по всей вероятности, намного дольше, чем требуется системе для запуска и выполнения rc.local script.

    Похоже, он вызывается после того, как система готова принять логины от пользователей. Вот как я понимаю «в конце каждого многоуровневого уровня».

    Нет, /etc/rc.local выполняется при загрузке системы. (При входе пользователя в систему с помощью ssh он установит среду и запустит сценарии из /etc/profile ~/.bashrc , прочитайте эту страницу для получения дополнительной информации.)

    Мне было интересно, правильно ли стоит сценарий /etc/rc.local?

    Да, ты можешь

    Я бы лично пошел с решением Джона, но вы также можете установить последовательность запуска, чтобы в самом начале (около символических ссылок S01) она запускала эту команду:

     echo "Please try to log in later" > /etc/nologin 

    Затем /etc/rc.local :

     /root/yourscript.sh rm -f /etc/nologin 

    Наличие файла /etc/nologin предотвращает вход в систему пользователя, не /etc/nologin пользователем root, либо из SSH, либо из консоли. Это гарантирует, что пользователи не войдут в систему до завершения вашего скрипта.

    Linux и Unix - лучшая ОС в мире.