Автоматический вход в систему при загрузке
Введение
Часто люди не хотят чтобы их домашний компьютер спрашивал логин и пароль при каждой загрузке. Настроить автоматический логин можно по разному. Некоторые 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.
