Файл /etc/rc.d/rc.local выполняется после скрипта rc. В исто рекомендуется помещать дополнительные сервисы или персональные настройки. Однако обычный пользователь редко использует эту возможность.
Другие файлы, влияющие на процесс загрузки
Все файлы конфигурации, задействованные при загрузке системы, находятся
в каталоге /etc:
• /etc/fstab – содержит информацию об автоматически монтируемых при старте файловых системах;
• /etc/skel – образцы файлов конфигурации, используются при создании учетных записей новых пользователей;
• /etc/bashrc – общесистемный файл для командной оболочки;
• /etc/initscript – файл, позволяющий задать специфические действия для каждой команды из файла /etc/inittab (подробную информацию следует искать в справочной системе).
Второстепенные файлы конфигурации:
• /etc/issue – сообщение, выдаваемое системой до приглашения "login: ";
• /etc/motd – сообщение, выдаваемое системой после регистрации пользователя.
Процессы, происходящие при регистрации пользователя
Последовательность событий при регистрации пользователя:
1. Пользователь вводит свое регистрационное имя (login) по приглашению "login: " процесса getty;
2. Процесс getty выполняет программу login, передавая программе login в качестве аргумента регистрационное имя пользователя;
3. Программа login запрашивает пароль и сверяет регистрационное имя и пароль пользователя с записанными в файле /etc/passwd (login) и /etc/shadow (пароль). При этом введенный пароль пользователя шифруется по специальному алгоритму (в последнее время чаще всего используется алгоритм MD5), и полученный результат сравнивается с зашифрованным паролем, хранящимся в /etc/shadow;
4. В случае, если регистрационное имя пользователя или пароль не совпали с хранящимся в системе, то после паузы (около 3 секувд, задержка настраивается) выводится сообщение Password incorrect. Программа login завершает свою работу, а процесс getty снова выводит приглашение "login: ";
5. Если проверка регистрационного имени и пароля пользователя прошла успешно, login выводит на экран из файла /etc/motd так называемое "сообщение дня";
6. После этого login запускает командную оболочку (shell), указанную в бюджете пользователя, и устанавливает переменную среды TERM;
7. Оболочка shell выполняет файлы, исполняемые при регистрации пользователя в системе, сперва общесистемные, а затем пользовательские (если это Bourne-shell, выполняется файл. profile, если C-shell —.login и. cshrc, если Korn-shell —.profile и. kshrc). В этих файлах можно указать специфические настройки пользователя, переменные окружения, запустить какие-то приложения. После этого shell выводит на экран приглашение и ожидает ввода информации.
Основные файлы, участвующие в регистрации пользователя
В регистрации пользователя участвуют следующие файлы:
• /etc/profile – общесистемный профильный файл, устанавливает пути и другие важнейшие переменные;
• /etc/passwd – различная регистрационная информация, такая как имя пользователя, группа пользователя, домашний каталог и командный интерпретатор;
• /etc/shadow – в определенной мере дублирует файл passwd, но его основное назначение – хранить пароли пользователей;
• /etc/bashrc – общесистемный файл конфигурации bash;
• /домашний каталог/.* – пользовательские файлы конфигурации.
Если требуется, чтобы при регистрации пользователя выполнялся какой-то скрипт или устанавливались переменные окружения, то для этого надо вызов данного скрипта поместить в ""/.profile или в. bash_profile.
Если необходимо, чтобы пользователь не мог отменить выполнение какого-то скрипта или команды при его регистрации в системе, то для этого следует вписать в./etc/profile следующее:
if test $USER = petya; then
echo Hello Petya!
#здесь запускается ваш скрипт
fi
Эти команды будут исполняться только при регистрации в системе пользователя petya.
Загрузка в однопользовательском режиме
Помимо стандартной загрузки, описанной ранее, можно заставить процесс init загрузить систему на уровне выполнения, отличном от загружаемого по умолчанию. Эта возможность крайне необходима в случае, когда у операционной системы есть проблемы. Это могут быть чьи-то неудачные эксперименты с файлом inittab или неправильно сконфигурированный процесс (например, если сеть нормально не настроена, sendmail пытается найти хост, которого нет. Это может привести к задержке при старте системы в 10 минут и более). При возникновении такой ситуации необходимо перевести систему в однопользовательский режим и решить проблему. Для этого в строку приглашения LILO (boot:) надо ввести аргументы single или emergency. Это позволит загрузить систему в однопользовательском режиме (уровень выполнения 1), при котором в системе работает только суперпользователь (root) и запускается очень небольшое число самых необходимых системных служб, включая login. Другим способом перевода системы в однопользовательский режим является применение команды teiinit, которая, собственно, является символической ссылкой на сам init. Команда teiinit, помимо перевода системы с одного уровня выполнения в другой, может заставить процесс init перечитать файл inittab без перезагрузки операционной системы.
Однопользовательский режим необходим для выполнения административных задач, таких как проверка и восстановление файловой системы. К примеру, запуск fsck в разделе /usr. Обычно необходимость перехода в однопользовательский режим возникает тогда, когда fsck не может автоматически восстановить файловую систему при загрузке. Такое случается редко, обычно при пропадании электроэнергии во время работы компьютера или выходе из строя жесткого диска.
Однако бывают случаи, когда в однопользовательском режиме загрузиться с жесткого диска невозможно. В этом случае можно загрузиться в однопользовательском режиме с дискеты или с CD-ROM. Такое может произойти в случае серьезного краха системы (что иногда бывает смертельно для информации на жестком диске) или когда, к примеру, при установке Windows переписывает MBR, и в результате уничтожается загрузчик LILO (разделы Linux и система жизнеспособны, только загрузить ее нечем). Более подробную информацию см. в гл. 40.
Из соображений безопасности правильно сконфигурированная система при загрузке в однопользовательском режиме запросит пароль пользователя root.
Существует еще один способ вмешаться в процесс загрузки. В процессе загрузки системы выдается сообщение Press «I» to enter interactive startup. Если вы нажмете клавишу <1>, система перейдет в режим пошагового выполнения загрузки сервисов (подобно нажатию клавиши <F8> в Windows и выбора режима загрузки step by step).
Это позволит отказаться от загрузки подозрительных (с вашей точки зрения) процессов и определить, при запуске какого процесса возникают неприятности.
Утилиты
Подводя итог, перечислим утилиты, участвующие в процессе загрузки системы:
• init – программа, управляющая загрузкой операционной системы;
• teiinit – утилита для управления процессом init;
• runlevel – выводит текущий уровень выполнения;
• linuxconf – утилита конфигурации операционной системы Linux. В том числе позволяет редактировать список сервисов, запускаемых в текущем уровне выполнения;
• ntsysv – консольная утилита для редактирования списка сервисов, запускаемых в текущем уровне выполнения;
• /usr/sbin/setup – консольная утилита для конфигурирования операционной системы;
• control-panel – графическая утилита для конфигурирования операционной системы.