Аутентификация с использованием PAM в Linux. Почему некоторые пользователи могут не работать? - PullRequest
0 голосов
/ 25 октября 2011

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

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

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

0 голосов
/ 30 декабря 2011

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

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

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

...