🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Arnold D. Robbins {EUCC} Thu, 23 Oct 1986 04:32
4.3 vipw does not allow root to have a shell in /etc/shells
#1716
Author: Arnold D. Robbins {EUCC}
Date: Thu, 23 Oct 1986 04:32
110 lines
2983 bytes
Subject: 4.3 vipw does not allow root to have a shell in /etc/shells
Index:	/usr/src/etc/vipw.c 4.3BSD

Description:
	/* fall through ... */
Repeat-By:
	Edit the password file with vipw, and try to change root's shell
	to a shell listed in /etc/shells, but not /bin/sh or /bin/csh,
	(e.g., /bin/ksh). Watch vipw complain about mangling the password
	file.
Fix:

RCS file: RCS/vipw.c,v
retrieving revision 1.1
diff -c -r1.1 vipw.c
*** /tmp/,RCSt1007105	Wed Oct 22 18:02:04 1986
--- vipw.c	Thu Aug  7 15:01:37 1986
***************
*** 1,9 ****
  #ifndef lint
! static char *RCSid = "$Header: vipw.c,v 1.1 86/08/06 17:47:40 root Exp $";
  #endif
  
  /*
   * $Log:	vipw.c,v $
   * Revision 1.1  86/08/06  17:47:40  root
   * Initial revision
   * 
--- 1,15 ----
  #ifndef lint
! static char *RCSid = "$Header: vipw.c,v 1.3 86/08/07 15:01:19 root Locked $";
  #endif
  
  /*
   * $Log:	vipw.c,v $
+  * Revision 1.3  86/08/07  15:01:19  root
+  * Made error message more descriptive for invalid root entry. ADR.
+  * 
+  * Revision 1.2  86/08/06  17:56:44  root
+  * fixed to check root's shell against list of valid shells.
+  * 
   * Revision 1.1  86/08/06  17:47:40  root
   * Initial revision
   * 
***************
*** 140,147 ****
  			if (strncmp(++cp, "/:", 2))
  				break;
  			cp += 2;
! 			if (*cp && strcmp(cp, "/bin/sh") &&
! 			    strcmp(cp, "/bin/csh"))
  				break;
  			ok++;
  		}
--- 146,152 ----
  			if (strncmp(++cp, "/:", 2))
  				break;
  			cp += 2;
! 			if (*cp && ! validsh (cp))
  				break;
  			ok++;
  		}
***************
*** 153,162 ****
  				exit(0);
  		} else
  			fprintf(stderr,
! 			    "vipw: you mangled the temp file, %s unchanged\n",
  			    passwd);
  	}
  bad:
  	unlink(temp);
  	exit(1);
  }
--- 158,186 ----
  				exit(0);
  		} else
  			fprintf(stderr,
! 		"vipw: there are problems with root's entry, %s unchanged\n",
  			    passwd);
  	}
  bad:
  	unlink(temp);
  	exit(1);
+ }
+ 
+ int validsh (rootsh)
+ char *rootsh;
+ {
+ 	char *sh, *getusershell ();
+ 	int ret = 0;
+ 
+ 	while ((sh = getusershell ()) != NULL)
+ 	{
+ 		if (strcmp (sh, rootsh) == 0)
+ 		{
+ 			ret = 1;
+ 			break;
+ 		}
+ 	}
+ 
+ 	endusershell ();
+ 	return (ret);
  }
-- 
Arnold Robbins
CSNET:	arnold@emory	BITNET:	arnold@emoryu1
ARPA:	arnold%emory.csnet@csnet-relay.arpa
UUCP:	{ akgua, decvax, gatech, sb1, sb6, sunatl }!emory!arnold
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads