GETLOGIN(3)

NOME
getlogin, cuserid - obtém nome do usuário

SINÓPSE
#include <unistd.h>

char * getlogin ( void );

#include <stdio.h>

char * cuserid ( char *string );

DESCRIÇÃO
getlogin retorna um ponteiro para uma string contendo o nome do usuário logado no terminal controlador do processo, ou um ponteiro nulo se esta informação não puder ser determinada. A string é alocada estaticamente e pode ser sobrescrita nas chamadas subseqüentes a esta função ou a cuserid.

cuserid retorna um ponteiro para um string contendo um nome de usuário associado com o ID efetivo de usuário do processo. Se string não é um ponteiro nulo, deve ser um array que pode suportar no mínimo L_cuserid caracteres; a string é retornada neste array. Caso contrário,um ponteiro para uma string numa área estática é retornada. Esta string é alocada estaticamente e pode ser sobrescrita em chamadas subseqüentes para esta função ou para getlogin.

A macro L_cuserid é uma constante inteira que indica quão grande é um array que você pode precisar para guardar um nome de usuário. L_cuserid está declarado em stdio.h.

Estas funções permitem ao seu programa identificar positivamente o usuário que está executando (cuserid) ou o usuário que logou nesta sessão (getlogin). (Podem diferir quando programas setuid estão envolvidos.)

Para a maioria dos objetivos, é mais útil usar a variável de ambiente LOGNAME para descobrir quem o usuário é. Isto é mais flexível precisamente porque o usuário pode definir LOGNAME arbitrariamente.

ERROS

ENOMEM
    Memória insuficiente para alocar estrutura passwd.

ARQUIVOS
/etc/passwd	arquivo do banco de dados das senhas
/var/run/utmp	(tradicionalmente /etc/utmp;
			algumas versões da libc usavam /var/adm/utmp)

DE ACORDO COM
POSIX.1. O System V tem uma função cuserid que usa o ID de usuário real em vez do ID de usuário efetivo. A função cuserid foi incluída na versão de 1988 do POSIX, mas removida da versão de 1990.

PROBLEMAS
Infelizmente, é freqüentemente bem fácil de enganar getlogin(). Às vezes ela nem chega a funcionar, porque algum programa bagunçou com o arquivo utmp. Geralmente, ela dá apenas os primeiros 8 caracteres do nome de login. O usuário atualmente logado no tty controlador do nosso programa não precisa ser o usuário que o iniciou. Evite getlogin() para objetivos relacionados a segurança.

Ninguém sabe precisamente o que cuserid() faz - evite-a em programas portáveis - evite-as em geral - use getpwuid(geteuid()) no lugar, se é isso que você quer. NÃO USE cuserid().

VEJA TAMBÉM
geteuid(2), getuid(2).

TRADUZIDO POR LDP-BR em 28/05/2001.

  Tradução:
Felipe M Pereira <Felipe.Pereira@ic.unicamp.br>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>