diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc index 600f1ee17e20..95d6cc591f8a 100644 --- a/lib/libc/sys/Makefile.inc +++ b/lib/libc/sys/Makefile.inc @@ -1,5 +1,5 @@ # from: @(#)Makefile.inc 5.11 (Berkeley) 6/23/91 -# $Id: Makefile.inc,v 1.17 1994/04/02 05:38:15 cgd Exp $ +# $Id: Makefile.inc,v 1.18 1994/04/06 23:29:29 cgd Exp $ # sys sources .PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/sys ${.CURDIR}/sys @@ -26,8 +26,8 @@ ASM= accept.o access.o acct.o adjtime.o async_daemon.o bind.o chdir.o \ profil.o quotactl.o read.o readlink.o readv.o recvfrom.o recvmsg.o \ rename.o revoke.o rmdir.o select.o semsys.o sendmsg.o sendto.o \ setdomainname.o setegid.o seteuid.o setgid.o setgroups.o sethostid.o \ - sethostname.o setitimer.o setpgid.o setpriority.o setregid.o \ - setreuid.o setrlimit.o setsid.o setsockopt.o settimeofday.o setuid.o \ + sethostname.o setitimer.o setpgid.o setpriority.o \ + setrlimit.o setsid.o setsockopt.o settimeofday.o setuid.o \ shmsys.o shutdown.o sigaction.o sigstack.o socket.o socketpair.o \ stat.o statfs.o swapon.o symlink.o sync.o sysarch.o \ umask.o uname.o unlink.o unmount.o utimes.o vadvise.o wait4.o write.o \ @@ -92,7 +92,7 @@ MAN2+= accept.0 access.0 acct.0 adjtime.0 async_daemon.0 bind.0 brk.0 \ mprotect.0 msync.0 munmap.0 nfssvc.0 open.0 pipe.0 \ quotactl.0 read.0 readlink.0 reboot.0 recv.0 rename.0 \ rmdir.0 select.0 send.0 setgroups.0 setpgid.0 setregid.0 setreuid.0 \ - shutdown.0 sigaction.0 sigprocmask.0 sigreturn.0 sigstack.0 \ + setuid.0 shutdown.0 sigaction.0 sigprocmask.0 sigreturn.0 sigstack.0 \ sigsuspend.0 socket.0 socketpair.0 stat.0 statfs.0 swapon.0 \ symlink.0 sync.0 sysarch.0 syscall.0 truncate.0 umask.0 uname.0 \ unlink.0 utimes.0 vfork.0 wait.0 write.0 @@ -122,6 +122,7 @@ MLINKS+=read.2 readv.2 MLINKS+=recv.2 recvfrom.2 recv.2 recvmsg.2 MLINKS+=send.2 sendmsg.2 send.2 sendto.2 MLINKS+=setpgid.2 setpgrp.2 +MLINKS+=setuid.3 setegid.3 setuid.3 seteuid.3 setuid.3 setgid.3 MLINKS+=stat.2 fstat.2 stat.2 lstat.2 MLINKS+=statfs.2 fstatfs.2 MLINKS+=truncate.2 ftruncate.2 diff --git a/lib/libc/sys/setuid.2 b/lib/libc/sys/setuid.2 new file mode 100644 index 000000000000..0295b3ffe3bc --- /dev/null +++ b/lib/libc/sys/setuid.2 @@ -0,0 +1,103 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" from: @(#)setuid.3 6.4 (Berkeley) 4/19/91 +.\" $Id: setuid.2,v 1.1 1994/04/06 23:29:33 cgd Exp $ +.\" +.Dd April 19, 1991 +.Dt SETUID 2 +.Os BSD 4.2 +.Sh NAME +.Nm setuid , +.Nm seteuid , +.Nm setgid , +.Nm setegid +.Nd set user and group ID +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Ft int +.Fn setuid "uid_t uid" +.Ft int +.Fn seteuid "uid_t euid" +.Ft int +.Fn setgid "gid_t gid" +.Ft int +.Fn setegid "gid_t egid" +.Sh DESCRIPTION +The +.Fn setuid +function sets the real and effective user IDs and the saved +set-user-ID of the current process to the specified value. The +.Fn setuid +function is permitted if the specified ID is equal to the real user ID of +the process, or if the effective user ID is that of the super user. +.Pp +The +.Fn setgid +function sets the real and effective group IDs and the saved +set-group-ID of the current process to the specified value. The +.Fn setgid +function is permitted if the specified ID is equal to the real group ID +of the process, or if the effective user ID is that of the super user. +.Pp +The +.Fn seteuid +function sets the effective user ID +of the current process. The effective user ID may be set to the value of +the real user ID or the saved set-user-ID (see +.Xr intro 2 +and +.Xr execve 2 ); +in this way, the effective user ID of a set-user-ID executable may be +toggled by switching to the real user ID, then re-enabled by reverting to +the set-user-ID value. +Similarly, with +.Fn setegid +the effective group ID may be set to +the value of the real group ID or the saved set-user-ID. +.Sh RETURN VALUES +Upon success, these functions return 0; +otherwise \-1 is returned. +.Pp +If the user is not the super user, or the uid (gid) specified is not +the real ID, effective ID, or saved ID of the process, +these functions return \-1. +.Sh SEE ALSO +.Xr getuid 2 , +.Xr getgid 2 +.Sh HISTORY +A +.Fn setuid +and +.Fn setgid +syscall appeared in +.At v6 .