getlogin, cuserid - get user name


SYNOPSIS

       #include <unistd.h>

       char * getlogin ( void );

       #include <stdio.h>

       char * cuserid ( char *string );


DESCRIPTION

       getlogin returns a pointer to a string containing the name
       of the user logged in on the controlling terminal  of  the
       process,  or  a null pointer if this information cannot be
       determined.  The string is statically allocated and  might
       be  overwritten on subsequent calls to this function or to
       cuserid.

       cuserid returns a pointer to a string  containing  a  user
       name associated with the effective user ID of the process.
       If string is not a null pointer, it  should  be  an  array
       that can hold at least L_cuserid characters; the string is
       returned in this array.  Otherwise, a pointer to a  string
       in  a  static  area is returned. This string is statically
       allocated and might be overwritten on subsequent calls  to
       this function or to getlogin.

       The  macro L_cuserid is an integer constant that indicates
       how long an array you might need to  store  a  user  name.
       L_cuserid is declared in stdio.h.

       These  functions  let your program identify positively the
       user who is running (cuserid) or the user  who  logged  in
       this  session  (getlogin).   (These can differ when setuid
       programs are involved.)

       For most purposes, it is more useful to use  the  environ­
       ment  variable  LOGNAME to find out who the user is.  This
       is more flexible precisely because the user can  set  LOG­
       NAME arbitrarily.


ERRORS

       ENOMEM Insufficient memory to allocate passwd structure.


FILES

       /etc/passwd    password database file
       /var/run/utmp  (traditionally /etc/utmp;
                      some libc versions used /var/adm/utmp)


CONFORMING TO

       POSIX.1.   System  V has a cuserid function which uses the
       POSIX, but removed from the 1990 version.


BUGS

       Unfortunately, it is often rather easy to fool getlogin().
       Sometimes  it  does  not work at all, because some program
       messed up the utmp file. Often, it gives only the first  8
       characters of the login name. The user currently logged in
       on the controlling tty of our program need not be the user
       who  started  it.   Avoid  getlogin() for security-related
       purposes.

       Nobody knows precisely what cuserid() does - avoid  it  in
       portable  programs  -  avoid  it  altogether  -  use getp­
       wuid(geteuid()) instead, if that is what  you  meant.   DO
       NOT USE cuserid().


SEE ALSO

       geteuid(2), getuid(2)