Документация по LinuxLinuxDoc.Ru 🔍

getlogin, cuserid - получает имя пользователя

НАЗВАНИЕ
getlogin, cuserid - получает имя пользователя

СИНТАКСИС
#include

char * getlogin ( void );

#include

char * cuserid(char *string);

ОПИСАНИЕ
getlogin возвращает указатель на строку, содержащую имя
пользователя, вошедшего в систему c терминала, который
является управляющим для процесса. Если эту информацию
получить невозможно, этой функцией возвращается пустой
указатель. Строка выделяется статически и может быть
заново записана при последующих вызовах этой функции или
cuserid.

cuserid возвращает указатель на строку, содержащую имя
пользователя, связанное с идентификатором эффективного
пользователя процесса. Если string не является "пустым"
указателем, то это должен быть массив, который способен
вместить как минимум L_cuserid символов; строка
возвращается в этом массиве. В противном случае
возвращается указатель на строку в фиксированной области.
Эта строка выделена статически и может быть записана вновь
при последующих вызовах этой функции или функции getlogin.

Макрос L_cuserid является целочисленной константой,
показывающей длину массива, который может понадобиться для
хранения имени пользователя. L_cuserid описана в stdio.h.

Эти функции позволяют программе точно определить
работающего пользователя ( cuserid) или пользователя,
вошедшего в систему в течение этого сеанса ( getlogin).
Функции могут различаться, если запускаются программы с
установленным битом setuid.

В большинстве случаев для определения пользователя
полезнее использовать переменную окружения LOGNAME, потому
что пользователь может установить LOGNAME каким угодно.

КОДЫ ОШИБОК
ENOMEM (недостаточно памяти для размещения структуры
passwd).

ФАЙЛЫ
/etc/passwd файл базы данных паролей
/var/run/utmp (традиционно /etc/utmp;
в некоторых версиях libc использовались /var/adm/utmp)

СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1. В System V имеется функция cuserid, использующая
идентификатор реального пользователя вместо идентификатора
эффективного пользователя. Функция cuserid была включена в
версию POSIX 1988 года, но не упомянута в версии 1990.

НАЙДЕННЫЕ ОШИБКИ
К сожалению, зачастую довольно просто "обмануть" getlo-
gin(). Иногда она вообще не работает из-за того, что
какая-то программа перепутала содержимое файла utmp. Часто
функция возвращает только первые 8 символов имени.
Пользователь, вошедший в систему с терминала, который
является управляющим для нашей программы, необязательно
будет пользователем, запустившим программу. Избегайте
использования getlogin() из соображений безопасности.

Hикто точно не знает, как работает cuserid(), поэтому
избегайте ее использования в переносимых программах, а
вместо нее используйте getpwuid(geteuid()), если это
необходимо. Еще раз: HЕ ИСПОЛЬЗУЙТЕ cuserid().
Читать новости Linux в Telegram
Linux - getlogin, cuserid - получает имя пользователя
Мы в соцсетях ✉