Автологин

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел советов


Пожалуйста приведите эту статью в соответствиe с wiki разметкой, и затем удалите {{Wikify}} из текста статьи


Практически "однопользовательские" машины становятся все обычнее по мере того, как все больше людей используют GNU/Linux на собственных настольных компьютерах. Принятая в Linux система многопользовательской регистрации при входе в систему редко используется значительной долей новых пользователей. Обычным требованием стала такая конфигурация, чтобы при включении компьютера автоматически (без запроса регистрационного имени пользователя и пароля) загружалась бы настроенная под единственного непривилегерованного пользователя система.

Вопрос "Как это сделать?" задается столь часто, что меня удивляет не-написаность HOWTO по этому вопросу (ну, по крайней мере я такового не нашел). Данная статья ни в коей мере не претендует на полноту изложения, позволяющую восполнить этот пробел, но я надеюсь, что она сможет придать читателю верное направление:).

Создайте файл autologinfred.c в своем любимом текстовом редакторе и наберите эту короткую C-программу:

int main() {

  execlp( "login", "login", "-f", "fred", 0);

}

Системный вызов execlp выполнит команду "login -f fred" и заменит текущий контекст обработки на контекст этого вызова. Команда login --help покажет значение ключа -f. Откомпилируйте эту крошечную программу с помощью компилятора GNU C:

$ gcc -o autologinfred autologinfred.c

Получите права root'а (командой su) и скопируйте исполнимый файл в общедоступную директорию:

  1. cp autologinfred /usr/sbin/

Теперь взглянем на /etc/inittab. Этот конфигурационный файл используется init, самым первым процессом, который запускается при инициализации Linux. Вам должны попасться строки наподобие следующих:


1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3

Конкретное содержимое /etc/inittab варьирует от дистрибутива к дистрибутиву. В Debian-системах можно увидеть:

1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3

Измените строку, начинающуюся с "1:2345" так, чтобы она выглядела следующим образом:

1:2345:respawn:/sbin/getty -n -l /usr/local/sbin/autologinfred 38400 tty1

В результате пользователь fred будет зарегистрирован в системе на первой виртуальной консоли. В некоторых дистрибутивах GNU/Linux (например, в RedHat) должен использоваться /sbin/agetty. Ключ -l <альтернативная программа регистрации в системе> заменяет используемую по умолчанию программу /sbin/login той, которую мы скомпилировали ранее. Ключ -n говорит getty не запрашивать регистрационное имя пользователя.

Адриан Дж. Чанг [Adrian J Chung]

Время, свободное от преподавания информационных технологий студентам Вест-Индийского Университета в Тринидаде [University of the West Indies, Trinidad], Адриан посвещает написанию системных скриптов для управления сетью Linux-машин. Или проводит эксперименты по взаимодействию различных интерпретируемых языков [scripting environments] с "самопальными" [home-brew] библиотеками визуализации и построения изображений [computer graphics renderers and data visualization].


Особые благодарности участникам форума http://www.linuxshop.ru/forum/


Оригинал: http://gazette.linux.ru.net/lg72/articles/rus-chung.html


[править] Альтернативный метод

Я расскажу о том, как автологинится в X сразу без промежуточного логина в консоль. Этот метод использует rc-скрипты специфичные для Gentoo, поэтому он не подойдёт для других дистрибутивов.

Для начала создадим скрипт /usr/bin/startxuser следующего содержания:

Файл: /usr/bin/startxuser
#!/bin/bash
su - fred -c "/bin/bash -lc startx"

Замените в этом скрипте fred на имя пользователя в вашей системе.

ВАЖНО: Вы должны поместить этот скрипт либо в директорию /usr/bin, либо в --- /usr/X11R6/bin. Дело в том, что rc-скрипт /etc/init.d/xdm, который мы будем использовать, ищет команду запуска X только в этих директориях.

Не забудьте сделать его исполняемым:

chmod ug+x /usr/bin/startxuser

Теперь, мы записывам startxuser в файл /etc/rc.conf в качестве переменной DISPLAYMANAGER:

Файл: /etc/rc.conf
...
# What display manager do you use ?  [ xdm | gdm | kdm | entrance ]
DISPLAYMANAGER="startxuser"
...

И осталось только прописать /etc/init.d/xdm в автозагрузку (если у вас это ещё не сделано):

rc-update add xdm default

Вот и всё! :-)

Личные инструменты