Аутентификация с использованием PAM в Linux. Почему у некоторых пользователей он может не работать?

Я написал простое приложение для аутентификации пользователя с использованием PAM обычным способом: pam_start(), pam_authenticate() + моя собственная функция разговора + pam_end().

Если приложение запускается от имени пользователя, учетные данные которого проверяются, аутентификация будет успешной. В противном случае, если приложение запускается от пользователя A для проверки учетных данных пользователя B, аутентификация не удастся. (

Мой вопрос: почему? В качестве имени службы, переданного в pam_start(), я пробовал также login, а также passwd. Ничего не изменилось. В каком направлении идти для устранения проблемы? Или, возможно, мне следует использовать другую службу pam для выполнения задачи?

p.s. пользователь 'A' во втором случае - это пользователь без пароля и / bin / false оболочки.


person barankin    schedule 25.10.2011    source источник


Ответы (2)


Как вы проверяете "учетные данные"? Это какой-то файл читается? Может ли пользователь А прочитать этот файл?

Имя службы, переданное в pam_start, не влияет на то, что может делать процесс. Обратите внимание, что программы, которые должны делать похожие вещи, такие как su или passwd, на самом деле являются программами setuid.

Кроме того, следите за тем, чтобы не создавать бреши в безопасности в вашем приложении / модуле, позволяя пользователю A выдавать себя за пользователя B.

person Paweł Hajdan    schedule 30.12.2011

Пользователь A может не иметь разрешения на чтение файла паролей /etc/shadow. Это одна из причин, по которой программам проверки учетных данных обычно требуются привилегии root.

Итак: работает ли это для пользователя A и пользователя B, если вы выполняете программу с привилегиями root / как пользователь root?

person A.H.    schedule 30.12.2011