'\" t
.\" Title: shadow
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 08/11/2022
.\" Manual: Виклики бібліотеки
.\" Source: shadow-utils 4.13
.\" Language: Ukrainian
.\"
.TH "shadow" "3" "08/11/2022" "shadow\-utils 4\&.13" "Виклики бібліотеки"
.\" -----------------------------------------------------------------
.\" * 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; /* ім\*(Aqя користувача для входу */ 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 \- вказівник на ім\*(Aqя користувача із кінцевим нуль\-символом
.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)\&.