Самый простой способ аутентификации пользователей в Linux / Unix без полномочий root - PullRequest
2 голосов
/ 09 июня 2009

Я пишу кроссплатформенный сервер TCP / IP, и мне нужно аутентифицировать пользователей перед их обслуживанием. Требования предусматривают, что я использую «собственную» аутентификацию платформы, а не создаю свой собственный механизм аутентификации.

Для семейства ОС Linux / Unix я использую getpwnam для аутентификации пользователей, и самый надежный способ, который я знаю, чтобы убедиться, что это работает, - запустить мой сервис от имени root. Других причин для запуска службы от имени root нет, и мне интересно, какие у меня есть варианты? Могу ли я вызвать getpwnam, не будучи root без ущерба для безопасности? Или, если есть альтернативы getpwnam, насколько они переносимы и насколько «дружественны к администратору» в смысле «каких усилий по настройке они требуют?» Причина, по которой независимый механизм аутентификации не обсуждается, именно в том, что он создает «слишком много усилия по настройке ".

Ответы [ 3 ]

1 голос
/ 09 июня 2009

Вы смотрели на аутентификацию PAM?

1 голос
/ 11 июня 2009

Используйте SASL , например Cyrus SASL . Никаких привилегий root не требуется, и все популярные дистрибутивы Linux поддерживают это. Я использую его для аутентификации пользователей интранет-сайта, обслуживаемого Apache и написанного на Python. Среди прочего Sendmail и Postfix используют его для аутентификации.

0 голосов
/ 09 июня 2009

Использование getpwnam() не требует привилегий root.

Попытка получить информацию из файла теневых паролей или AFAIK с использованием PAM требует прав суперпользователя, что создает некоторые проблемы. Однако вы можете запустить процесс как пользователь root, инициализировать доступ к PAM, а затем отбросить привилегии. Это неподтвержденное предположение, но, по крайней мере, несколько правдоподобно.

Обратите внимание, что в большинстве систем getpwnam() не возвращает вам зашифрованный (или хешированный) пароль. Итак, вам нужно тщательно продумать, что вы планируете сделать, чтобы «аутентифицировать» пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...