| У Вас ошибка в курсе |
Основы администрирования системы
Другие файлы, влияющие на процесс загрузки
Кроме файлов /etc/inittab, /etc/rc.d/rc.sysinit, /etc/rc.d/rc, /etc/rc.d/rc.local на процесс загрузки (и, следовательно, формирующуюся в результате конфигурацию системы), оказывают влияние те скрипты и отдельные программы, которые вызываются из только что перечисленных файлов, а также некоторые чисто конфигурационные файлы. Рассмотреть их все невозможно, но о некоторых необходимо упомянуть.
Все важнейшие общесистемные конфигурационные файлы расположены в каталоге /etc и его подкаталогах. Приведем краткий список с указанием на роль некоторых из этих файлов в системе и ссылки на то, где искать более подробную информацию.
- /etc/lilo.conf - файл, определяющий конфигурацию загрузчика lilo (о структуре этого файла было сказано несколько слов в "Инсталляция ОС Linux на компьютер с Windows" );
- /etc/modules.conf (или /etc/conf.modules ) - файл, определяющий конфигурацию загружаемых модулей ядра (см. man-страницу по modules.conf );
- /etc/fstab - содержит информацию, необходимую для автоматического монтирования файловых систем (см. разд. 4.8 и разд. 8.3);
- /etc/passwd - различная регистрационная информация, включая пароли;
- /etc/profile - глобальный файл профилей - устанавливает переменную $PATH и другие важнейшие переменные; заглянув в него, вы увидите, что в нем вызываются все файлы из подкаталога /etc/profile.d, в частности, файл, задающий параметры локализации системы;
- /etc/bashrc - глобальный файл конфигурации bash, устанавливает синонимы (алиасы) и функции, и т.п.;
- /etc/issue - содержит сообщение, выдаваемое на терминал перед входом в систему (перед запросом имени и пароля); однако редактировать этот файл с целью изменения текста сообщения не стоит, потому что сам он формируется инициализационным скриптом /etc/rc.d/rc.local ;
- /etc/motd - устанавливает сообщение, выдаваемое пользователю после входа в систему (после правильного ввода пароля);
- /etc/redhat-release - содержит название и номер версии дистрибутива, используется скриптом rc.local.
Перечисленные выше конфигурационные файлы оказывают влияние на процесс загрузки системы и процесс входа в систему любого пользователя. Но существуют и такие файлы, которые влияют только на процедуры входа в систему отдельного пользователя, позволяют создать для него индивидуальную рабочую среду. Такие файлы будут рассмотрены в следующем разделе.
Процессы, происходящие при регистрации пользователя
Последовательность событий при полной регистрации выглядит так.
- Пользователь вводит регистрационное имя по приглашению login: процесса getty.
- getty выполняет программу login, используя в качестве аргумента указанное имя.
- login запрашивает пароль и сверяет имя и пароль с записанными в файле /etc/passwd.
- login выводит на экран из файла /etc/motd "сообщение дня".
- login запускает интерпретатор shell, указанный в бюджете пользователя и устанавливает переменную среды TERM.
- shell выполняет соответствующие файлы запуска, после чего выводит на экран приглашение и ожидает ввода информации.
О файлах запуска надо сказать несколько слов дополнительно. В домашнем каталоге пользователя находятся несколько личных файлов конфигурации. Если таких файлов в домашнем каталоге нет, то после входа в систему будут прочитаны глобальные файлы, содержащие значения "по умолчанию". Если в качестве оболочки используется Bourne-shell, выполняется файл .profile, если C-shell - .login и .cshrc, если Korn-shell - .profile и .kshrc (мы в дальнейшем рассматриваем только случай оболочки bash ).
Если вы хотите установить для себя переменные среды ( PATH или другие), отличающиеся от тех, которые по умолчанию задаются для всех пользователей, или вы хотите изменить сообщение, которое будет выдаваться вам после входа в систему, или хотите, чтобы после того, как вы войдете в систему, автоматически запускалась какая-то программа, вы можете сделать это с помощью следующих файлов:
/home/your_home/.bashrc - устанавливает ваши алиасы (т. е. псевдонимы или альтернативные имена команд, удобные для упрощения ввода часто используемых команд, имеющих значительную длину из-за большого количества опций) и функции;
/home/your_home/.bash_profile или /home/your_home/.profile - устанавливает переменные среды и запускает ваши программы.
Если такие файлы существуют (заметим, что это скрытые файлы), они будут считаны после входа в систему, и команды, записанные в них, будут выполнены.
Если вы хотите, чтобы при входе пользователя в систему выполнялся какой-то скрипт, то можно вызов этого скрипта поместить в файл ~/.profile. Это может сделать и сам пользователь.
Эти команды будут исполняться только при входе пользователя в систему. Можно, например, приветствовать каждого пользователя по имени или посылать индивидуальные сообщения:
if test $USER = jim; then echo 'Здравствуйте, уважаемый Jim!' fi
Загрузка в однопользовательском режиме
Процесс загрузки ОС, к сожалению, не всегда происходит так, как это задумано. Бывают случаи, когда система отказывается загружаться нормальным образом. Основные причины, приводящие к такой ситуации [П10.1]:
- неисправности аппаратных средств;
- дефектные блоки на диске, в частности, блоки, в которых находится программа-загрузчик или ядро системы;
- повреждения файловых систем;
- неверно сконфигурированное ядро (например, при попытках установить самостоятельно скомпилированную или экспериментальную версию ядра);
- ошибки в сценариях запуска (появившиеся, например, из-за того, что вы внесли в эти сценарии какие-то исправления).
Первое, что надо знать пользователю в таком случае - как войти в контакт с системой, заставить ее воспринимать команды, чтобы попытаться что-то исправить. Один из возможных вариантов действий в этом случае - попытаться запустить систему в однопользовательском режиме, т. е. с уровнем выполнения 1 (см. "Основы администрирования системы" ).
Обычно о необходимости перехода в однопользовательский режим говорит то, что fsck не может автоматически восстановить файловую систему при загрузке. В таких случаях бывает необходимо запустить fsck в разделе /usr, для чего требуется, чтобы раздел был размонтирован, а этого нельзя сделать, пока не будут отключены почти все системные службы. Тут-то и требуется перейти в однопользовательский режим, в котором запускается минимум служб и сервисов системы.
Вы можете заставить процесс init загрузить систему в однопользовательском режиме, если зададите в командной строке загрузки ядра (в ответ на приглашение LILO boot:) аргумент single или emergency. Точнее, в тот момент, когда на экране появится сообщение
LILO boot:
необходимо ввести
linux single root=/dev/hda1
где вместо /dev/hda1 надо, естественно, подставить имя раздела с корневой файловой системой. Эта команда подключит корневой раздел и переведет систему в однопользовательский режим. В этом режиме в системе работает только один пользователь - администратор и запускается только очень небольшое число самых необходимых системных служб (system services) - включая login. (Заметим в скобках, что другим способом перевода системы в однопользовательский режим является применение команды telinit, однако в рассматриваемой ситуации, когда не проходит загрузка, воспользоваться этим способом вряд ли удастся).
Из соображений безопасности нормально сконфигурированная система при загрузке оболочки в однопользовательском режиме запросит пароль пользователя root. Это очевидно, так как иначе злоумышленнику было бы очень легко, задав соответствующие аргументы загрузчику LILO, войти в систему как root со всеми вытекающими отсюда последствиями. Чтобы злоумышленники не могли воспользоваться загрузкой в однопользовательском режиме для входа в систему без пароля, в соответствующую секцию файла lilo.conf должны быть добавлены две строки:
restricted password=<password>
После выхода в оболочку вы сможете отменить те правки, которые привели к краху или предпринять какие-то другие действия по выходу из сбойной ситуации. В книге Д. Такета и С.Барнета [П1.9] сказано, что этот способ не работает, если корневой раздел находится на диске SCSI. Однако, возможно, это относится к старым версиям Linux, поскольку один из моих корреспондентов (Р.Сузи) уверяет, что со SCSI-дисками никаких проблем нет, и система грузится с них в любом режиме, лишь был бы доступен initrd. Ну, а если загрузиться в однопользовательском режиме все же не получается, можно попробовать загрузить систему с загрузочной дискеты, так что позаботьтесь о том, чтобы такая дискета у вас была.
Кстати, не дожидаясь возникновения чрезвычайных ситуаций, проверьте, как будет у вас проходить загрузка в однопользовательский режим и загрузка с аварийной дискеты. После этого, если неприятности все же возникнут, вы будете чувствовать себя значительно спокойнее.