xref: /original-bsd/lib/libc/sys/getlogin.2 (revision 3705696b)
1.\" Copyright (c) 1989, 1991, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" %sccs.include.redist.roff%
5.\"
6.\"	@(#)getlogin.2	8.1 (Berkeley) 06/09/93
7.\"
8.Dd
9.Dt GETLOGIN 2
10.Os BSD 4.2
11.Sh NAME
12.Nm getlogin ,
13.Nm setlogin
14.Nd get/set login name
15.Sh SYNOPSIS
16.Fd #include <unistd.h>
17.Ft char *
18.Fn getlogin void
19.Ft int
20.Fn setlogin "const char *name"
21.Sh DESCRIPTION
22The
23.Fn getlogin
24routine
25returns the login name of the user associated with the current session,
26as previously set by
27.Fn setlogin .
28The name is normally associated with a login shell
29at the time a session is created,
30and is inherited by all processes descended from the login shell.
31(This is true even if some of those processes assume another user ID,
32for example when
33.Xr su 1
34is used.)
35.Pp
36.Fn Setlogin
37sets the login name of the user associated with the current session to
38.Fa name .
39This call is restricted to the super-user, and
40is normally used only when a new session is being created on behalf
41of the named user
42(for example, at login time, or when a remote shell is invoked).
43.Sh RETURN VALUES
44If a call to
45.Fn getlogin
46succeeds, it returns a pointer to a null-terminated string in a static buffer.
47If the name has not been set, it returns
48.Dv NULL .
49If a call to
50.Fn setlogin
51succeeds, a value of 0 is returned.  If
52.Fn setlogin
53fails, a value of -1 is returned and an error code is
54placed in the global location
55.Va errno .
56.Sh ERRORS
57The following errors may be returned by these calls:
58.Bl -tag -width Er
59.It Bq Er EFAULT
60The
61.Fa name
62parameter gave an
63invalid address.
64.It Bq Er EINVAL
65The
66.Fa name
67parameter
68pointed to a string that was too long.
69Login names are limited to
70.Dv MAXLOGNAME
71(from
72.Ao Pa sys/param.h Ac )
73characters, currently 12.
74.It Bq Er EPERM
75The caller tried to set the login name and was not the super-user.
76.El
77.Sh SEE ALSO
78.Xr setsid 2
79.Sh BUGS
80Login names are limited in length by
81.Fn setlogin .
82However, lower limits are placed on login names elsewhere in the system
83.Pf ( Dv UT_NAMESIZE
84in
85.Ao Pa utmp.h Ac ) .
86.Pp
87In earlier versions of the system,
88.Fn getlogin
89failed unless the process was associated with a login terminal.
90The current implementation (using
91.Fn setlogin )
92allows getlogin to succeed even when the process has no controlling terminal.
93In earlier versions of the system, the value returned by
94.Fn getlogin
95could not be trusted without checking the user ID.
96Portable programs should probably still make this check.
97.Sh HISTORY
98The
99.Fn getlogin
100function first appeared in 4.4BSD.
101