Что это за программа? Основная ее задача — убить все текущие процессы и запустить другие, соответствующие новому режиму выполнения. Например, вы работали на 3 уровне (полный многопользовательский режим) и хотите перейти на 1 (однопользовательский). Как это происходит? Все программы многопользовательского режима завершаются, а потом активизируются только те процессы, которые соответствуют однопользовательскому режиму, и ничего лишнего в памяти не должно быть. Именно это и делает программа /etc/rc.d/rc.
Перейдите в папку /etc/rc.d/и посмотрите на ее содержимое. Помимо программы, здесь есть каталоги с именами rcX.d
, где X
— это число от 0 до 6, соответствующее уровню выполнения. В каждой папке есть файлы, имена которых начинаются с буквы "K" или "S". При выходе с уровня выполняются все файлы первого типа, они уничтожают все запущенные на нем процессы. А при входе на уровень выполняются файлы на букву "S", которые активизируют все необходимые процессы данного уровня.
Таким образом, система может обезопасить себя тем, что на одном уровне будут работать только те программы, которые должны быть в однопользовательском режиме, и многопользовательское вторжение становится невозможным при правильном конфигурировании скриптов, запускающих и останавливающих процессы. Конечно же, вручную править скрипты не приходится, и система следит за файлами без нас, но знать о такой особенности загрузки вы должны. Например, вы хотите, чтобы какой-то демон не запускался при старте системы на третьем уровне. Для этого можно просто удалить соответствующий файл из каталога /etc/rc.d/rc3.d, или сделать так, чтобы его имя не начиналось с букв "S" или "K".
В каталоге /etc/rc.d/init.dнаходятся скрипты, которые запускают, останавливают или перезапускают сервисы в системе. Именно эти файлы используются при переходе с одного уровня на другой.
Очень интересной является строка:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Она выполняется на любом уровне, потому что второй аргумент отсутствует. Третий параметр равен ctrlaltdel
. Это значит, что по нажатию клавиш ++ будет выполнена указанная команда. В большинстве ОС такая комбинация используется для перезагрузки системы. Какая директива выполнится в Linux? Это /sbin/shutdown -t3 -r now
. Мы уже знаем, что команда shutdown
с ключом -r
— это перезагрузка. Параметр -tX
задает время задержки, где X
— количество секунд до рестарта.
Получается, что по нажатию клавиш ++ запустится директива, требующая через три секунды перезагрузить систему.
Теперь посмотрим на строку, которая будет выполнена при сбое питания:
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
Строка выполняется на любом уровне. Здесь снова участвует команда shutdown
, но теперь с другими ключами:
□ -f
— отменяет проверку диска fsck;
□ -h
— указывает на необходимость выключения питания;
□ +2
— задает время в минутах до перезагрузки;
□ далее идет в кавычках сообщение, которое появится на каждой консоли. В графическом режиме все пользователи увидят окно с предупреждением такого же содержания.
Обратите внимание, что время до перезагрузки 2 минуты. Это очень мало, т.к. простые источники бесперебойного питания могут продлить работу компьютера до 20 минут. А если учесть, что серверы чаще всего стоят без монитора или, в крайнем случае, с выключенным дисплеем, то жизнь сервера может быть продлена до 40 минут. Значение в две минуты явно занижено, и я рекомендую проверить документацию на ваш источник бесперебойного питания и увеличить тайм-аут, чтобы сервер не ушел в перезагрузку раньше времени.
Теперь посмотрим, что происходит при восстановлении питания:
pr:12345:powerokwait:/sbin/shutdown -с "Power Restored; Shutdown Cancelled"
Команда выполняется на уровнях с 1 по 5 и отменяет перезагрузку. На 0 и 6 уровнях, когда уже начался процесс выключения системы или рестарт, аннулировать что-либо уже поздно.
Отмена происходит вызовом команды shutdown
с ключом -с
, после чего идет текст сообщения о том, что питание восстановилось, и можно работать.
Теперь посмотрим на следующие строки:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
Здесь на шести терминалах (ttyX, где X — это номер терминала или виртуальной консоли) выдается сообщение на вход в систему. Это не есть хорошо, потому что хакер может воспользоваться любой консолью для проникновения в систему (в качестве администратора). Чтобы этого не произошло, можно запретить вход со всех терминалов, кроме одного. Для этого нужно заменить флаг respawn
на off
.
Читать дальше
Конец ознакомительного отрывка
Купить книгу