Нужен пакет 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-.tar.gz $ 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
Комментариев нет:
Отправить комментарий