Фленов Михаил Евгеньевич - Linux глазами хакера стр 22.

Шрифт
Фон

Листинг 3.2. Файл настройки программы inittab

#

# inittab This file describes how the INIT process

# should set up

# the system in a certain run-level.

#

# Author: Miquel van Smoorenburg,

# <miquels@drinkel.nl.mugnet.org>

# Modified for RHS Linux by Marc Ewing and

# Donnie Barnes

#

# Default runlevel. The runlevels used by RHS are:

# 0 - halt (Do NOT set initdefault to this)

# 1 - Single user mode

# 2 - Multiuser, without NFS (The same as 3, if you do not

# have networking)

# 3 - Full multiuser mode

# 4 - unused

# 5 - X11

# 6 - reboot (Do NOT set initdefault to this)

# id:5:initdefault:

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit

# What to do in single-user mode.

~~:S:wait:/sbin/sulogin

10:0:wait:/etc/rc.d/rc 0

11:1:rwait:/etc/rc.d/rc 1

12:2:wait:/etc/rc.d/rc 2

13:3:wait:/etc/rc.d/rc 3

14:4:wait:/etc/rc.d/rc 4

15:5:wait:/etc/rc.d/rc 5

16:6:wait:/etc/rc.d/rc 6

# Things to run in every runlevel.

ud::once:/sbin/update

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed,

# assume we have a few minutes

# of power left. Schedule a shutdown for 2 minutes from now.

# This does, of course, assume you have powerd installed

# and your

# UPS connected and working correctly.

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in,

# cancel it.

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

# Run gettys in standard runlevels

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

# Run xdm in runlevel 5

# xdm is now a separate service

x:5:respawn:/etc/X11/prefdm -nodaemon

Файл начинается с комментария, в котором дана информация о модуле и авторе, затем - описание различных уровней, которые поддерживаются системой. В некоторых дистрибутивах их может быть от двух, a Red Hat Linux-подобные системы поддерживают целых семь. Рассмотрим каждый уровень:

□ 0 - остановка ОС;

□ 1 - текстовый однопользовательский режим, используется редко и только администраторами для выполнения критически важных изменений;

□ 2 - текстовый многопользовательский, локальный режим (нет поддержки сети);

□ 3 - текстовый многопользовательский, сетевой режим;

□ 4 - не используется, но в дальнейшем может быть задействован;

□ 5 - графический режим;

□ 6 - перезагрузка системы.

Пока что мы рассмотрели семь уровней. Есть еще уровень S, что соответствует однопользовательскому режиму, он применяется в файлах сценариев, но иногда присутствует и в inittab.

Теперь познакомимся со структурой файла. Каждая строка в нем (не считая комментариев и пустых строк) выглядит следующим образом:

идентификатор:уровни:флаги:действие

Строка состоит на четырех аргументов, отделенных между собой двоеточием. Давайте рассмотрим каждый параметр в отдельности:

идентификатор - уникальный номер строки, который имеет произвольное значение. Единственное ограничение - в файле не должно быть двух строк с одинаковыми идентификаторами;

уровни - режимы, в которых будет выполняться команда. Например, если ей надлежит работать на втором и третьем уровнях, то здесь должно стоять число 23. Это просто цифры 2 и 3, которые не разделяются пробелами или какими-либо другими знаками. Если команду нужно выполнять на любом уровне, то этот параметр должен быть пустым;

флаги - задает поведение команды, может принимать одно из следующих значений:

boot - выполняется только один раз при загрузке ОС. В этом случае параметр уровни просто игнорируется;

bootwait - равносильно указанию параметров boot и wait одновременно, т.е. выполнение должно быть во время загрузки ОС, и при этом нужно дождаться завершения операции;

ctrlaltdel - нажата комбинация клавиш <Ctrl>+<Alt>+<Del>. Случайных или незапланированных перезагрузок быть не должно. Наличие трех клавиш - это недостаток, потому что любой хакер может подойти и нажать их ради шутки или в корыстных целях. Я рекомендую отключить эту возможность, установив в начале строки знак комментария "#";

initdefault - строка с этим параметром читается только при первом обращении к init и определяет уровень загрузки. Если в этой строке будет стоять число 5, то ОС будет сразу в графический режим. Если вам нужно загрузить ОС в текстовый, многопользовательский режим с поддержкой сети, то измените значение параметра на цифру 3 (см. описание уровней загрузки). Можно указать несколько чисел (я не рекомендую этого делать), в этом случае будет выбрано максимальное;

off - отключить выполнение команды, что равноценно превращению строки в комментарий или даже удалению. Но если этот процесс уже работает, то ему передается сигнал, требующий завершения программы;

once - выполнять команду только один раз;

powerfail - отключение электроэнергии. Ошибку можно увидеть только при наличии источника бесперебойного питания, подключенного к компьютеру через специальный интерфейс (чаще всего через СОМ-порт);

powerokwait - подача электроэнергии возобновилась;

powerwait - система перешла в режим ожидания восстановления питания. Предполагается, что к компьютеру подключен источник бесперебойного питания, который сообщил об ошибке (отсутствии питания);

respawn - если во время выполнения произойдет ошибка, то повторить команду. Это бывает необходимо для критически важных программ, которые должны быть всегда в запущенном состоянии;

sysinit - такие команды выполняются перед тем, как появится консоль (приглашение ввести пароль). При этом ОС дожидается окончания выполнения команды;

wait - ожидать завершения процесса, а значит, программа init не будет выполнять других действий, пока не закончится выполнение команды, указанной в этой строке. Например, если нужно проверить состояние диска, то необходимо заморозить дальнейшую загрузку до окончания проверки;

Действие - команда, которая должна быть выполнена.

Теперь рассмотрим некоторые строки из листинга 3.2, чтобы понять их смысл и научиться управлять ими для повышения эффективности системы.

Самая первая строка после комментариев в нашем файле выглядит так:

id:5:initdefault:

Мы уже знаем, что параметр initdefault определяет, как будет загружаться система. В данном случае файл init будет выполняться с 5 уровнем, т.е. в графическом режиме.

Следующим интересным моментом являются строки:

10:0:wait:/etc/rc.d/rc 0

11:1:wait:/etc/rc.d/rc 1

12:2:wait:/etc/rc.d/rc 2

13:3:wait:/etc/rc.d/rc 3

14:4:wait:/etc/rc.d/rc 4

15:5:wait:/etc/rc.d/rc 5

16:6:wait:/etc/rc.d/rc 6

Как видите, здесь для каждого уровня своя строка, и при этом запускается один и тот же файл /etc/rc.d/rc, но после имени через пробел стоит число, соответствующее текущему уровню. Это параметр, который увидит программа /etc/rc.d/rc.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке