.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1995 James R. Van Zandt .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Changed Tue Sep 19 01:49:29 1995, aeb: moved from man2 to man3 .\" added ref to /etc/utmp, added BUGS section, etc. .\" modified 2003 Walter Harms, aeb - added getlogin_r, note on stdin use .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getlogin 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ getlogin, getlogin_r, cuserid \- возвращает имя пользователя .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBchar *getlogin(void);\fP \fBint getlogin_r(char \fP\fIbuf\fP\fB[.\fP\fIbufsize\fP\fB], size_t \fP\fIbufsize\fP\fB);\fP .PP \fB#include \fP .PP \fBchar *cuserid(char *\fP\fIstring\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBgetlogin_r\fP(): .nf .\" Deprecated: _REENTRANT || _POSIX_C_SOURCE >= 199506L .fi .PP \fBcuserid\fP(): .nf Since glibc 2.24: (_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L) || _GNU_SOURCE Up to and including glibc 2.23: _XOPEN_SOURCE .fi .SH ОПИСАНИЕ Функция \fBgetlogin\fP() возвращает указатель на строку, содержащую имя пользователя, вошедшего в систему c терминала, который является управляющим для процесса, или указатель null, если эта информация не может быть получена. Строка выделяется статически и может быть перезаписана при последующих вызовах этой функции или \fBcuserid\fP(). .PP Функция \fBgetlogin_r\fP() возвращает то же имя пользователя, но в массиве \fIbuf\fP размером \fIbufsize\fP. .PP Функция \fBcuserid\fP() возвращает указатель на строку, содержащую имя пользователя, связанное с идентификатором эффективного пользователя процесса. Если \fIstring\fP не равно указателю null, то значение должно быть массивом, который способен вместить как минимум \fBL_cuserid\fP символов; строка возвращается в этом массиве. В противном случае возвращается указатель на строку в фиксированной области. Эта строка выделена статически и может быть перезаписана при последующих вызовах этой функции или функции \fBgetlogin\fP(). .PP Макрос \fBL_cuserid\fP является целочисленной константой, показывающей длину массива, который может понадобиться для хранения имени пользователя. \fBL_cuserid\fP описан в \fI\fP. .PP Эти функции позволяют программе точно определить работающего пользователя (\fBcuserid\fP()) или пользователя этого сеанса (\fBgetlogin\fP()) (значения могут различаться, если у программы установлен бит set\-user\-ID). .PP В большинстве случаев для определения пользователя полезнее использовать переменную окружения \fBLOGNAME\fP, потому что пользователь может установить \fBLOGNAME\fP каким угодно. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" \fBgetlogin\fP() returns a pointer to the username when successful, and NULL on failure, with \fIerrno\fP set to indicate the error. \fBgetlogin_r\fP() returns 0 when successful, and nonzero on failure. .SH ОШИБКИ В POSIX определены: .TP \fBEMFILE\fP Было достигнуто ограничение по количеству открытых файловых дескрипторов на процесс. .TP \fBENFILE\fP Достигнуто максимальное количество открытых файлов в системе. .TP \fBENXIO\fP У вызывающего процесса нет управляющего терминала. .TP \fBERANGE\fP (getlogin_r) The length of the username, including the terminating null byte (\[aq]\e0\[aq]), is larger than \fIbufsize\fP. .PP В Linux/glibc также есть: .TP \fBENOENT\fP Нет соответствующей записи в файле utmp. .TP \fBENOMEM\fP Недостаточно памяти для выделения под структуру passwd. .TP \fBENOTTY\fP Стандартный ввод не ссылается на терминал (смотрите ДЕФЕКТЫ). .SH ФАЙЛЫ .TP \fI/etc/passwd\fP файл, содержащий базу паролей .TP \fI/var/run/utmp\fP (обычно, \fI/etc/utmp\fP; в некоторых версиях libc используется \fI/var/adm/utmp\fP) .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. Интерфейс Атрибут Значение T{ .na .nh \fBgetlogin\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:getlogin race:utent sig:ALRM timer locale T} T{ .na .nh \fBgetlogin_r\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:utent sig:ALRM timer locale T} T{ .na .nh \fBcuserid\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:cuserid/!string locale T} .TE .sp 1 В приведённой выше таблице \fIutent\fP в \fIrace:utent\fP означает, что если любая из функций \fBsetutent\fP(3), \fBgetutent\fP(3) или \fBendutent\fP(3) используется одновременно в нескольких нитях программы, то может возникнуть состязательность по данным. Эти функции вызываются из \fBgetlogin\fP() и \fBgetlogin_r\fP() поэтому мы используем race:utent для напоминания. .SH ВЕРСИИ В OpenBSD имеются \fBgetlogin\fP() и \fBsetlogin\fP(), а имя пользователя связывается с сеансом даже если не имеется управляющего терминала. .SH СТАНДАРТЫ .TP \fBgetlogin\fP() .TQ \fBgetlogin_r\fP() POSIX.1\-2008. .TP \fBcuserid\fP() None. .SH СТАНДАРТЫ .TP \fBgetlogin\fP() .TQ \fBgetlogin_r\fP(): POSIX.1\-2001. OpenBSD. .TP \fBcuserid\fP() System V, POSIX.1\-1988. Removed in POSIX.1\-1990. SUSv2. Removed in POSIX.1\-2001. .IP System V has a \fBcuserid\fP() function which uses the real user ID rather than the effective user ID. .SH ДЕФЕКТЫ К сожалению, зачастую довольно просто «обмануть» \fBgetlogin\fP(). Иногда она вообще не работает из\-за того, что какая\-то программа испортила содержимое файла utmp. Часто функция возвращает только первые 8 символов имени. Пользователь, вошедший в систему с терминала, который является управляющим для нашей программы, необязательно будет пользователем, запустившим программу. Избегайте использования \fBgetlogin\fP() из соображений безопасности. .PP Заметим, что glibc не следует спецификации POSIX и использует \fIstdin\fP вместо \fI/dev/tty\fP. Дефект ( в других современных системах, например SunOS 5.8, HP\-UX 11.11 и FreeBSD 4.8, также возвращают имя пользователя если было перенаправление \fIstdin\fP). .PP Никто точно не знает что делает \fBcuserid\fP(), поэтому не используйте её в переносимых программах. Вместо неё используйте \fIgetpwuid(geteuid())\fP, если это необходимо. \fBНе используйте\fP \fBcuserid\fP(). .SH "СМ. ТАКЖЕ" \fBlogname\fP(1), \fBgeteuid\fP(2), \fBgetuid\fP(2), \fButmp\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 .