'\" t .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.76.1 .\" Date: 05/25/2012 .\" Manual: Библиотечные функции .\" Source: shadow-utils 4.1.5.1 .\" Language: Russian .\" .TH "shadow" "3" "05/25/2012" "shadow\-utils 4\&.1\&.5\&.1" "Библиотечные функции" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "ИМЯ" shadow, getspnam \- процедуры для работы с файлом шифрованных паролей .SH "СИНТАКСИС" .PP \fI#include \fR .PP \fIstruct spwd *getspent();\fR .PP \fIstruct spwd *getspnam(char\fR \fI*name\fR\fI);\fR .PP \fIvoid setspent();\fR .PP \fIvoid endspent();\fR .PP \fIstruct spwd *fgetspent(FILE\fR \fI*fp\fR\fI);\fR .PP \fIstruct spwd *sgetspent(char\fR \fI*cp\fR\fI);\fR .PP \fIint putspent(struct spwd\fR \fI*p,\fR \fIФАЙЛ\fR \fI*fp\fR\fI);\fR .PP \fIint lckpwdf();\fR .PP \fIint ulckpwdf();\fR .SH "ОПИСАНИЕ" .PP \fIshadow\fR управляет содержимым файла теневых паролей, /etc/shadow\&. Структура в файле \fI#include\fR: .sp .if n \{\ .RS 4 .\} .nf struct spwd { char *sp_namp; /* имя пользователя */ char *sp_pwdp; /* шифрованный пароль */ long int sp_lstchg; /* дата последней смены пароля */ long int sp_min; /* дней должно пройти между сменами пароля\&. */ long int sp_max; /* дней перед необходимостью смены пароля */ long int sp_warn; /* дней вывода предупреждения об устаревании */ long int sp_inact; /* дней перед тем как учётная запись заблокируется */ long int sp_expire; /* дата устаревания учётной записи */ unsigned long int sp_flag; /* зарезервировано */ } .fi .if n \{\ .RE .\} .PP Значение каждого поля: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_namp \- указатель на строку с именем пользователя, завершающуюся нулевым символом .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_pwdp \- указатель на строку с паролем, завершающуюся нулевым символом .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_lstchg \- количество дней, когда был изменён пароль последний раз, начиная с 1 января 1970 года .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_min \- количество дней, когда можно не менять пароль .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_max \- количество дней, которое должно пройти, чтобы нужно было поменять пароль .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_warn \- количество дней, когда будет выдаваться предупреждение о скором устаревании пароля перед тем как пароль устареет .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_inact \- количество дней, которые должны пройти после устаревания пароля, когда начинать считать, что учётная запись неактивна и заблокирована .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_expire \- дней, после которых учётная запись будет заблокирована, начиная с 1 января 1970 года .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} sp_flag \- зарезервировано .RE .SH "ОПИСАНИЕ" .PP Функции \fIgetspent\fR, \fIgetspname\fR, \fIfgetspent\fR и \fIsgetspent\fR возвращают указатель на структуру \fIstruct spwd\fR\&. \fIgetspent\fR возвращает следующую запись из файла, а \fIfgetspent\fR возвращает следующую запись из заданного канала, предполагая, что это файл правильного формата\&.\fIsgetspent\fR возвращает указатель на \fIstruct spwd\fR, используя предоставленную строку в качестве входящих данных\&. \fIgetspnam\fR ищет начиная с текущей позиции в файле запись по имени \fIname\fR\&. .PP Функции \fIsetspent\fR и \fIendspent\fR можно использовать для перемещения в начало и конец файла теневых паролей соответственно\&. .PP Функции \fIlckpwdf\fR и \fIulckpwdf\fR используются для получения монопольного доступа к файлу /etc/shadow\&. \fIlckpwdf\fR пытается выполнить блокировку с помощью \fIpw_lock\fR в течении 15 секунд\&. Далее выполняется попытка получить вторую блокировку с помощью \fIspw_lock\fR в течении времени оставшегося от первоначальных 15 секунд\&. При неудаче в любой из блокировок в течении 15 секунд, функция \fIlckpwdf\fR возвращает \-1\&. Если обе блокировки прошли успешно возвращается 0\&. .SH "ДИАГНОСТИКА" .PP Функции возвращают NULL, если все записи кончились или произошла ошибка во время работы\&. Функции, возвращающие \fIint\fR, возвращают 0 при успешном выполнении и \-1 в случае неудачи\&. .SH "ПРЕДОСТЕРЕЖЕНИЯ" .PP Данные функции могут использоваться только суперпользователем, так как доступ к файлу теневых паролей ограничен\&. .SH "ФАЙЛЫ" .PP /etc/shadow .RS 4 содержит защищаемую информацию о пользователях .RE .SH "СМОТРИТЕ ТАКЖЕ" .PP \fBgetpwent\fR(3), \fBshadow\fR(5)\&.