Какая программатолькозапрашивает пароль указанного пользователя (даже если вызывающий пользователь - root) и возвращает код выхода 0, если все в порядке, и 1 в случае неудачи?
Есть ли такая простая программа (т.е. не «sudo» с отредактированным конфигом) для выполнения этой задачи?
Также я ищу программу, которая будет авторизовать пользователя (проверять его пароль, записывать в auth.log), но не выполнять никаких программ (вроде login
), а просто возвращать код выхода.
решение1
Вам нужна утилита, известная какpwauth
. Он делает именно то, что вы описываете: принимает имя пользователя и пароль, а затем возвращает код выхода в зависимости от их достоверности. Он предназначен для использования с mod_auth_external apache для подключения к системной аутентификации, но должен прекрасно работать для того, что вам нужно.
решение2
То, что вы пытаетесь сделать, сводит на нет смысл сеанса пользователя: пользователь уже ввел этот пароль, когда входил в свою учетную запись, поэтому невежливо спрашивать его снова для выполнения своей задачи. Если вы хотите, чтобы ваша программа работала на основе входа в систему, то лучшим подходом будет поддержка связок ключей. Это позволит пользователю самому выбирать, вводить ли пароль явно для выполнения своей задачи.
Не заставляйте пользователей correct horse battery staple
снова печатать, если они только что это сделали...
решение3
Похоже, самый простой способ — это написать это с помощьюпитон-памиспользование /usr/share/doc/python-pam/examples/pamtest.py
в качестве примера. Пример считывает пароль, аутентифицирует пользователя с помощью PAM и пишет сообщение в зависимости от результата. Может быть легко изменен на другой код выхода.