GETLOGIN(3)

GETLOGIN(3)

curs_window Home Page Subroutines Index Cwd


NAME
       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.)  The user cannot  do  anything  to
       fool these functions.

       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
       /etc/utmp (or /var/adm/utmp, or wherever  your  utmp  file
       lives  these  days  -  the proper location depends on your
       libc version)

CONFORMING TO
       POSIX.1.  System V has a cuserid function which  uses  the
       real  user  ID  rather  than  the  effective  user ID. The
       cuserid function was  included  in  the  1988  version  of
       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.

       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) 

curs_window Home Page Subroutines Index Cwd