2016-09-18 4 views
1

У меня есть приложение, которое считывает имя пользователя и пароль через сокет. Я хочу определить, соответствует ли предоставленный пароль паролю, который ОС имеет для этого пользователя. Если это так, я хочу разблокировать процесс, выполняемый как этот пользователь. В идеале код будет в Go, но я могу сделать C, если это необходимо. В идеале это будет работать в Linux, OSX и BSD.Есть ли способ узнать, соответствует ли предоставленный пароль фактическому паролю для конкретного пользователя?

+2

попробуйте эту библиотеку, возможно: https://godoc.org/github.com/msteinert/pam –

+0

Спасибо, это выглядит многообещающе. Я попробую. –

+0

@Not_a_Golfer Я пробовал godoc.org/github.com/msteinert/pam на своем Mac, не работает. Я запускал тест как root, и все они терпят неудачу с системной ошибкой. –

ответ

2

Вы можете использовать аутентификацию PAM для Linux и OS X. Основная функция: pam_authenticate, хотя сначала вам нужно запустить службу pam и завершить ее, когда вы закончите.

Here's an example его основного использования.

+0

В итоге я написал модуль cgo, который использует PAM. Есть некоторые различия между BSD (Mac) и Linux, но это не так уж и важно. https://github.com/murphybytes/ucp/tree/master/pam –

 Смежные вопросы

  • Нет связанных вопросов^_^