|
|
1.1 root 1: .\" Copyright (c) 1989 The Regents of the University of California.
2: .\" All rights reserved.
3: .\"
4: .\" Redistribution and use in source and binary forms are permitted provided
5: .\" that: (1) source distributions retain this entire copyright notice and
6: .\" comment, and (2) distributions including binaries display the following
7: .\" acknowledgement: ``This product includes software developed by the
8: .\" University of California, Berkeley and its contributors'' in the
9: .\" documentation or other materials provided with the distribution and in
10: .\" all advertising materials mentioning features or use of this software.
11: .\" Neither the name of the University nor the names of its contributors may
12: .\" be used to endorse or promote products derived from this software without
13: .\" specific prior written permission.
14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17: .\"
18: .\" @(#)getlogin.2 6.1 (Berkeley) 6/25/90
19: .\"
20: .TH GETLOGIN 2 "June 25, 1990"
21: .UC 5
22: .SH NAME
23: getlogin, setlogin \- get/set login name
24: .SH SYNOPSIS
25: .nf
26: .ft B
27: char *getlogin()
28: .PP
29: .ft B
30: setlogin(name)
31: char *name;
32: .fi
33: .SH DESCRIPTION
34: The
35: .I getlogin
36: routine
37: returns the login name of the user associated with the current session,
38: as previously set by
39: .IR setlogin .
40: The name is normally associated with a login shell
41: at the time a session is created,
42: and is inherited by all processes descended from the login shell.
43: (This is true even if some of those processes assume another user ID,
44: for example when
45: .IR su (1)
46: is used.)
47: .PP
48: .I Setlogin
49: sets the login name of the user associated with the current session to
50: .IR name .
51: This call is restricted to the super-user, and
52: is normally used only when a new session is being created on behalf
53: of the named user
54: (for example, at login time, or when a remote shell is invoked).
55: .SH "RETURN VALUE
56: If a call to
57: .I getlogin
58: succeeds, it returns a pointer to a null-terminated string in a static buffer.
59: If the name has not been set, it returns NULL.
60: If a call to
61: .I setlogin
62: succeeds, a value of 0 is returned. If
63: .I setlogin
64: fails, then a value of \-1 is returned and an error code is
65: placed in the global location \fIerrno\fP.
66: .SH "ERRORS
67: The following errors may be returned by these calls:
68: .TP 15
69: [EFAULT]
70: The \fIname\fP parameter gave an
71: invalid address.
72: .TP 15
73: [EINVAL]
74: The \fIname\fP parameter
75: pointed to a string that was too long.
76: Login names are limited to MAXLOGNAME (from
77: .IR <sys/param.h> )
78: characters, currently 12.
79: .TP 15
80: [EPERM]
81: The caller tried to set the login name and was not the super-user.
82: .SH SEE ALSO
83: setsid(2)
84: .SH BUGS
85: Login names are limited in length by
86: .IR setlogin .
87: However, lower limits are placed on login names elsewhere in the system
88: (UT_NAMESIZE in
89: .IR <utmp.h> ).
90: .PP
91: In earlier versions of the system,
92: .I getlogin
93: failed unless the process was associated with a login terminal.
94: The current implementation (using
95: .IR setlogin )
96: allows getlogin to succeed even when the process has no controlling terminal.
97: In earlier versions of the system, the value returned by
98: .I getlogin
99: could not be trusted without checking the user ID.
100: Portable programs should probably still make this check.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.