Защита /etc/passwd и /etc/shadow от одновременного доступа

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

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


person indiv    schedule 26.02.2010    source источник


Ответы (1)


Я думаю, что в наши дни большинство приложений используют 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);

Кому здесь, в которой много функций с префиксом `pwdb'. Поиск в Google снова показал это, которое, как мне кажется, является источником для пароль.

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

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

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

person Community    schedule 26.02.2010