Автор Тема: Запуск модуля PAM не дожидаясь нажатия клавиши enter  (Прочитано 1425 раз)

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

Оффлайн nextiter

  • Новичок форума
  • Topic Author
  • Сообщений: 5
Добрый день!
Установлены debian 8, lightdm и xfce.
Есть задача - сделать аутентификацию на машине по смарт карте с RFID-меткой, сделав запрос на удаленную машину за разрешением.
Сделано:
модуль PAM, написанный на питоне использующий библиотеку python-pam. Логика модуля такова, что он ждет, когда будет приложена карта. Затем считывает с неё данные, отправляет по сети и получает ответ с разрешением на аутентификацию.
Отдельные части модуля работают, как и сам модуль совершает именно те действия, которые запланированы.

Но есть загвоздка:
Модуль начинает работать только после того, как я нажимаю enter. будь то lightdm или login.
Неважно какие данные я введу и введу ли вообще, нажав enter или "войти" - управление переходит моему модулю (он пока просто отправляет ID карты, не считывая её и получает разрешение на аутентификацию).
Я хочу избавиться от этих нажатий.
Можно ли сделать так, чтобы модуль начинал работать сразу после загрузки ОС?
Пытался настроить /etc/lightdm/lightdm.conf
autologin-guest = False
autologin-user =root
autologin-user-timeout = 0
pam-service=lightdm
pam-autologin-service=lightdm-autologin
pam-greeter-service=lightdm-greeter
Хотел сделать автологин, а в него прописать свою библиотеку аутентификации, но что-то автоматически не логинится.
файлы lightdm lightdm-autologin lightdm-greeter в /etc/pam.d/ выглядят одинаково:
auth       required  pam_python.so      custom_linux_auth.py
ради всего святого помогите разобраться :)

 

Оффлайн endru

  • Главный модератор
  • Ветеран
  • *****
  • Сообщений: 1986
  • Новосибирск
Авторизация в домене чтоли? если да, то смотри в сторону kerberos.
права выставлены правильно на custom_linux_auth.py?
а по хорошему нужно показать все конфиги, вдруг опечатка какая, или символ лишний где стоит.
и под root лучше не входить в систему кстати.

Оффлайн alsoijw

  • Fedora 25 GNOME 3 amd64
  • Ветеран
  • *****
  • Сообщений: 1231
Сделано:
модуль PAM, написанный на питоне
Ищем где в коде находится ожидание нажатия клавиши и удаляем(коментируем эту строку)
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?
 

Оффлайн nextiter

  • Новичок форума
  • Topic Author
  • Сообщений: 5
Авторизация в домене чтоли? если да, то смотри в сторону kerberos.
права выставлены правильно на custom_linux_auth.py?
а по хорошему нужно показать все конфиги, вдруг опечатка какая, или символ лишний где стоит.
и под root лучше не входить в систему кстати.

Авторизация нет, не в домене. Либо будет самописная серверная часть, либо обращение к API СКУД.
Права стоят 777.
Какие конфиги нужны? Те которые я менял - их выложил.
Про root, оно всё верно, это тестовая машина, пока что так удобней.
 

Оффлайн endru

  • Главный модератор
  • Ветеран
  • *****
  • Сообщений: 1986
  • Новосибирск
Ищем где в коде находится ожидание нажатия клавиши и удаляем(коментируем эту строку)
Нажатие клавиши или кнопки... Если искать, но наверное в исходниках lightdm) почему то мне так кажется. DE ждет нажатия кнопки перед авторизацией....

Оффлайн nextiter

  • Новичок форума
  • Topic Author
  • Сообщений: 5
Ищем где в коде находится ожидание нажатия клавиши и удаляем(коментируем эту строку)
В коде нет ожидания нажатия клавиши.
Была отправка через сокеты ID карты и ожидание ответа, но это могло лишь вызвать небольшую задержку, но я всё же удалил весь код, оставил только минимум, и все равно появилось окно с вводом логина\пароля

#!/usr/bin/env python
# -*- coding: utf-8 -*-
def pam_sm_authenticate(pamh, flags, argv):
    pamh.user = 'root'
    return pamh.PAM_SUCCESS


def pam_sm_setcred(pamh, flags, argv):
    return pamh.PAM_SUCCESS


def pam_sm_acct_mgmt(pamh, flags, argv):
    return pamh.PAM_SUCCESS


def pam_sm_open_session(pamh, flags, argv):
    return pamh.PAM_SUCCESS


def pam_sm_close_session(pamh, flags, argv):
    return pamh.PAM_SUCCESS


def pam_sm_chauthtok(pamh, flags, argv):
    return pamh.PAM_SUCCESS


Cообщение объединено 10 Август 2016, 12:19:14
Если искать, но наверное в исходниках lightdm) почему то мне так кажется
Именно! А исходники lightdm...
Мог бы я в исходники lightdm, не задавал бы я таких вопросов :)
Но и одна мысль мне не дает покоя: есть же автологин, но он у меня не работает. Пожалуй поставлю в виртуалку такой же дебиан и добьюсь того, чтобы работал автологин, а уже потом сделаю авторизацию чрез мой PAM модуль.
Но это не конец, если есть у кого-либо мысли, как сделать это красиво - прошу, поделитесь идеей!
« Последнее редактирование: 10 Август 2016, 12:19:14 от nextiter »
 

Оффлайн endru

  • Главный модератор
  • Ветеран
  • *****
  • Сообщений: 1986
  • Новосибирск
Именно! А исходники lightdm...
а что исходники? исходники есть всегда доступны. другой вопрос: кто будет в них разбираться и править?  :) :)

Оффлайн nextiter

  • Новичок форума
  • Topic Author
  • Сообщений: 5
Так. lightdm настроить на автологин не получилось. Получилось в виртуалке настроить автологин для гномьего gdm и на тестовой машине автологин в SLIM. Но возник другой вопрос:
Человек по смарт-карте логинится (пока только надеемся, что логинится), но тут он уходит в туалет или на обед и блокирует машину. Приходит, а там снова запрос логина и пароля и всё то же нажатия Entera.
А вопрос в том - как передать управление автологину после снятия блокировки\выхода из сна\выхода из ждущего режима\после заставки ?
 

Оффлайн nextiter

  • Новичок форума
  • Topic Author
  • Сообщений: 5
lightdm получилось настроить на автологин. Теперь модуль работает как надо.
Появился еще ряд вопросов:
Автологин сразу передает управление моему PAM-модулю, тот постоянно ждет приложенной смарт-карты, и когда она приложена - отправляет данные с неё на сервер для проверки. Так он делает до тех пор, пока не будет приложена карта, по которой разрешен вход. Вместо экрана входа (поля для логина с паролем), нет вообще никакого экрана. Просто всё черным-черно (оно и понятно, это же автологин). И вот собственно вопрос - как поставить какую-нибудь картинку на автологин (типа: Приложите карточку).
Еще при блокировке ПК, а точнее при разблокировке запрашивается логин с паролем, а хотелось бы их убрать или заменить на что-то типа автологина. Программу, которая сразу пускает пользователя, но которой можно указать свой модуль аутентификации.
Буду рад любой помощи.
 

Теги:
 

Восстановление Grub / Запуск с флэшки

Автор nonamez

Ответов: 9
Просмотров: 2673
Последний ответ 09 Март 2012, 01:59:50
от nonamez
Запуск OpenVPN-соединения ярлыком

Автор Suncatcher

Ответов: 3
Просмотров: 2067
Последний ответ 03 Декабрь 2013, 07:06:28
от rayanAyar
Запуск Debian. отслеживание запуска.

Автор mightyraven

Ответов: 3
Просмотров: 1309
Последний ответ 27 Ноябрь 2015, 10:50:41
от nezabudka
Запуск Java (OpenGL) приложений с Optirun/Primusrun

Автор RebelCoderRU

Ответов: 1
Просмотров: 1316
Последний ответ 19 Февраль 2017, 20:00:34
от mrgoodvin
Запуск программ при старте ОС

Автор Zlobny_prapor

Ответов: 25
Просмотров: 4819
Последний ответ 22 Июнь 2018, 04:04:23
от ogost