Использование моего собственного скрипта Python для аутентификации на моем компьютере

Я пытаюсь создать скрипт python для проверки пароля вместо моего компьютера, поэтому я использую для этого python-pam. Проблема в том, что я не знаю, как я могу использовать свой скрипт в файле общей аутентификации.

Я попробовал это:

auth    required                        /home/gamzer/test-python-pam.py

Но это говорит мне об этом:

sudo: PAM unable to dlopen(/home/gamzer/test-python-pam.py): /home/gamzer/test-python-pam.py: invalid ELF header

Вот мой сценарий:

import pam
from getpass import getuser, getpass

if pam.authenticate(getuser(), getpass()):
        print 'ok'
else:
        print 'not ok'

2 ответа

Прежде всего - вы не можете использовать код Python в качестве модуля PAM, это должен быть скомпилированный код, который удовлетворяет определенным требованиям интерфейса. Смотрите здесь для получения дополнительной информации.

Кроме того - то, что вы пытаетесь здесь, кажется круговым, используя сам PAM для реализации функциональности PAM.

Вы пытаетесь

  1. используйте PAM для проверки пароля в программе на python, которая должна подтвердить пароль, или

  2. внедрить новый метод аутентификации для системы?

В случае #2, @dngrs абсолютно прав - вы не можете сделать это таким образом.

В случае № 1 вам ничего не нужно в common-auth файл. Кроме того, чтобы проверить пароль в вашем коде Python, я думаю, вам нужно создать объект PAM, чтобы он выглядел примерно так:

import pam
from getpass import getuser, getpass

p = pam.pam()
if p.authenticate(getuser(), getpass()):
    print 'ok'
else:
    print 'not ok'

как показано в README Python-PAM

Другие вопросы по тегам