Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Redaktsia_4_UP_Linux_-_Osnovnaya_chast.doc
Скачиваний:
57
Добавлен:
06.11.2018
Размер:
2.02 Mб
Скачать

1.2. Процедура регистрации и ее безопасность

После окончания загрузки операционной системы процесс init запускает несколько экземпляров процесса getty (get tty – получить терминал), обслуживающего физические консоли либо псевдотерминалы. О терминалах и терминальном режиме будет рассказано ниже. Действия этого процесса во многом определяются объявлением и значениями параметров в конфигурационном файле /etc/login.defs. Далее описываются действия, выполняемые программой по умолчанию.

Пользователь по приглашению процесса getty вводит свое регистрационное имя. Getty в свою очередь запускает дочерний процесс login, передавая ему имя учетной записи в качестве аргумента. Программа проверяет файл /etc/passwd на предмет наличия соответствующей учетной записи, но не информирует пользователя об ошибках. Сделано это, по-видимому, для того, чтобы не позволить злоумышленнику точно определить имена зарегистрированных пользователей и тем самым облегчить проникновение в систему. Если проверка идентификатора и пароля прошла неудачно, управление будет возвращено программе getty, которая вновь запросит регистрацию в консоли.

Поиск имен производится в первых полях учетных записей файла /etc/passwd до первого совпадения. Если введенное имя пользователя совпадает с учетным, а второе поле найденной записи окажется пустым, читаются идентификаторы UID и GID в третьем и четвертом полях, после чего аутентификация считается успешно завершенной. Login запускает процесс командной оболочки, указанный в последнем поле соответствующей строки файла /etc/passwd, и передает ей управление. Командный интерпретатор /bin/bash использует сценарии /etc/profile, .bash_profile, .bash_login, .profile в домашнем каталоге пользователя (если такие файлы существуют) и выводит предусмотренное настройками приветствие пользователю с приглашением для ввода команд. Обычно у носителя нулевого UID последним символом в строке приглашения является #, а для всех остальных пользователей выводится символ $. Если администратор считает этот признак демаскирующим, он может изменить строку приглашения командой

export PS1=...

либо переписать переменную окружения PS1 в сценарии /etc/profile или в одном из конфигурационных файлов ~/.bash_profile, ~/.bash_login, ~/.profile, ~/.bash_logout.

При совпадении имен и наличии во втором поле установленного признака пароля :х: программа login запрашивает у пользователя пароль. Если учетное имя не совпадает, либо во втором поле присутствует иной символ, либо пароль оказался неверным, пользователь извещается о некорректной попытке входа в систему. После некоторой паузы программа login вновь предложит посетителю зарегистрироваться. Количество повторов, а также тайм-аут на ввод пароля устанавливаются в файле /etc/login.defs. При исчерпании числа повторов посетителю необходимо перезагрузить операционную систему, однако на персональном компьютере с эмуляцией нескольких терминалов ничто не мешает ему комбинацией клавиш <Alt+Fn> переключиться в иную виртуальную консоль и продолжить попытки входа.

Вводимый пароль контрольными маркерами на экране не сопровождается, что заставляет пользователя быть внимательным и лишает случайного очевидца возможности узнать длину пароля. Последовательность символов пароля кратковременно фиксируется только в памяти процесса login, а клавиатурный буфер очищается. После завершения ввода и нажатия <Enter> вызывается функция криптопреобразования, а ее результат сравнивается с содержимым второго поля учетной записи, расположенной в файле /etc/shadow. При совпадении двух хэш-значений – вычисленного и эталонного – аутентификация считается успешно завершенной. Программа login вызывает командную оболочку и передает ей управление. Что характерно – при отсутствии в 7-м поле учетной записи имени командного интерпретатора он все равно будет загружен. Эксперименты показывают, что для успешной аутентификации учетная запись пользователя в /etc/passwd должна содержать как минимум первые четыре первых поля: символьный идентификатор, признак пароля, UID и GID, а в /etc/shadow – два первых поля.

Иногда в процессе отладки системы у администратора может возникнуть потребность временно запретить регистрацию новых пользователей. Это можно сделать, создавая файл /etc/nologin. Содержимое этого файла значения не имеет, он даже может быть пустым. Такой файл создается командой

touch /etc/nologin

Пока существует этот файл, ни один новый пользователь, кроме администратора, не сможет войти в систему. Как только необходимость запрета доступа пропадет, администратор должен удалить этот файл.

Результат будет зависеть от используемого загрузчика операционной системы и параметров, установленных в его конфигурационном файле. Так, описанный в [3, 13] доступ осуществляется в ходе стандартной загрузки компьютера с использованием штатного загрузчика LILO и конфигурационного файла lilo.conf. Приглашение к прерыванию загрузки пользователем предусмотрено в lilo.conf в параметре prompt. Приглашению к вводу команды выглядит так

LILO:

Во время тайм-аута необходимо успеть нажать любую клавишу. После этого система остановит загрузку и будет ожидать окончания ввода. Неверно введенный символ можно исправить. Далее следует ввести такую команду

linux init=/bin/bash

При этом вместо процесса /sbin/init запускается командная оболочка с полномочиями администратора. Значительная часть процессов еще не запущена, а файловая система доступна только для чтения. В таком режиме файлы с учетными записями модификации не подлежат. Поэтому далее в командной строке предлагается ввести следующую команду

mounto remount,rw /

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

После этого можно редактировать файл паролей, например, с помощью редактора vi:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]