Защита / etc / passwd и / etc / shadow от одновременного доступа - PullRequest
4 голосов
/ 26 февраля 2010

Как защитить / etc / passwd и / etc / shadow от одновременного доступа? Я не вижу никакого механизма блокировки в pwd.h. Я вижу в руководстве по pwd_mkdb упоминание получения блокировки, но это просто блокировка файла для монопольного доступа?

Существует ли соглашение о блокировке этих файлов, если бы я написал утилиту для их непосредственного изменения или через семейство функций get / set / endpwent?

1 Ответ

3 голосов
/ 26 февраля 2010

Я думаю, что в наши дни большинство приложений используют PAM, не так ли? http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_ADG.html. Тем не менее, вы можете посмотреть на источник `pam_unix.so ', чтобы увидеть, как они это делают. Я посмотрел в pam_unix_passwd.c и проследил:

/* update the password database(s) -- race conditions..? */

retval = unix_update_db(pamh, ctrl, user, pass_old, pass_new);

To здесь , у которого множество функций с префиксом `pwdb '. Гугл снова показал этот , который, я думаю, является источником passwd .

В результате я думаю, что редактирование этих файлов обрабатывается libpwdb. Конечно, я вижу, включает в себя:

#include <pwdb/pwdb_public.h>
#include <pwdb/pwdb_shadow.h>

Но find . -name "*pwdb*" 2>/dev/null пока ничего не обнаружил в моей системе.

...