Getty linux что это

Обновлено: 03.07.2024

A getty is the generic name for a program which manages a terminal line and its connected terminal. Its purpose is to protect the system from unauthorized access. Generally, each getty process is started by systemd and manages a single terminal line.

Contents

Installation

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

agetty is the default getty in Arch Linux, as part of the util-linux package. It modifies the TTY settings while waiting for a login so that the newlines are not translated to CR-LFs. This tends to cause a "staircase effect" for messages printed to the console. Agetty manages virtual consoles and six of these virtual consoles are provided by default in Arch Linux. They are usually accessible by pressing Ctrl+Alt+F1 through Ctrl+Alt+F6 .

Add additional virtual consoles

Open the file /etc/systemd/logind.conf and set the option NAutoVTs=6 to the number of virtual terminals that you want at boot.

If you wish to start one temporarily, you can start a getty service at the desired TTY by typing:

Automatic login to virtual console

Configuration relies on systemd drop-in files to override the default parameters passed to agetty.

Configuration differs for virtual versus serial consoles. In most cases, you want to set up automatic login on a virtual console, (whose device name is ttyN , where N is a number). The configuration of automatic login for serial consoles will be slightly different. Device names of the serial consoles look like ttySN , where N is a number.

Tip: Consider using greetd's auto-login feature. It will not auto-login a second time if the initial session exits, but will show a login screen instead.

Virtual console

Create a drop-in snippet for getty@tty1.service with the following contents:

Tip: The option Type=idle found in the default getty@.service will delay the service startup until all jobs (state change requests to units) are completed in order to avoid polluting the login prompt with boot-up messages. When starting X automatically, it may be useful to start getty@tty1.service immediately by adding Type=simple into the drop-in snippet. Both the init system and startx can be silenced to avoid the interleaving of their messages during boot-up.

If you do not want full automatic login, but also do not want to type your username, you can replace --autologin username with --skip-login --login-options username .

If you want to use a tty other than tty1, see systemd FAQ.

Serial console

Create the following file (and leading directories):

Nspawn console

To configure auto-login for a systemd-nspawn container, override console-getty.service :

If machinectl login my-container method is used to access the container, also add --autologin username to container-getty@.service template that manages pts/8 pseudo ttys:

Prompt only the password for a default user in virtual console login

Getty can be used to login from a virtual console with a default user, typing the password but without needing to insert the username. For instance, to prompt the password for username on tty1 :

Have boot messages stay on tty1

By default, Arch has the getty@tty1 service enabled. The service file already passes --noclear , which stops agetty from clearing the screen. However systemd clears the screen before starting it. To disable this behavior, create /etc/systemd/system/getty@tty1.service.d/noclear.conf :

Допустимые аргументы зависят от того, какой getty вы используете:
Для getts с прямым подключением лучше всего подходят два:

  • agetty (иногда его называют getty): очень легко настроить. Нет конфигурационных файлов. Смотри agetty
  • getty (часть getty_ps)

Два gettys лучше всего подходят для коммутируемых модемов (избегайте для напрямую подключенных терминалов):

  • mgetty: лучший для модемов; работает и для терминалов, но уступает
  • uugetty: только для модемов; часть пакета getty_ps

Простые gettys для использования, если вы не используете настоящий текстовый терминал. Большинство пользователей Linux используют один из них на своем мониторе:

Ваш дистрибутив Linux может поставляться с ps_getty или agetty для текстовых терминалов. Некоторые дистрибутивы не предоставляют ни того, ни другого. К сожалению, они часто просто называют его «getty», поэтому вам может понадобиться определить, какой из них у вас есть, так как аргументы, которые вы указали после него в/etc/inittab, отличаются. Debian использует agetty (в пакете util-linux). RedHat и Fedora использовали ps_getty, который находится по адресу: ps_getty

В качестве последнего средства, чтобы попытаться определить, какой у вас getty, вы можете проверить его исполняемый код (обычно в/sbin). ps_getty имеет/etc/gettydefs, встроенный в этот код. Чтобы найти его, перейдите в/sbin и введите:
strings getty | grep getty
Если getty на самом деле agetty, то приведенное выше ничего не даст. Однако, если вы наберете agetty:
getty -h
должны отобразить опции [-hiLmw].

Если у вас нет нужного вам getty, проверьте другие дистрибутивы и программу alien для конвертации пакетов RPM и Debian. Исходный код может быть загружен с Getty Software.

Если вы не используете линии управления модемом (например, если вы используете только минимальное количество из 3 проводников: передача, прием и общая сигнальная земля), вы должны сообщить об этом getty, используя флаг «local». Формат этого зависит от того, какой getty вы используете.

Getty выходит после входа в систему (и может возродиться)

После входа в систему вы заметите (используя «top», «ps -ax» или «ptree»), что процесс getty больше не выполняется. Что с ним случилось? Почему getty перезапускается снова, если ваша оболочка убита? Вот почему

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

Теперь в файле/etc/inittab getty должен возродиться (перезапуститься), если его убили. Так говорится в строке, которая вызывает getty. Но если оболочка bash (или процесс входа в систему) убита, getty респаунится (перезапускается). Зачем? Ну, и процесс входа в систему и bash являются заменой для getty и наследовать

* Указатель с текстовым терминалом

сигнальные соединения устанавливаются их предшественниками. Фактически, если вы наблюдаете детали, вы заметите, что процесс замены будет иметь тот же идентификатор процесса, что и исходный процесс. Таким образом, bash является замаскированным видом с тем же идентификатором процесса. Если bash убит, это как если бы getty был убит (хотя getty больше не работает). Это приводит к возрождению getty.

При выходе из системы все процессы на этом последовательном порте уничтожаются, включая оболочку bash. Это также может произойти (если включено), если сигнал зависания отправляется на последовательный порт при падении напряжения DCD модемом. Выйти или выйти из DCD приведет к возрождению getty. Можно заставить getty возродиться, вручную убив bash (или войдя в систему), либо нажав клавишу k и т. Д., Находясь в «top» или с помощью команды «kill». Скорее всего, вам придется убить его с помощью сигнала 9 (который нельзя игнорировать).

Если getty запускается из командной строки: программы останавливаются

Обычно вы должны запускать getty из /etc/inittab , а не из командной строки, иначе некоторые программы, запущенные на терминале, могут быть неожиданно приостановлены (остановлены). Вот почему (перейдите к следующему разделу, если почему не важно для вас). Если вы запустите getty, скажем, для ttyS1 из командной строки другого терминала, скажем, tty1, то у него будет tty1 в качестве «управляющего терминала», хотя фактическим терминалом, на котором он работает, является ttyS1. Таким образом, он имеет неправильный управляющий терминал. Но если он запускается внутри файла inittab, то в качестве управляющего терминала он будет иметь ttyS1 (правильно).

agetty (может быть назван getty)

Пример строки в/etc/inittab:

Автоопределение проблем паритета в Agetty

четности. Неправильная подсказка удержит посетителей и т. Д. От попыток войти в систему. Это может быть именно то, что вы хотите.

Иногда возникает проблема с автоматическим определением четности. Это происходит потому, что после того, как вы сначала ввели свое имя для входа, agetty запускает программу входа, чтобы завершить вход в систему. К сожалению, программа входа в систему не может определить четность, поэтому, если программе getty не удалось определить четность, то логин не сможет определить это тоже. Если первая попытка входа в систему не удалась, вход в систему позволит вам повторить попытку и т. Д. (Все с неправильной четностью). В конце концов, после нескольких неудачных попыток входа в систему (или после истечения времени ожидания) agetty снова запустится и начнёт повторять последовательности входа снова. После того, как getty снова запустится, он сможет определить паритет со второй попытки, поэтому все может работать нормально.

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

Попасть в «цикл входа в систему» ​​можно разными способами. Предположим, вы вводите только одну или две буквы для своего имени для входа, а затем нажимаете клавишу возврата. Если этих букв недостаточно для определения четности, то вход в систему выполняется до обнаружения четности. Иногда эта проблема возникает, если терминал не включен и/или не подключен при первом запуске agetty.

getty (часть getty_ps)

(В основном это из старого Serial-HOWTO Грега Ханкинса).
Для этого getty нужно как поместить записи в файл конфигурации, так и добавить запись в/etc/inittab. Вот несколько примеров записей для вашего терминала, которые вы поместили в файл конфигурации/etc/gettydefs.

Обратите внимание, что DT38400, DT19200 и т. Д. Являются просто метками и должны совпадать с тем, что вы используете в/etc/inittab.

Если вы хотите, вы можете сделать getty print интересными вещами в баннере входа. В моих примерах у меня напечатаны имя системы и серийная строка. Вы можете добавить другие вещи: [blockquote

Когда вы закончите редактирование/etc/gettydefs, вы можете проверить правильность синтаксиса, выполнив:

Убедитесь, что нет другого конфигурационного файла getty или uugetty для последовательного порта, к которому подключен ваш терминал, например (/etc/default/ndomuu‹getty.ttySN или /etc/conf.ndomuu broadcastgetty.ttySN), так как это, вероятно, помешает запуску getty на терминале. Удалите такие конфликтующие файлы, если они выходят.

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

НАЗВАНИЕ
getty - установка типа терминала, его характеристик и режима работы с линией

ОПИСАНИЕ
Программа getty запускается процессом init(1M) и обслуживает вторую стадию процедуры входа пользователя в систему (init - getty - login - shell). Программа getty может быть выполнена только суперпользователем, то есть процессом, имеющим в качестве идентификатора пользователя root. Сначала getty выводит на экран поле приглашения из используемой строки файла /etc/gettydefs, затем читает входное имя пользователя и запускает программу login(1), передавая ей это имя в качестве аргумента. Во время чтения имени getty пытается приспособиться к типу и скорости терминала, используя аргументы командной строки.

Аргументам программы getty приписан следующий смысл:

линия Имя терминальной линии, к которой программа getty должна подключиться; используется как имя файла в каталоге /dev. Этот файл открывается на чтение и запись.

-h Если опция -h не указана, то getty принудительно освободит линию, установив скорость передачи равной нулю, и только затем установит подразумеваемую или заданную скорость.

-t время_ожидания Программа getty завершится, если файл, соответствующий линии, будет успешно открыт, но в течение указанного времени_ожидания (в секундах) в линию не поступит ни одного символа.

скорость Необязательный аргумент - метка описания скорости и характеристик терминала в файле /etc/gettydefs. Это описание дает getty информацию о начальной скорости, о виде приглашения при входе в систему, о начальных характеристиках терминала, а также о том, какую скорость попробовать, если данная не удовлетворила пользователя (о чем он сообщил, нажав клавишу прерывания). Подразумеваемая скорость - 300 бод.

тип_терминала Необязательный аргумент - цепочка символов, задающая тип терминала, подсоединенного к линии. Программа getty распознает только один тип - none (который является и подразумеваемым), что означает любой терминал, неизвестный системе. Чтобы тип_терминала играл какую-либо роль, в систему должны быть включены подпрограммы обслуживания виртуальных терминалов. Они доступны, но по умолчанию в систему не включаются.

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

Если не указан ни один из необязательных аргументов, программа getty устанавливает скорость в 300 бод, бесструктурный режим (реакция на каждый символ), без отображения вводимых символов, без контроля четности, символы перевода строки будут заменяться последовательностью (возврат каретки, переход к новой строке) и символы табуляции будут заменяться пробелами при выдаче их на стандартный вывод. Затем getty выдает приглашение и приступает к посимвольному вводу входного имени пользователя. Если будет получен символ с нулевым кодом (или произойдет нарушение протокола), делается вывод, что пользователь нажал клавишу прерывания. В результате getty произведет попытку использовать следующее значение скорости из серии доступных значений, определенных в файле /etc/gettydefs.

Ввод входного имени пользователя должен завершаться нажатием клавиши перевода строки или возврата каретки. В последнем случае устанавливается соотвестствующая трактовка системой символа возврата каретки [см. ioctl(2)].

Имя пользователя просматривается на предмет наличия в нем малых букв; если таковых нет и имя не пусто, система в дальнейшем будет преобразовывать все большие буквы в малые.

Наконец, программа getty выполняет системный вызов exec(2) и заменяется программой login с входным именем пользователя в качестве аргумента. После имени пользователя могут быть введены дополнительные аргументы, которые будут переданы программе login, и та поместит их в окружение [см. login(1)].

getty - программа, которая обслуживает процесс входа в систему, когда вы регистрируетесь на Unix машине. Вы должны будете использовать getty, если хотите звонить модемом на вашу Linux машину. Вы не должны использовать getty, если вы хотите только звонить наружу вашим модемом. Имеются три версии, которые обычно используются в Linux: getty_ps, mgetty и agetty. Синтаксис для этих программ отличается, так что убедитесь, что вы проверили и удостоверились, что вы используете правильный синтаксис для того getty, которым пользуетесь.

О getty_ps

Большинство дистрибутивов приходит с установленным пакетом getty_ps. (Debian использовал agetty, но теперь использует mgetty). Он содержит две программы: getty - используется для консоли и устройств терминала, и uugetty для модемов. Я использую эту версию getty, так что на него я и буду ориентироваться.

О mgetty

mgetty - версия getty, главным образом для использования с модемами. Она может использоваться для аппаратных терминалов, но документация приблизительно на 99%, связана с модемами. В дополнение ко входу в систему по телефонной линии, mgetty также обеспечивает поддержку факсов и автоматическое обнаружение PPP. Документация по mgetty (поставляется в формате texinfo) достаточно хороша, и не нуждается в дополнении.

О agetty

Agetty - третья разновидность getty. Это простая полнофункциональная реализация getty, которая больше подходит для виртуальных консолей или терминалов, чем для модемов.

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

Когда ваша Linux система загружается, настраиваются только ttyS, используя значения по умолчанию IRQS 4 и 3. Так что, если у вас есть любые другие последовательные порты, обеспеченные другими платами или если ttyS имеют необычный IRQ, то вы должны использовать setserial, чтобы сконфигурировать эти последовательные порты. Полный список опций есть в man.

Читайте также: