Tim Waugh eb20fc
--- /dev/null	2005-10-10 09:36:06.437701000 +0100
Tim Waugh eb20fc
+++ coreutils-5.93/man/runuser.1	2005-11-14 10:54:44.000000000 +0000
Tim Waugh eb20fc
@@ -0,0 +1,59 @@
Tim Waugh eb20fc
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.33.
Tim Waugh eb20fc
+.TH RUNUSER "1" "September 2004" "runuser (coreutils) 5.2.1" "User Commands"
Tim Waugh eb20fc
+.SH NAME
Tim Waugh eb20fc
+runuser \- run a shell with substitute user and group IDs, similar to su, but will not prompt for password.
Tim Waugh eb20fc
+.SH SYNOPSIS
Tim Waugh eb20fc
+.B runuser
Tim Waugh eb20fc
+[\fIOPTION\fR]... [\fI-\fR] [\fIUSER \fR[\fIARG\fR]...]
Tim Waugh eb20fc
+.SH DESCRIPTION
Tim Waugh eb20fc
+.\" Add any additional description here
Tim Waugh eb20fc
+.PP
Tim Waugh eb20fc
+Change the effective user id and group id to that of USER.
Tim Waugh eb20fc
+.TP
Tim Waugh eb20fc
+-, \fB\-l\fR, \fB\-\-login\fR
Tim Waugh eb20fc
+make the shell a login shell
Tim Waugh eb20fc
+.TP
Tim Waugh eb20fc
+\fB\-c\fR, \fB\-\-commmand\fR=\fICOMMAND\fR
Tim Waugh eb20fc
+pass a single COMMAND to the shell with \fB\-c\fR
Tim Waugh eb20fc
+.TP
Tim Waugh eb20fc
+\fB\-f\fR, \fB\-\-fast\fR
Tim Waugh eb20fc
+pass \fB\-f\fR to the shell (for csh or tcsh)
Tim Waugh eb20fc
+.TP
Tim Waugh eb20fc
+\fB\-m\fR, \fB\-\-preserve\-environment\fR
Tim Waugh eb20fc
+do not reset environment variables
Tim Waugh eb20fc
+.TP
Tim Waugh eb20fc
+\fB\-p\fR
Tim Waugh eb20fc
+same as \fB\-m\fR
Tim Waugh eb20fc
+.TP
Tim Waugh eb20fc
+\fB\-s\fR, \fB\-\-shell\fR=\fISHELL\fR
Tim Waugh eb20fc
+run SHELL if /etc/shells allows it
Tim Waugh eb20fc
+.TP
Tim Waugh eb20fc
+\fB\-\-help\fR
Tim Waugh eb20fc
+display this help and exit
Tim Waugh eb20fc
+.TP
Tim Waugh eb20fc
+\fB\-\-version\fR
Tim Waugh eb20fc
+output version information and exit
Tim Waugh eb20fc
+.PP
Tim Waugh eb20fc
+A mere - implies \fB\-l\fR.   If USER not given, assume root.
Tim Waugh eb20fc
+.SH AUTHOR
Tim Waugh eb20fc
+Written by David MacKenzie, Dan Walsh.
Tim Waugh eb20fc
+.SH "REPORTING BUGS"
Tim Waugh eb20fc
+Report bugs to <bug-coreutils@gnu.org>.
Tim Waugh eb20fc
+.SH COPYRIGHT
Tim Waugh eb20fc
+Copyright \(co 2004 Free Software Foundation, Inc.
Tim Waugh eb20fc
+.br
Tim Waugh eb20fc
+This is free software; see the source for copying conditions.  There is NO
Tim Waugh eb20fc
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Tim Waugh eb20fc
+.SH "SEE ALSO"
Tim Waugh eb20fc
+Since this command is trimmed down version of su use you can use the su manual.
Tim Waugh eb20fc
+The full documentation for
Tim Waugh eb20fc
+.B su
Tim Waugh eb20fc
+is maintained as a Texinfo manual.  If the
Tim Waugh eb20fc
+.B info
Tim Waugh eb20fc
+and
Tim Waugh eb20fc
+.B su
Tim Waugh eb20fc
+programs are properly installed at your site, the command
Tim Waugh eb20fc
+.IP
Tim Waugh eb20fc
+.B info coreutils su
Tim Waugh eb20fc
+.PP
Tim Waugh eb20fc
+should give you access to the complete manual.
Tim Waugh eb20fc
--- coreutils-5.93/man/Makefile.am.runuser	2005-10-13 15:12:51.000000000 +0100
Tim Waugh eb20fc
+++ coreutils-5.93/man/Makefile.am	2005-11-14 10:54:44.000000000 +0000
Tim Waugh eb20fc
@@ -7,7 +7,7 @@
Tim Waugh eb20fc
   link.1 ln.1 logname.1 \
Tim Waugh eb20fc
   ls.1 md5sum.1 mkdir.1 mkfifo.1 mknod.1 mv.1 nice.1 nl.1 nohup.1 od.1 \
Tim Waugh eb20fc
   paste.1 pathchk.1 pinky.1 pr.1 printenv.1 printf.1 ptx.1 pwd.1 readlink.1 \
Tim Waugh eb20fc
-  rm.1 rmdir.1 seq.1 sha1sum.1 shred.1 sleep.1 sort.1 split.1 stat.1 stty.1 \
Tim Waugh eb20fc
+  rm.1 rmdir.1 runuser.1 seq.1 sha1sum.1 shred.1 sleep.1 sort.1 split.1 stat.1 stty.1 \
Tim Waugh eb20fc
   su.1 sum.1 sync.1 tac.1 tail.1 tee.1 test.1 touch.1 tr.1 true.1 tsort.1 \
Tim Waugh eb20fc
   tty.1 uname.1 unexpand.1 uniq.1 unlink.1 uptime.1 users.1 vdir.1 wc.1 \
Tim Waugh eb20fc
   who.1 whoami.1 yes.1
Tim Waugh eb20fc
@@ -81,6 +81,7 @@
Tim Waugh eb20fc
 readlink.1:	$(common_dep)	$(srcdir)/readlink.x	../src/readlink.c
Tim Waugh eb20fc
 rm.1:		$(common_dep)	$(srcdir)/rm.x		../src/rm.c
Tim Waugh eb20fc
 rmdir.1:	$(common_dep)	$(srcdir)/rmdir.x	../src/rmdir.c
Tim Waugh 2190ea
+runuser.1:	$(common_dep)	$(srcdir)/runuser.x	../src/su.c
Tim Waugh eb20fc
 seq.1:		$(common_dep)	$(srcdir)/seq.x		../src/seq.c
Tim Waugh eb20fc
 sha1sum.1:	$(common_dep)	$(srcdir)/sha1sum.x	../src/md5sum.c
Tim Waugh eb20fc
 shred.1:	$(common_dep)	$(srcdir)/shred.x	../src/shred.c
Tim Waugh eb20fc
--- /dev/null	2005-10-10 09:36:06.437701000 +0100
Tim Waugh eb20fc
+++ coreutils-5.93/man/runuser.x	2005-11-14 10:54:45.000000000 +0000
Tim Waugh eb20fc
@@ -0,0 +1,4 @@
Tim Waugh eb20fc
+[NAME]
Tim Waugh eb20fc
+runuser \- run a shell with substitute user and group IDs
Tim Waugh eb20fc
+[DESCRIPTION]
Tim Waugh eb20fc
+.\" Add any additional description here
Tim Waugh 2190ea
--- coreutils-5.93/src/su.c	2005-11-14 10:54:44.000000000 +0000
Tim Waugh 2190ea
+++ coreutils-5.93/src/su.c	2005-11-24 16:12:18.000000000 +0000
Tim Waugh 2190ea
@@ -132,9 +132,15 @@
Tim Waugh 2190ea
 #include "error.h"
Tim Waugh 2190ea
 
Tim Waugh c3e4c8
 /* The official name of this program (e.g., no `g' prefix).  */
Tim Waugh 2190ea
+#ifndef RUNUSER
Tim Waugh c3e4c8
 #define PROGRAM_NAME "su"
Tim Waugh 2190ea
+#else
Tim Waugh 2190ea
+#define PROGRAM_NAME "runuser"
Tim Waugh 2190ea
+#endif
Tim Waugh c3e4c8
 
Tim Waugh c3e4c8
+#ifndef AUTHORS
Tim Waugh c3e4c8
 #define AUTHORS "David MacKenzie"
Tim Waugh c3e4c8
+#endif
Tim Waugh c3e4c8
 
Tim Waugh c3e4c8
 #if HAVE_PATHS_H
Tim Waugh c3e4c8
 # include <paths.h>
Tim Waugh 2190ea
@@ -172,6 +178,10 @@
Tim Waugh c3e4c8
 #ifndef USE_PAM
Tim Waugh c3e4c8
 char *crypt ();
Tim Waugh c3e4c8
 #endif
Tim Waugh c3e4c8
+#ifndef CHECKPASSWD
Tim Waugh c3e4c8
+#define CHECKPASSWD 1
Tim Waugh c3e4c8
+#endif
Tim Waugh c3e4c8
+
Tim Waugh c3e4c8
 char *getpass ();
Tim Waugh c3e4c8
 char *getusershell ();
Tim Waugh c3e4c8
 void endusershell ();
Tim Waugh 2190ea
@@ -303,10 +313,12 @@
Tim Waugh 2190ea
   retval = pam_start(PROGRAM_NAME, pw->pw_name, &conv, &pamh);
Tim Waugh 2190ea
   PAM_BAIL_P;
Tim Waugh 2190ea
 
Tim Waugh 2190ea
+#ifndef RUNUSER
Tim Waugh 2190ea
   if (getuid() != 0 && !isatty(0)) {
Tim Waugh 2190ea
 	fprintf(stderr, "standard in must be a tty\n");
Tim Waugh 2190ea
 	exit(1);
Tim Waugh 2190ea
   }
Tim Waugh 2190ea
+#endif
Tim Waugh 2190ea
 
Tim Waugh 2190ea
   caller = getpwuid(getuid());
Tim Waugh 2190ea
   if(caller != NULL && caller->pw_name != NULL) {
Tim Waugh 2190ea
@@ -323,6 +335,11 @@
Tim Waugh 2190ea
     retval = pam_set_item(pamh, PAM_TTY, tty_name);
Tim Waugh 2190ea
     PAM_BAIL_P;
Tim Waugh 2190ea
   }
Tim Waugh 2190ea
+#ifdef RUNUSER
Tim Waugh 2190ea
+  if (getuid() != geteuid())
Tim Waugh 2190ea
+    /* safety net: deny operation if we are suid by accident */
Tim Waugh 2190ea
+    error(EXIT_FAIL, 1, "runuser may not be setuid");
Tim Waugh 2190ea
+#else
Tim Waugh 2190ea
   retval = pam_authenticate(pamh, 0);
Tim Waugh 2190ea
   PAM_BAIL_P;
Tim Waugh 2190ea
   retval = pam_acct_mgmt(pamh, 0);
Tim Waugh 2190ea
@@ -332,6 +349,7 @@
Tim Waugh 2190ea
     PAM_BAIL_P;
Tim Waugh 2190ea
   }
Tim Waugh 2190ea
   PAM_BAIL_P;
Tim Waugh 2190ea
+#endif
Tim Waugh 2190ea
   /* must be authenticated if this point was reached */
Tim Waugh 2190ea
   return 1;
Tim Waugh 2190ea
 #else /* !USE_PAM */
Tim Waugh 2190ea
@@ -746,7 +764,7 @@
Tim Waugh c3e4c8
 			  : DEFAULT_SHELL);
Tim Waugh c3e4c8
   endpwent ();
Tim Waugh c3e4c8
 
Tim Waugh c3e4c8
-  if (!correct_password (pw))
Tim Waugh c3e4c8
+  if (CHECKPASSWD && !correct_password (pw))
Tim Waugh c3e4c8
     {
Tim Waugh c3e4c8
 #ifdef SYSLOG_FAILURE
Tim Waugh c3e4c8
       log_su (pw, false);
Tim Waugh 2190ea
--- coreutils-5.93/src/Makefile.am	2005-11-14 10:54:44.000000000 +0000
Tim Waugh 2190ea
+++ coreutils-5.93/src/Makefile.am	2005-11-24 16:18:58.000000000 +0000
Tim Waugh c3e4c8
@@ -17,7 +17,7 @@
Tim Waugh c3e4c8
 ## along with this program; if not, write to the Free Software Foundation,
Tim Waugh c3e4c8
 ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Tim Waugh c3e4c8
 
Tim Waugh c3e4c8
-EXTRA_PROGRAMS = chroot df hostid nice pinky stty su uname uptime users who
Tim Waugh c3e4c8
+EXTRA_PROGRAMS = chroot df hostid nice pinky stty su runuser uname uptime users who
Tim Waugh c3e4c8
 
Tim Waugh c3e4c8
 bin_SCRIPTS = groups
Tim Waugh c3e4c8
 bin_PROGRAMS = [ chgrp chown chmod cp dd dircolors du \
Tim Waugh 2190ea
@@ -93,4 +93,8 @@
Tim Waugh c3e4c8
 su_LDADD = $(LDADD) $(LIB_CRYPT) @LIB_PAM@
Tim Waugh c3e4c8
 
Tim Waugh 2190ea
+runuser_SOURCES = su.c
Tim Waugh 2190ea
+runuser_CFLAGS = -DRUNUSER -DAUTHORS="\"David MacKenzie, Dan Walsh\""
Tim Waugh 2190ea
+runuser_LDADD = $(LDADD) $(LIB_CRYPT) @LIB_PAM@
Tim Waugh 2190ea
+
Tim Waugh c3e4c8
 $(PROGRAMS): ../lib/libcoreutils.a
Tim Waugh c3e4c8
 
Tim Waugh 2190ea
@@ -106,7 +110,7 @@
Tim Waugh c3e4c8
 	chmod +x $@-t
Tim Waugh c3e4c8
 	mv $@-t $@
Tim Waugh c3e4c8
 
Tim Waugh c3e4c8
-all-local: su$(EXEEXT)
Tim Waugh c3e4c8
+all-local: su$(EXEEXT) runuser
Tim Waugh c3e4c8
 
Tim Waugh c3e4c8
 installed_su = $(DESTDIR)$(bindir)/`echo su|sed '$(transform)'`
Tim Waugh c3e4c8
 
Tim Waugh eb20fc
--- coreutils-5.93/tests/help-version.runuser	2005-01-05 22:08:48.000000000 +0000
Tim Waugh eb20fc
+++ coreutils-5.93/tests/help-version	2005-11-14 10:54:45.000000000 +0000
Tim Waugh c3e4c8
@@ -136,6 +136,7 @@
Tim Waugh c3e4c8
 seq_args=10
Tim Waugh c3e4c8
 sleep_args=0
Tim Waugh c3e4c8
 su_args=--version
Tim Waugh c3e4c8
+runuser_args=--version
Tim Waugh c3e4c8
 test_args=foo
Tim Waugh c3e4c8
 
Tim Waugh c3e4c8
 # This is necessary in the unusual event that there is
Tim Waugh eb20fc
--- coreutils-5.93/README.runuser	2005-09-28 19:34:26.000000000 +0100
Tim Waugh eb20fc
+++ coreutils-5.93/README	2005-11-14 10:54:45.000000000 +0000
Tim Waugh 8d758e
@@ -11,7 +11,7 @@
Tim Waugh 8d758e
   df dir dircolors dirname du echo env expand expr factor false fmt fold
Tim Waugh 8d758e
   ginstall groups head hostid hostname id join kill link ln logname ls
Tim Waugh 8d758e
   md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
Tim Waugh 8d758e
-  printenv printf ptx pwd readlink rm rmdir seq sha1sum shred sleep sort
Tim Waugh 8d758e
+  printenv printf ptx pwd readlink rm rmdir runuser seq sha1sum shred sleep sort
Tim Waugh 8d758e
   split stat stty su sum sync tac tail tee test touch tr true tsort tty
Tim Waugh 8d758e
   uname unexpand uniq unlink uptime users vdir wc who whoami yes
Tim Waugh 8d758e
 
Tim Waugh eb20fc
--- coreutils-5.93/AUTHORS.runuser	2004-11-03 23:10:50.000000000 +0000
Tim Waugh eb20fc
+++ coreutils-5.93/AUTHORS	2005-11-14 10:54:45.000000000 +0000
Tim Waugh c3e4c8
@@ -59,6 +59,7 @@
Tim Waugh c3e4c8
 readlink: Dmitry V. Levin
Tim Waugh c3e4c8
 rm: Paul Rubin, David MacKenzie, Richard Stallman, Jim Meyering
Tim Waugh c3e4c8
 rmdir: David MacKenzie
Tim Waugh c3e4c8
+runuser: David MacKenzie, Dan Walsh
Tim Waugh c3e4c8
 seq: Ulrich Drepper
Tim Waugh c3e4c8
 sha1sum: Ulrich Drepper, Scott Miller
Tim Waugh c3e4c8
 shred: Colin Plumb