1*2fe8fb19SBen Gras.\" $NetBSD: setuid.2,v 1.22 2010/04/05 07:44:28 wiz Exp $ 2*2fe8fb19SBen Gras.\" 3*2fe8fb19SBen Gras.\" Copyright (c) 1983, 1991, 1993 4*2fe8fb19SBen Gras.\" The Regents of the University of California. All rights reserved. 5*2fe8fb19SBen Gras.\" 6*2fe8fb19SBen Gras.\" Redistribution and use in source and binary forms, with or without 7*2fe8fb19SBen Gras.\" modification, are permitted provided that the following conditions 8*2fe8fb19SBen Gras.\" are met: 9*2fe8fb19SBen Gras.\" 1. Redistributions of source code must retain the above copyright 10*2fe8fb19SBen Gras.\" notice, this list of conditions and the following disclaimer. 11*2fe8fb19SBen Gras.\" 2. Redistributions in binary form must reproduce the above copyright 12*2fe8fb19SBen Gras.\" notice, this list of conditions and the following disclaimer in the 13*2fe8fb19SBen Gras.\" documentation and/or other materials provided with the distribution. 14*2fe8fb19SBen Gras.\" 3. Neither the name of the University nor the names of its contributors 15*2fe8fb19SBen Gras.\" may be used to endorse or promote products derived from this software 16*2fe8fb19SBen Gras.\" without specific prior written permission. 17*2fe8fb19SBen Gras.\" 18*2fe8fb19SBen Gras.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19*2fe8fb19SBen Gras.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20*2fe8fb19SBen Gras.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21*2fe8fb19SBen Gras.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22*2fe8fb19SBen Gras.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23*2fe8fb19SBen Gras.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24*2fe8fb19SBen Gras.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25*2fe8fb19SBen Gras.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26*2fe8fb19SBen Gras.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27*2fe8fb19SBen Gras.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28*2fe8fb19SBen Gras.\" SUCH DAMAGE. 29*2fe8fb19SBen Gras.\" 30*2fe8fb19SBen Gras.\" @(#)setuid.2 8.1 (Berkeley) 6/4/93 31*2fe8fb19SBen Gras.\" 32*2fe8fb19SBen Gras.Dd April 3, 2010 33*2fe8fb19SBen Gras.Dt SETUID 2 34*2fe8fb19SBen Gras.Os 35*2fe8fb19SBen Gras.Sh NAME 36*2fe8fb19SBen Gras.Nm setuid , 37*2fe8fb19SBen Gras.Nm seteuid , 38*2fe8fb19SBen Gras.Nm setgid , 39*2fe8fb19SBen Gras.Nm setegid 40*2fe8fb19SBen Gras.Nd set user and group ID 41*2fe8fb19SBen Gras.Sh LIBRARY 42*2fe8fb19SBen Gras.Lb libc 43*2fe8fb19SBen Gras.Sh SYNOPSIS 44*2fe8fb19SBen Gras.In unistd.h 45*2fe8fb19SBen Gras.Ft int 46*2fe8fb19SBen Gras.Fn setuid "uid_t uid" 47*2fe8fb19SBen Gras.Ft int 48*2fe8fb19SBen Gras.Fn seteuid "uid_t euid" 49*2fe8fb19SBen Gras.Ft int 50*2fe8fb19SBen Gras.Fn setgid "gid_t gid" 51*2fe8fb19SBen Gras.Ft int 52*2fe8fb19SBen Gras.Fn setegid "gid_t egid" 53*2fe8fb19SBen Gras.Sh DESCRIPTION 54*2fe8fb19SBen GrasThe 55*2fe8fb19SBen Gras.Fn setuid 56*2fe8fb19SBen Grasfunction 57*2fe8fb19SBen Grassets the real and effective 58*2fe8fb19SBen Grasuser IDs and the saved set-user-ID of the current process 59*2fe8fb19SBen Grasto the specified value. 60*2fe8fb19SBen GrasThe 61*2fe8fb19SBen Gras.Fn setuid 62*2fe8fb19SBen Grasfunction is permitted if the specified ID is equal to the real user ID 63*2fe8fb19SBen Grasof the process, or if the effective user ID is that of the super user. 64*2fe8fb19SBen Gras.Pp 65*2fe8fb19SBen GrasThe 66*2fe8fb19SBen Gras.Fn setgid 67*2fe8fb19SBen Grasfunction 68*2fe8fb19SBen Grassets the real and effective 69*2fe8fb19SBen Grasgroup IDs and the saved set-group-ID of the current process 70*2fe8fb19SBen Grasto the specified value. 71*2fe8fb19SBen GrasThe 72*2fe8fb19SBen Gras.Fn setgid 73*2fe8fb19SBen Grasfunction is permitted if the specified ID is equal to the real group ID 74*2fe8fb19SBen Grasof the process, or if the effective user ID is that of the super user. 75*2fe8fb19SBen GrasSupplementary group IDs remain unchanged. 76*2fe8fb19SBen Gras.Pp 77*2fe8fb19SBen GrasThe 78*2fe8fb19SBen Gras.Fn seteuid 79*2fe8fb19SBen Grasfunction 80*2fe8fb19SBen Gras.Pq Fn setegid 81*2fe8fb19SBen Grassets the effective user ID (group ID) of the 82*2fe8fb19SBen Grascurrent process. 83*2fe8fb19SBen GrasThe effective user ID may be set to the value 84*2fe8fb19SBen Grasof the real user ID or the saved set-user-ID (see 85*2fe8fb19SBen Gras.Xr intro 2 86*2fe8fb19SBen Grasand 87*2fe8fb19SBen Gras.Xr execve 2 ) ; 88*2fe8fb19SBen Grasin this way, the effective user ID of a set-user-ID executable 89*2fe8fb19SBen Grasmay be toggled by switching to the real user ID, then re-enabled 90*2fe8fb19SBen Grasby reverting to the set-user-ID value. 91*2fe8fb19SBen GrasSimilarly, the effective group ID may be set to the value 92*2fe8fb19SBen Grasof the real group ID or the saved set-group-ID. 93*2fe8fb19SBen Gras.Sh RETURN VALUES 94*2fe8fb19SBen GrasUpon success, these functions return 0; 95*2fe8fb19SBen Grasotherwise \-1 is returned. 96*2fe8fb19SBen Gras.Pp 97*2fe8fb19SBen GrasIf the user is not the super user, or the uid 98*2fe8fb19SBen Grasspecified is not the real, effective ID, or saved ID, 99*2fe8fb19SBen Grasthese functions return \-1. 100*2fe8fb19SBen Gras.Sh SEE ALSO 101*2fe8fb19SBen Gras.Xr getgid 2 , 102*2fe8fb19SBen Gras.Xr getgroups 2 , 103*2fe8fb19SBen Gras.Xr getuid 2 104*2fe8fb19SBen Gras.Sh STANDARDS 105*2fe8fb19SBen GrasThe 106*2fe8fb19SBen Gras.Fn setuid 107*2fe8fb19SBen Grasand 108*2fe8fb19SBen Gras.Fn setgid 109*2fe8fb19SBen Grasfunctions are compliant with the 110*2fe8fb19SBen Gras.St -p1003.1-90 111*2fe8fb19SBen Grasspecification with 112*2fe8fb19SBen Gras.Li _POSIX_SAVED_IDS 113*2fe8fb19SBen Grasnot defined. 114*2fe8fb19SBen GrasWe do not implement the 115*2fe8fb19SBen Gras.Li _POSIX_SAVED_IDS 116*2fe8fb19SBen Grasoption as specified in the standard 117*2fe8fb19SBen Grasbecause this would make it impossible for a set-user-ID executable owned 118*2fe8fb19SBen Grasby a user other than the super-user to permanently revoke its privileges. 119*2fe8fb19SBen Gras.Pp 120*2fe8fb19SBen GrasThe 121*2fe8fb19SBen Gras.Fn seteuid 122*2fe8fb19SBen Grasand 123*2fe8fb19SBen Gras.Fn setegid 124*2fe8fb19SBen Grasfunctions are compliant with 125*2fe8fb19SBen Gras.St -p1003.1-2001 . 126*2fe8fb19SBen Gras.Sh HISTORY 127*2fe8fb19SBen GrasThe 128*2fe8fb19SBen Gras.Fn setuid 129*2fe8fb19SBen Grasand 130*2fe8fb19SBen Gras.Fn setgid 131*2fe8fb19SBen Grasfunctions appeared in 132*2fe8fb19SBen Gras.At v2 133*2fe8fb19SBen Grasand 134*2fe8fb19SBen Gras.At v4 , 135*2fe8fb19SBen Grasrespectively. 136