Автоматический вход в систему при загрузке


Введение

Часто люди не хотят чтобы их домашний компьютер спрашивал логин и пароль при каждой загрузке. Настроить автоматический логин можно по разному. Некоторые Display Manager'ы "умеют" делать автологин "из коробки", в некоторых случаях настройка автологина может оказаться нетривиальной для пользователя. Данный документ описывает один из множества способов настройки автоматического логина в систему.

Сбор информации, вводные данные

Предположим что мы хотим настроить автологин для юзера username. С именем юзера определились, осталось выяснить его shell:

$ grep username /etc/passwd|sed 's/.*://'
/bin/zsh

Таким образом выяснили что у пользователя в качестве shell установлен zsh. Вариант с bash так же будет рассмотрен в данном документе. С другими shell-ами аналогично, нужно только посмотреть имя конфигурационного файла для выбранного шелла в его документации.

Теперь выберем номер терминала для которого проведем данную настройку. В большинстве дистрибутивов как правило по умолчанию настраивается 6 терминал-мест (Ctrl-Alt-F1 -- Ctrl-Alt-F6), на седьмом как правило запускается Х-сервер, некоторые из остальных иногда используются для вывода логов (например 12-й).

Понажимайте Ctrl-Alt-Fxx и выберите свободный. В данном руководстве мы отключим шестое (/dev/tty6) терминал-место и вместо него настроим автологин.

Настройка

Открываем на редактирование скрипт-файл, который вызывается при логине в систему. Имя этого файла зависит от shell пользователя. Для варианта использования zsh имя этого файла будет - ~/.zlogin, если же в качестве shell используется bash, то имя этого файла будет ~/.bash_login. Если такого файла в Вашей домашней директории нет, создайте его.

Дописываем в этот файл в самый конец строки:

if test "$TTY" = "/dev/tty6"; then
  exec startx
fi

Небольшой коментарий

Как видно из скрипта, запуск X-сервера производится только если он запущен из шестой железной консоли. Если вы выбрали другую, то укажите соответствующий номер tty.

Внимание: В текущем варианте система конфликтует с display manager'ом (предполагается что после настройки он Вам станет не нужен). Если Вы хотите чтобы автологин работал независимо от DM (xdm, gdm, kdm), то вышеприведенные строки будут выглядеть несколько иначе:

if test "$TTY" = "/dev/tty6"; then
  exec startx -- :1
fi

То есть сервер будем запускать на "экране" 1 вместо экрана 0, где по умолчанию пускается *DM.

Тестируем

Перейдем в первую консоль (Ctrl-Alt-F1), залогинимся под root и остановим X-сервер:

/etc/init.d/xdm stop

Если вместо xdm использовался kdm ил gdm, то команда соответственно поменяется.

Перейдем теперь в шестую консоль (Alt-F6) и залогинимся как username. Должны запуститься X и оконный менеджер выбранный по умолчанию. Если по какой-то причине запускается "не тот" оконный менеджер, что Вам нужен, то Вы можете либо выбрать нужный из имеющихся альтернатив:

# update-alternatives --config x-window-manager

Либо просто прописать в Вашем ~/.xinitrc вызов нужного менеджера. Первый вариант - общесистемный, второй - уровня пользователя.

Внимание: Если в качестве консоли автологина Вы использовали несуществующую консоль (например девятую), то протестировать можно либо временно настроив ее по аналогии с 1-6, либо временно настроив запуск X на 6 (существующей) консоли, как описано выше.

Собственно автоматический логин

Когда предыдущие шаги сделаны, осталось настроить собственно логин. Для этого нам потребуется программа rungetty:

# apt-get install rungetty

После этого открываем на редактирование файл /etc/inittab, и находим в нем строки:

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

Эти строки отвечают за запуск шести "железных" консолей. Нам нужно заменить запись о шестой консоли (если Вы выбрали несуществующую, то соответственно добавить строку). Пишем вместо нее:

r6:23:respawn:/sbin/rungetty -u root tty6 -- login -f username

Сохраняем файл и просим init перечитать данный конфиг:

telinit q

Автоматически должен запуститься X-сервер. Так же он будет запускаться при каждом старте системы.

Использование

Теперь осталось удалить X display manager если Вы еще не сделали этого:

# apt-get remove xdm gdm kdm

и можно пользоваться :)

Примечания

Описанным способом можно настроить сколько угодно автологинов: для каждого выбираем терминал (/dev/tty), а так же каждому X-серверу назначаем уникальный экран (помните, startx -- :1? можно писать startx -- :2, startx -- :3 и так далее). Переключаться между несколькими X-серверами можно обычным способом, при помощи Ctrl-Alt-FXx.