Автор Тема: Авторизация с помощью Flash-накопителя  (Прочитано 17915 раз)

0 Пользователей и 1 Гость просматривают эту тему.

mike777

  • Гость
Автор не я, но думаю многим будет интересно.

Подумал, что было бы неплохо использовать 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-.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):
MyDevice
gnome-screensaver-command —lock
gnome-screensaver-command —deactivate


KDE (kscreensaver):
MyDevice
dcop kdesktop KScreensaverIface lock
dcop kdesktop KScreensaverIface quit


Вы можете поставить туда любые другие команды. Теперь осталось сделать добавить pamusb-agent в автозагрузку:

GNOME:
System — > Preferences — > Sessions, выберите Startup Programs и нажмите Add, введите pamusb-agent и нажмите ОК. Нажмите Close.

KDE:
cd ~/.kde/Autostart && ln —s /usr/bin/pamusb-agent pamusb-agent

Форум pinbay.net