Ubuntu и аутентификация с помощью bluetooth

×

Предупреждение

Внимание: этот пост был создан более года назад. Информация может быть устаревшей.

Заинтересовался я дополнительными способами аутентификации в Ubuntu через PAM. Решил опробовать работу через bluetooth.

Зачем это нужно и как это работает:
1) настраивается связь с телефоном по bluetooth
2) При входе в систему и при выполнении команды sudo система аутентификации прове6ряет наличие телефона в радиусе действия и, если он найден, то пароль администратора спрашиваться не будет.

В первую очередь соединяем ПК и телефон с помощью стандартных средств bluetooth Ubuntu Устанавливаем необходимые пакеты:

sudo apt-get install libpam_blue 

С помощью

hcitool scan

находим свой телефон и узнаем его имя и MAC-адрес (не забудьте включить обнаружение на время поиска)

Открываем файл

/etc/security/bluesscan.conf

и добавляем в него:

username= {
name = phonename;
bluemac = 00:11:22:33:44:55;
} 

имя пользователя, имя телефона и мак телефона меняем на свои

Открываем файл

/etc/pam.d/common-auth

и добавляем в него:

auth sufficient pam_blue.so

перед строкой, содержащей

pam_unix.so

Перезапускать ничего не нужно, можно выйти из системы и войти уже без пароля с помощью телефона

А теперь ГРАБЛИ :)

А что делать с Gnome Screensaver? Он умеет PAM, но умеет только пароли. Т.е. при блокировании ПК всё равно при разблокировке требуется пароль. Нас это не устраивает. Т.к. заменить Gnome Screensaver нечем, то обойдем его с другой стороны, с помощью утилиты blueproximity. Устанавливаем её:

sudo apt-get install blueproximity 

Смысл этой утилиты в том, что мы настраиваем телефон, настраиваем расстояния от телефона до ПК и, если телефон отдалился, то блокируем ПК. При возвращении телефона в радиус действия ПК разблокируется. Мне очень удобно на работе, когда я убегаю от компа, хватаю телефон с собой, но забываю блокировать рабочий ПК. Это еще не всё. После запускка blueproximity, у меня не появился ее значок в трее. Это лечится командой

gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"

и перезапуском blueproximity