Подумал, что было бы неплохо использовать usb-flash (или SD-карту в ридере лэптопа) для авторизации на своих машинах без пароля. Сделать это оказалось очень просто.
Нужен пакет pam_usb, который скорее всего имеется в репозитории вашего дистрибутива.
Установим его.
Mandriva:
#urpmi pam_usb
Gentoo:
# echo "sys-auth/pam_usb" >> /etc/portage/package.keywords
# emerge -av ">=sys-auth/pam_usb-0.4.1"
Debian:
# apt-get install libpam-usb pamusb-tools
Из исходных кодов:
$ tar -zxvf pam_usb-
$ cd pam_usb-
$ make
# make install
Так же в процессе настройки понадобились пакеты python-dbus и pmount
#urpmi python-dbus pmount
После окончания установки подключаем USB-устройство (монтировать не надо) и используем pamusb-conf для добавления накопителя в конфигурационный файл:
# pamusb-conf --add-device usbkey
Please select the device you wish to add.
* Using "JetFlash TS2GJFV60 (XXXXXXXXXXXXXXXXXXXXXX)" (only option)
Which volume would you like to use for storing data ?
* Using "/dev/sda1 (UUID: 4871-9E7D)" (only option)
Name : usbkey
Vendor : JetFlash
Model : TS2GJFV60
Serial : XXXXXXXXXXXXXXXXXXXXXX
UUID : 4871-9E7D
Save to /etc/pamusb.conf ?
[Y/n] y
Done.
Вместо usbkey можно написать что угодно.
Теперь нужно добавить пользователей.
# pamusb-conf --add-user root
Which device would you like to use for authentication ?
* Using "usbkey" (only option)
User : root
Device : usbkey
Save to /etc/pamusb.conf ?
[Y/n] y
Done.
Таким же образом можно добавить остальных пользователей.
Проверим правильность настроек:
#pamusb-check root
* Authentication request for user "root" (pamusb-check)
* Device "usbkey" is connected (good).
* Performing one time pad verification...
* Regenerating new pads...
* Access granted.
Далее необходимо настроить систему таким образом, чтобы она обращалась к usb-устройствам для авторизации пользователя, а при отсутствии таковых - запрашивала пароль. В зависимоти от операционной системы, нужные файлы называются по-разному. Найдите в каталоге /etc/pam.d/ файл common-auth (Ubuntu, Debian) или system-auth (Gentoo, Mandriva). Если этих файлов нет, то придется вносить изменения в конфигурационный файл каждого сервиса, для которого будет действовать авторизация по USB-устройству.
В этом файле найдите строчку, похожую на эту:
auth sufficient pam_unix.so try_first_pass likeauth nullok
или
auth required pam_unix.so nullok_secure
и добавьте перед ней следующую строчку:
auth sufficient pam_usb.so
Проверим:
$ su
* pam_usb v0.4.2
* Authentication request for user "root" (su)
* Device "usbkey" is connected (good).
* Performing one time pad verification...
* Access granted.
В документации сказано, что этого достаточно, однако у меня KDM не принимал USB-накопитель вместо пароля. Пришлось внести изменения и в /etc/pam.d/kde3. Нужно точно так же добавить строчку
auth sufficient /lib/security/pam_usb.so
Теперь можно пробовать в KDE заблокировать сеанс (Ctrl+Alt+L) и разблокировать нажатием Enter.
В пакете pam_usb есть еще один инструмент - pamusb-agent. Это постоянно работающая программа, выполняющая определенные действия при подключении и отключении USB-ключа. В следующем примере при извлечении накопителя сеанс блокируется и запускается заставка:
GNOME (gnome-screensaver): <user id="yuri"> <device>MyDevice</device> <agent event="lock">gnome-screensaver-command --lock</agent> <agent event="unlock">gnome-screensaver-command --deactivate</agent> </user>
KDE (kscreensaver):
<user id="yuri"> <device>MyDevice</device> <agent event="lock">dcop kdesktop KScreensaverIface lock</agent> <agent event="unlock">dcop kdesktop KScreensaverIface quit</agent> </user>
Вы можете поставить туда любые другие команды. Теперь осталось сделать добавить pamusb-agent в автозагрузку:
GNOME:
System -> Preferences -> Sessions, выберите Startup Programs и нажмите Add, введите pamusb-agent и нажмите ОК. Нажмите Close.
KDE:
cd ~/.kde/Autostart && ln -s /usr/bin/pamusb-agent pamusb-agent
Источник welinux.ru
Комментарии
Не могу сделать на 9,04
Не могу сделать на 9,04 Ubuntu что бы он автоматом проскакивал GDM если флешка есть, если нету что бы просил пароль. мануал смотрел но этот момент так и не понял