.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) and .\" Walter Harms (walter.harms@informatik.uni-oldenburg.de) .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getspnam 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ getspnam, getspnam_r, getspent, getspent_r, setspent, endspent, fgetspent, fgetspent_r, sgetspent, sgetspent_r, putspent, lckpwdf, ulckpwdf \- получение записи из теневого файла паролей .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf /* Основной API теневого файла паролей */ \fB#include \fP .PP \fBstruct spwd *getspnam(const char *\fP\fIname\fP\fB);\fP \fBstruct spwd *getspent(void);\fP .PP \fBvoid setspent(void);\fP \fBvoid endspent(void);\fP .PP \fBstruct spwd *fgetspent(FILE *\fP\fIstream\fP\fB);\fP \fBstruct spwd *sgetspent(const char *\fP\fIs\fP\fB);\fP .PP \fBint putspent(const struct spwd *\fP\fIp\fP\fB, FILE *\fP\fIstream\fP\fB);\fP .PP \fBint lckpwdf(void);\fP \fBint ulckpwdf(void);\fP .PP /* Расширение GNU */ \fB#include \fP .PP \fBint getspent_r(struct spwd *\fP\fIspbuf\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[.\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB, struct spwd **\fP\fIspbufp\fP\fB);\fP \fBint getspnam_r(const char *\fP\fIname\fP\fB, struct spwd *\fP\fIspbuf\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[.\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB, struct spwd **\fP\fIspbufp\fP\fB);\fP .PP \fBint fgetspent_r(FILE *\fP\fIstream\fP\fB, struct spwd *\fP\fIspbuf\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[.\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB, struct spwd **\fP\fIspbufp\fP\fB);\fP \fBint sgetspent_r(const char *\fP\fIs\fP\fB, struct spwd *\fP\fIspbuf\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[.\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB, struct spwd **\fP\fIspbufp\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBgetspent_r\fP(), \fBgetspnam_r\fP(), \fBfgetspent_r\fP(), \fBsgetspent_r\fP(): .nf начиная с glibc 2.19: _DEFAULT_SOURCE в glibc 2.19 и старее: _BSD_SOURCE || _SVID_SOURCE .fi .SH ОПИСАНИЕ В давние времена считалось, что хранить зашифрованные пароли в открытом доступе достаточно безопасно. Со временем компьютеры стали быстрее, а люди \- более обеспокоенными проблемами безопасности, и данный подход стал неприемлемым. Джулиан Франс Хог (Julianne Frances Haugh) реализовал набор программ для теневых паролей, который хранит зашифрованные пароли в базе данных теневых паролей (например в локальном файле теневых паролей \fI/etc/shadow\fP, NIS или LDAP), доступной для чтения только root. .PP .\" FIXME . I've commented out the following for the .\" moment. The relationship between PAM and nsswitch.conf needs .\" to be clearly documented in one place, which is pointed to by .\" the pages for the user, group, and shadow password functions. .\" (Jul 2005, mtk) .\" .\" This shadow password setup has been superseded by PAM .\" (pluggable authentication modules), and the file .\" .I /etc/nsswitch.conf .\" now describes the sources to be used. Описанные ниже функции соответствуют аналогами для традиционной базы паролей (см. \fBgetpwnam\fP(3) and \fBgetpwent\fP(3)). .PP Функция \fBgetspnam\fP() возвращает указатель на структуру, содержащую разделённую на поля запись из базы данных теневых паролей, которая соответствует имени пользователя \fIname\fP. .PP .\" some systems require a call of setspent() before the first getspent() .\" glibc does not Функция \fBgetspent\fP() возвращает указатель на следующую запись в базе данных теневых паролей. Положение во входном потоке инициализируется с помощью \fBsetspent\fP(). После выполнения чтения программа может вызвать \fBendspent\fP() для освобождения ресурсов. .PP Функция \fBfgetspent\fP() подобна \fBgetspent\fP() но использует заданный поток вместо неявного открытия с помощью \fBsetspent\fP(). .PP Функция \fBsgetspent\fP() разбирает передаваемую строку \fIs\fP в структуру \fIspwd\fP. .PP Функция \fBputspent\fP() записывает в \fIstream\fP содержимое передаваемой структуры \fIspwd\fP \fI*p\fP в виде текстовой строки в формате файла теневых паролей. Строковые записи со значением NULL и числовые записи со значением \-1 записываются как пустые строки. .PP Функция \fBlckpwdf\fP() предназначена для защиты базы данных теневых паролей при одновременном многочисленном доступе. Она пытается захватить блокировку и возвращает 0 при успешном выполнении и \-1 при ошибке (блокировка не получена в течении 15 секунд). Функция \fBulckpwdf\fP() освобождает блокировку. Заметим, что это не защищает при прямом доступе к файлу теневых паролей. О блокировке будут уведомлены только программы, использующие \fBlckpwdf\fP(). .PP .\" Also in libc5 .\" SUN doesn't have sgetspent() Эти функции возникли в исходном программном интерфейсе. Они широко используются. .SS "Реентерабельные версии" По аналогии с реентерабельными функциями для базы данных паролей, в glibc также есть реентерабельные функции для базы данных теневых паролей. Функция \fBgetspnam_r\fP() подобна \fBgetspnam\fP(), но хранит выбранную структуру теневого пароля в пространстве, на которое указывает \fIspbuf\fP. Данная структура теневого пароля содержит указатели на строки и эти строки хранятся в буфере \fIbuf\fP размером \fIbuflen\fP. Указатель на результат (при успешном выполнении) или NULL (в случае отсутствия записи или ошибки) сохраняется в \fI*spbufp\fP. .PP Функции \fBgetspent_r\fP(), \fBfgetspent_r\fP() и \fBsgetspent_r\fP() подобны их нереентерабельным аналогам. .PP .\" SUN doesn't have sgetspent_r() Некоторые не\-glibc системы также содержат функции с такими именами, но, чаще всего, с другими прототипами. .SS Структура Структура теневого пароля определена в \fI\fP: .PP .in +4n .EX struct spwd { char *sp_namp; /* имя пользователя */ char *sp_pwdp; /* зашифрованный пароль */ long sp_lstchg; /* дата последнего изменения в днях начиная с 1970\-01\-01 00:00:00 +0000 (UTC)) */ long sp_min; /* мин. кол\-во дней между сменой */ long sp_max; /* макс. кол\-во дней между сменой */ long sp_warn; /* кол\-во дней до истечения срока действия пароля для предупреждения пользователя */ long sp_inact; /* кол\-во дней до истечения срока действия пароля, после запись блокируется */ long sp_expire; /* дата устаревания учётной записи в днях начиная с 1970\-01\-01 00:00:00 +0000 (UTC)) */ unsigned long sp_flag; /* зарезервировано */ }; .EE .in .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" The functions that return a pointer return NULL if no more entries are available or if an error occurs during processing. The functions which have \fIint\fP as the return value return 0 for success and \-1 for failure, with \fIerrno\fP set to indicate the error. .PP У нереентерабельных функций возвращаемое значение может указывать на статическую область и может быть перезаписано последующими вызовами этих функций. .PP При успешном выполнении реентерабельные функции возвращают 0. В случае ошибки возвращается номер ошибки. .SH ОШИБКИ .TP \fBEACCES\fP Вызывающий не имеет прав доступа к файлу теневых паролей. .TP \fBERANGE\fP Указанный буфер слишком мал. .SH ФАЙЛЫ .TP \fI/etc/shadow\fP файл, содержащий базу локальных теневых паролей .TP \fI/etc/.pwd.lock\fP файл блокировки .PP При включении файла \fI\fP определяется константа \fB_PATH_SHADOW\fP, в которой хранится путь к файлу теневых паролей. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. Интерфейс Атрибут Значение T{ .na .nh \fBgetspnam\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:getspnam locale T} T{ .na .nh \fBgetspent\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:getspent race:spentbuf locale T} T{ .na .nh \fBsetspent\fP(), \fBendspent\fP(), \fBgetspent_r\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:getspent locale T} T{ .na .nh \fBfgetspent\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:fgetspent T} T{ .na .nh \fBsgetspent\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:sgetspent T} T{ .na .nh \fBputspent\fP(), \fBgetspnam_r\fP(), \fBsgetspent_r\fP() T} Безвредность в нитях T{ .na .nh MT\-Safe locale T} T{ .na .nh \fBlckpwdf\fP(), \fBulckpwdf\fP(), \fBfgetspent_r\fP() T} Безвредность в нитях T{ .na .nh MT\-Safe T} .TE .sp 1 В приведённой выше таблице \fIgetspent\fP в \fIrace:getspent\fP означает, что если в нескольких нитях программы одновременно используются функции \fBsetspent\fP(), \fBgetspent\fP(), \fBgetspent_r\fP() или \fBendspent\fP(), то может возникнуть состязательность по данным. .SH ВЕРСИИ Many other systems provide a similar API. .SH СТАНДАРТЫ None. .SH "СМ. ТАКЖЕ" \fBgetgrnam\fP(3), \fBgetpwnam\fP(3), \fBgetpwnam_r\fP(3), \fBshadow\fP(5) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .