.\" -*- 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 "15 июня 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ getlogin, getlogin_r, cuserid \- возвращает имя пользователя .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBchar *getlogin(void);\fP \fBint getlogin_r(char \fP\fIbuf\fP\fB[.\fP\fIbufsize\fP\fB], size_t \fP\fIbufsize\fP\fB);\fP .P \fB#include \fP .P \fBchar *cuserid(char *\fP\fIstring\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBgetlogin_r\fP(): .nf .\" Deprecated: _REENTRANT || _POSIX_C_SOURCE >= 199506L .fi .P \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(). .P Функция \fBgetlogin_r\fP() возвращает то же имя пользователя, но в массиве \fIbuf\fP размером \fIbufsize\fP. .P Функция \fBcuserid\fP() возвращает указатель на строку, содержащую имя пользователя, связанное с идентификатором эффективного пользователя процесса. Если \fIstring\fP не равно указателю null, то значение должно быть массивом, который способен вместить как минимум \fBL_cuserid\fP символов; строка возвращается в этом массиве. В противном случае возвращается указатель на строку в фиксированной области. Эта строка выделена статически и может быть перезаписана при последующих вызовах этой функции или функции \fBgetlogin\fP(). .P Макрос \fBL_cuserid\fP является целочисленной константой, показывающей длину массива, который может понадобиться для хранения имени пользователя. \fBL_cuserid\fP описан в \fI\fP. .P Эти функции позволяют программе точно определить работающего пользователя (\fBcuserid\fP()) или пользователя этого сеанса (\fBgetlogin\fP()) (значения могут различаться, если у программы установлен бит set\-user\-ID). .P В большинстве случаев для определения пользователя полезнее использовать переменную окружения \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 (\fB\[aq]\[rs]0\[aq]\fP), is larger than \fIbufsize\fP. .P В 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 .P В приведённой выше таблице \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() из соображений безопасности. .P Заметим, что glibc не следует спецификации POSIX и использует \fIstdin\fP вместо \fI/dev/tty\fP. Дефект ( в других современных системах, например SunOS 5.8, HP\-UX 11.11 и FreeBSD 4.8, также возвращают имя пользователя если было перенаправление \fIstdin\fP). .P Никто точно не знает что делает \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 Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .