|
|
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.