Автологин
Материал из 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) и скопируйте исполнимый файл в общедоступную директорию:
- 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
Вот и всё! :-)
