/etc/ttys


Файл /etc/ttys управляет тем, как и откуда пользователи могут входить в систему FreeBSD. При этом вы можете устанавливать ограничения для каждой отдельной учетной записи где-нибудь в другом месте, а в файле /etc/ttys перечислить устройства, с которых можно выполнять вход в систему, и указать, как эти устройства должны использоваться. Большинство пользователей могут входить только с консоли и по соединению SSH, но вы можете настроить и другие устройства, с которых можно будет выполнять вход.

Не забывайте: tty — это сокращение от teletype (телетайп). Когда-то телетайп был основным интерфейсом вывода информации для UNIX-подобных систем. Любое устройство, с которого можно выполнить вход, считается телетайпом. Система FreeBSD поддерживает самые разные типы терминальных устройств, от старомодных последовательных терминалов до современных консолей с клавиатурой, мышью и устройством отображения, а также сессии SSH и telnet. Системы FreeBSD предлагают четыре стандартных устройства входа в систему, или терминалы: консоль, виртуальные терминалы, коммутируемые терминалы и псевдотерминалы.

Консоль — единственное устройство, доступное в однопользовательском режиме. В большинстве систем FreeBSD это либо видеоконсоль, которая состоит из монитора и клавиатуры, либо последовательная консоль, доступная из другой системы. Как только система попадает в многопользовательский режим, консоль обычно подключается к виртуальному терминалу. Устройство консоли — /dev/console.

Виртуальный терминал подключен к физическому монитору и клавиатуре. Если вы не используете систему X Window, то можете организовать несколько терминалов на одном физическом терминале. Переключение между ними осуществляется нажатием клавиши Alt и одной из функциональных клавиш. В следующий раз, когда вы окажетесь за консолью, нажмите комбинацию клавиш Alt-F2. Вы должны увидеть новый экран входа в систему со строкой ttyv1 после имени хоста. Это второй виртуальный терминал. Нажатие комбинации Alt-F1 вернет вас обратно, в основной виртуальный терминал. По умолчанию в системе FreeBSD восемь виртуальных терминалов, а девятый зарезервирован для X Window. Вы можете использовать восемь виртуальных текстовых терминалов, даже работая в X, если некоторые окружения рабочего стола предоставляют несколько виртуальных терминалов. Виртуальным терминалам соответствуют устройства /dev/ttyv.

Коммутируемый терминал подключается к последовательной линии. Вы можете подключать модемы непосредственно к последовательным портам и позволять пользователям подключаться к своему серверу. В наши дни эта возможность используется редко, но аналогичная функциональность служит для поддержки входа в систему через последовательную консоль. Коммутируемым терминалам соответствуют устройства /dev/ttyd.

Наконец, псевдотерминалы — это полностью программная реализация. Для подключения к серверу через SSH вам не требуется специальное аппаратное обеспечение, а программному обеспечению по-прежнему необходим файл устройства для обеспечения сеанса входа. Псевдотерминалам соответствуют устройства /dev/ttyp.

Настройки доступа к терминальным устройствам находятся в файле /etc/ttys. Большинство терминальных устройств не требуют настройки — в конце концов, вы получили в свое распоряжение псевдотерминал лишь потому, что были аутентифицированы и авторизованы средствами SSH, telnet или какого-то другого сетевого протокола. В этом файле можно определять консоль для входа в систему и разрешать вход через последовательную консоль.

Формат /etc/ttys

Типичная запись в файле /etc/ttys выглядит примерно так:

ttyv0 "/usr/libexec/getty Pc" cons25 on secure

Первое поле — это устройство консоли, в данном случае — это первый виртуальный терминал в системе, ttyv0.

Второе поле — это программа, которая запускается для обслуживания процедуры входа с этого терминала. В системе FreeBSD вход с любого устройства, за исключением псевдотерминала, обслуживает программа getty(8). При получении запроса на вход псевдотерминалом вход в систему обслуживается каким-либо демоном.

Третье поле — тип терминала. Возможно, вам приходилось слышать о терминале vtlOO или даже о терминале Sun. В системе FreeBSD для монитора используется тип cons25, которому соответствует экран размером 25×80 символов. Для псевдотерминалов используется тип network; их особенности определяются демоном и клиентским программным обеспечением.

Четвертое поле определяет, доступен терминал для входа в систему или нет. Допустимы значения on — вход разрешен и off — вход запрещен. Псевдотерминалы активируются по запросу.

В этом примере есть еще ключевое слово secure, которое сообщает программе getty(8), что через эту консоль в систему может входить пользователь root.

Предоставление терминалов — это низкоуровневая задача, которую решает непосредственно процесс init(8). Изменения в /etc/ttys не вступят в силу, пока процесс init(8) не будет перезапущен. Идентификатор этого процесса всегда равен 1.

# kill -1 1

Небезопасная консоль

При загрузке в однопользовательском режиме вы получаете доступ к командной строке с привилегиями root. Это годится для ноутбука или для сервера в корпоративном вычислительном центре, а как быть с машинами, расположенными в местах, не вызывающих доверия? Если сервер установлен в объединенном информационном центре, вы едва ли захотите, чтобы кто-то мог получить доступ к машине с привилегиями root. В таком случае можно сообщить системе FreeBSD, что физическая консоль небезопасна и при входе с нее в однопользовательский режим необходимо требовать ввод пароля root. Система будет выполнять загрузку от включения питания до многопользовательского режима, не требуя ввести пароль, но потребует его, когда будет произведена попытка загрузиться в однопользовательском режиме.

Требование ввода пароля в однопользовательском режиме не защитит данные полностью, но существенно поднимет планку, которую нужно будет преодолеть. Отдельные сотрудники центра, работающие поздно ночью, когда их никто не видит, могли бы загрузить систему в однопользовательский режим и добавить учетную запись для себя всего за 15 минут или что-то около того. Разборка вашей машины, извлечение жестких дисков, монтирование их в другой машине, внесение изменений и возврат вашего сервера в работу отнимут гораздо больше времени, труда и, скорее всего, не пройдут незамеченными для сотрудников управления центром.

Найдите запись в файле /etc/ttys, соответствующую консоли:

console none         unknown off secure

Как видите, консоль — это не полноценный терминал, для нее не запускается программа getty(8) и используется универсальный тип терминала unknown. Консоль предназначена исключительно для работы в однопользовательском режиме или когда она подключена к другому терминалу, так что тут все в порядке.

Чтобы консоль запрашивала пароль root при загрузке в однопользовательском режиме, измените слово secure на insecure.

Вход по последовательной линии

В главе 3 мы говорили о последовательных консолях. Помимо консоли, FreeBSD предоставляет возможность входа в систему через последовательный порт. Во многих UNIX-подобных операционных системах 1970-1980-х это был единственный способ получить приглашение к входу. Сегодня он практически забыт благодаря вездесущей Сети, тем не менее, возможность входа в систему по последовательной линии очень полезна в системах, где уже имеется последовательная консоль в системах, не поддерживающих видеоконсоль. Системы без стандартного дисплея и клавиатуры называются автономными системами (headless systems).

Чтобы разрешить вход в систему по последовательной линии, отыщите в файле /etc/ttys запись, соответствующую последовательному порту. По умолчанию в конфигурации перечислены четыре коммутируемых терминала ttyd0-ttyd3. Эти записи соответствуют последовательным портам sio0-sio3, или СОМ1-СОМ4. Предположим, что последовательная консоль подключена к первому последовательному порту.

Настройка выполняется довольно просто. Порт отключен (1). Замените слово off на on.

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

Комментарии запрещены.