4.3 vipw does not allow root to have a shell in /etc/shells
Arnold D. Robbins {EUCC}
arnold at emory.UUCP
Thu Oct 23 14:32:25 AEST 1986
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 at emory BITNET: arnold at emoryu1
ARPA: arnold%emory.csnet at csnet-relay.arpa
UUCP: { akgua, decvax, gatech, sb1, sb6, sunatl }!emory!arnold
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list