понедельник, 12 сентября 2011 г.

Авторизация пользователей Линукс используя USB накопитель

Краткое содержание статьи
1. Установка PAM - модулей авторизации в системе(Pluggable Authentication modules).
2. Добавление USB устройства в PAM конфигурацию.
3. Определим пользователей, которые будут проходит авторизацию по устройству.
4. Настройка PAM для использования библиотеки pam_usb.
5. USB события и pam_usb.


Эта статья описывает метод использования USB накопителя, как устройства авторизации в системе Linux, место традиционного метода логин/пароль.
Примеры данной статьи были сделаны и отработаны используя Ubuntu Linux.
Пользователи других дистрибютивов Linux должны получить такие же результаты.

1. Установка PAM - модулей авторизации в системе(Pluggable Authentication modules)
PAM модуля доступны для большинства Linux систем с соответсвующий репозиториев.
Для начала нам необходимо установить модуля PAM, и модуля USB авторизации.
$ sudo apt-get install pamusb-tools libpam-usb
2. Добавление USB устройства в PAM конфигурацию.
Исполним команду.
$ sudo pamusb-conf --add-device my-usb-stick
Please select the device you wish to add.
* Using "Verbatim STORE N GO (Verbatim_STORE_N_GO_07A10D0894492625-0:0)" (only option)
Which volume would you like to use for storing data ?
0) /dev/sdb2 (UUID: A842-0654)
1) /dev/sdb1 (UUID: CAAF-0882)
[0-1]: 0
Name       : my-usb-stick
Vendor      : Verbatim
Model      : STORE N GO
Serial      : Verbatim_STORE_N_GO_07A10D0894492625-0:0
UUID       : A842-0654
Save to /etc/pamusb.conf ?
[Y/n] Y
Выполнено.

После выполнение этой команды в /etc/pamusb.conf - файле конфигурации появяться следующие строки, которые определяют устройство.
<device id="my-usb-stick">
 <vendor>
  Verbatim
 </vendor>
 <model>
  STORE N GO
 </model>
 <serial>
  Verbatim_STORE_N_GO_07A10D0894492625-0:0
 </serial>
 <volume_uuid>
  A842-0654
 </volume_uuid>
</device>
Править настройки можно вручную.

3. Определим пользователей, которые будут проходит авторизацию по устройству.
Очевидно, что мы можем добавить несколько USB устройств в PAM конфигурацию, в то же время можно добавить на одно, или несколько устройств.
В нашем примере определяется USB устройство, которое используется только одним пользователем для входа.
Если существует пользователь "ubuntu-user" в нашей системе, добавим его в PAM конфигурацию следующей командой.
$ sudo pamusb-conf --add-user ubuntu-user
Which device would you like to use for authentication ?
* Using "my-usb-stick" (only option)
User       : ubuntu-user
Device      : my-usb-stick
Save to /etc/pamusb.conf ?
[Y/n] y
Done.
Определение пользователя использующий определенное устройство добавленно в /etc/pamusb.conf
<user id="ubuntu-user">
    <device>my-usb-stick</device>
</user>
4. Настройка PAM для использования pam_usb библиотеки
К данной точке, мы подготовили USB устройство "my-usb-stick" для авторизации пользователя"ubuntu-user".
Однако система ничего не знает о модуле pam_usb. Для того, что бы активировать модуль pam_usb в процесс авторизации необходимо отредактировать файл /etc/pam.d/common-auth.
Активируйте ваш модуль, вставьте строку.
auth   sufficient    pam_usb.so
перед парольной авторизацией
auth   required     pam_unix.so nullok_secure
Сохраним.
Проверим, пользователь "ubuntu-user" должен быть аутентифицирован, если необходимый USB носитель вставлен, иначе потребует дальнейшую авторизацию по логину и паролю.
$ su ubuntu-user
* pam_usb v0.4.2
* Authentication request for user "ubuntu-user" (su)
* Device "my-usb-stick" is connected (good).
* Performing one time pad verification...
* Regenerating new pads...
* Access granted.
5. USB события и pam_usb
К дополнению USB аунтентификации пользователя, могут использовать события USB устройств(Извлечение/подсоединение), присоеденять определённые действия.
В данном примере. При вытаскивании USB носителя - блокируется экран, при подсоединении - разблокируетяся экран.
Добавьте данный код в /etc/pamusb.conf файл.

<user id="ubuntu-user">
     <device>
         my-usb-stick
     </device>
     <agent event="lock">gnome-screensaver-command -l</agent>
<agent event="unlock">gnome-screensaver-command -d</agent>
</user>
Оригинал статьи.

Комментариев нет:

Отправить комментарий