Blob Blame History Raw
--- /dev/null	2004-09-30 04:21:43.103661032 -0400
+++ coreutils-5.2.1/man/runuser.1	2004-10-05 09:56:25.919169327 -0400
@@ -0,0 +1,59 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.33.
+.TH RUNUSER "1" "September 2004" "runuser (coreutils) 5.2.1" "User Commands"
+.SH NAME
+runuser \- run a shell with substitute user and group IDs, similar to su, but will not prompt for password.
+.SH SYNOPSIS
+.B runuser
+[\fIOPTION\fR]... [\fI-\fR] [\fIUSER \fR[\fIARG\fR]...]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Change the effective user id and group id to that of USER.
+.TP
+-, \fB\-l\fR, \fB\-\-login\fR
+make the shell a login shell
+.TP
+\fB\-c\fR, \fB\-\-commmand\fR=\fICOMMAND\fR
+pass a single COMMAND to the shell with \fB\-c\fR
+.TP
+\fB\-f\fR, \fB\-\-fast\fR
+pass \fB\-f\fR to the shell (for csh or tcsh)
+.TP
+\fB\-m\fR, \fB\-\-preserve\-environment\fR
+do not reset environment variables
+.TP
+\fB\-p\fR
+same as \fB\-m\fR
+.TP
+\fB\-s\fR, \fB\-\-shell\fR=\fISHELL\fR
+run SHELL if /etc/shells allows it
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+A mere - implies \fB\-l\fR.   If USER not given, assume root.
+.SH AUTHOR
+Written by David MacKenzie, Dan Walsh.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2004 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+Since this command is trimmed down version of su use you can use the su manual.
+The full documentation for
+.B su
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B su
+programs are properly installed at your site, the command
+.IP
+.B info coreutils su
+.PP
+should give you access to the complete manual.
--- coreutils-5.2.1/man/Makefile.am.runuser	2004-01-23 10:54:23.000000000 -0500
+++ coreutils-5.2.1/man/Makefile.am	2004-10-05 09:56:25.921169102 -0400
@@ -7,7 +7,7 @@
   link.1 ln.1 logname.1 \
   ls.1 md5sum.1 mkdir.1 mkfifo.1 mknod.1 mv.1 nice.1 nl.1 nohup.1 od.1 \
   paste.1 pathchk.1 pinky.1 pr.1 printenv.1 printf.1 ptx.1 pwd.1 readlink.1 \
-  rm.1 rmdir.1 seq.1 sha1sum.1 shred.1 sleep.1 sort.1 split.1 stat.1 stty.1 \
+  rm.1 rmdir.1 runuser.1 seq.1 sha1sum.1 shred.1 sleep.1 sort.1 split.1 stat.1 stty.1 \
   su.1 sum.1 sync.1 tac.1 tail.1 tee.1 test.1 touch.1 tr.1 true.1 tsort.1 \
   tty.1 uname.1 unexpand.1 uniq.1 unlink.1 uptime.1 users.1 vdir.1 wc.1 \
   who.1 whoami.1 yes.1
@@ -81,6 +81,7 @@
 readlink.1:	$(common_dep)	$(srcdir)/readlink.x	../src/readlink.c
 rm.1:		$(common_dep)	$(srcdir)/rm.x		../src/rm.c
 rmdir.1:	$(common_dep)	$(srcdir)/rmdir.x	../src/rmdir.c
+runuser.1:	$(common_dep)	$(srcdir)/runuser.x	../src/runuser.c
 seq.1:		$(common_dep)	$(srcdir)/seq.x		../src/seq.c
 sha1sum.1:	$(common_dep)	$(srcdir)/sha1sum.x	../src/md5sum.c
 shred.1:	$(common_dep)	$(srcdir)/shred.x	../src/shred.c
--- /dev/null	2004-09-30 04:21:43.103661032 -0400
+++ coreutils-5.2.1/man/runuser.x	2004-10-05 09:56:25.922168989 -0400
@@ -0,0 +1,4 @@
+[NAME]
+runuser \- run a shell with substitute user and group IDs
+[DESCRIPTION]
+.\" Add any additional description here
--- coreutils-5.2.1/README.runuser	2004-01-18 02:59:41.000000000 -0500
+++ coreutils-5.2.1/README	2004-10-05 09:56:25.925168651 -0400
@@ -11,7 +11,7 @@
   df dir dircolors dirname du echo env expand expr factor false fmt fold
   ginstall groups head hostid hostname id join kill link ln logname ls
   md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
-  printenv printf ptx pwd readlink rm rmdir seq sha1sum shred sleep sort
+  printenv printf ptx pwd readlink rm rmdir runuser seq sha1sum shred sleep sort
   split stat stty su sum sync tac tail tee test touch tr true tsort tty
   uname unexpand uniq unlink uptime users vdir wc who whoami yes
 
--- coreutils-5.2.1/tests/help-version.runuser	2004-02-17 11:04:23.000000000 -0500
+++ coreutils-5.2.1/tests/help-version	2004-10-05 09:56:25.924168764 -0400
@@ -130,6 +130,7 @@
 seq_args=10
 sleep_args=0
 su_args=--version
+runuser_args=--version
 test_args=foo
 
 # This is necessary in the unusual event that there is
--- coreutils-5.2.1/src/su.c.runuser	2004-10-05 09:56:25.680196251 -0400
+++ coreutils-5.2.1/src/su.c	2004-10-05 09:56:25.915169778 -0400
@@ -171,6 +171,10 @@
 #ifndef USE_PAM
 char *crypt ();
 #endif
+#ifndef CHECKPASSWD
+#define CHECKPASSWD 1
+#endif
+
 char *getpass ();
 char *getusershell ();
 void endusershell ();
@@ -740,7 +744,7 @@
   pw->pw_dir = xstrdup (pw->pw_dir);
   pw->pw_shell = xstrdup (pw->pw_shell);
 
-  if (!correct_password (pw))
+  if (CHECKPASSWD && !correct_password (pw))
     {
 #ifdef SYSLOG_FAILURE
       log_su (pw, 0);
--- coreutils-5.2.1/src/Makefile.am.runuser	2004-10-05 09:56:25.677196589 -0400
+++ coreutils-5.2.1/src/Makefile.am	2004-10-05 09:56:25.916169665 -0400
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
 
-EXTRA_PROGRAMS = chroot df hostid nice pinky stty su uname uptime users who
+EXTRA_PROGRAMS = chroot df hostid nice pinky stty su runuser uname uptime users who
 
 bin_SCRIPTS = groups
 bin_PROGRAMS = [ chgrp chown chmod cp dd dircolors du \
@@ -67,6 +67,7 @@
 uptime_LDADD = $(LDADD) $(GETLOADAVG_LIBS)
 
 su_LDADD = $(LDADD) $(LIB_CRYPT) @LIB_PAM@
+runuser_LDADD = $(LDADD) $(LIB_CRYPT) 
 
 $(PROGRAMS): ../lib/libfetish.a
 
@@ -84,7 +85,7 @@
 	chmod +x $@-t
 	mv $@-t $@
 
-all-local: su$(EXEEXT)
+all-local: su$(EXEEXT) runuser
 
 installed_su = $(DESTDIR)$(bindir)/`echo su|sed '$(transform)'`
 
@@ -100,7 +101,7 @@
   chmod $(setuid_root_mode) $(installed_su)
 
 install-root: su$(EXEEXT)
-	@$(INSTALL_SU)
+	@$(INSTALL_SU)	
 
 install-exec-local: su$(EXEEXT)
 	@TMPFILE=$(DESTDIR)$(bindir)/.su-$$$$; \
--- /dev/null	2004-09-30 04:21:43.103661032 -0400
+++ coreutils-5.2.1/src/runuser.c	2004-10-05 10:04:28.835490381 -0400
@@ -0,0 +1,53 @@
+#define CHECKPASSWD 0
+#define pam_start my_pam_start
+#define pam_end my_pam_end
+#define pam_setcred my_pam_setcred
+#define pam_open_session my_pam_open_session
+#define pam_close_session my_pam_close_session
+#define pam_strerror my_pam_strerror
+#define pam_getenvlist my_pam_getenvlist
+#include "su.c"
+int pam_start(const char *service_name, const char *user,
+		     const struct pam_conv *pam_conversation,
+	      pam_handle_t **pamh) {
+	return PAM_SUCCESS;
+}
+int pam_end(pam_handle_t *pamh, int pam_status) {
+	return PAM_SUCCESS;
+}
+int pam_setcred(pam_handle_t *pamh, int flags){
+	return PAM_SUCCESS;
+}
+int pam_open_session(pam_handle_t *pamh, int flags){
+	return PAM_SUCCESS;
+}
+int pam_close_session(pam_handle_t *pamh, int flags){
+	return PAM_SUCCESS;
+}
+const char *pam_strerror(pam_handle_t *pamh, int err){
+	return "";
+}
+char **pam_getenvlist(pam_handle_t *pamh){
+	return NULL;
+}
+
+int misc_conv(int num_msg, const struct pam_message **msgm,
+	      struct pam_response **response, void *appdata_ptr) {
+	return PAM_SUCCESS;
+}
+
+int pam_authenticate(pam_handle_t *pamh, int flags) {
+	return PAM_SUCCESS;
+}
+
+int pam_acct_mgmt(pam_handle_t *pamh, int flags) {
+	return PAM_SUCCESS;
+}
+
+int pam_chauthtok (pam_handle_t *pamh, int flags) {
+	return PAM_SUCCESS;
+}
+
+int pam_set_item(pam_handle_t *pamh, int item_type, const void *item) {
+	return PAM_SUCCESS;
+}