home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / net / passwd-aging.1 < prev    next >
Internet Message Format  |  1988-03-14  |  40KB

  1. From gww@beatnix.UUCP Sat Mar 12 18:58:54 1988
  2. Path: uunet!lll-winken!lll-tis!elxsi!beatnix!gww
  3. From: gww@beatnix.UUCP (Gary Winiger)
  4. Newsgroups: alt.sources
  5. Subject: Password aging package for 4.3BSD Part 1 of 3.
  6. Message-ID: <743@elxsi.UUCP>
  7. Date: 12 Mar 88 23:58:54 GMT
  8. Sender: nobody@elxsi.UUCP
  9. Reply-To: gww@beatnix.UUCP (Gary Winiger)
  10. Organization: ELXSI Super Computers, San Jose
  11. Lines: 1166
  12.  
  13.  
  14.     Some time ago a request was posted to the net (comp.bugs.4bsd, I
  15. believe) for a password aging package for 4.3BSD.  At that time I was thinking
  16. about doing one, but didn't post a follow up.  I've since completed the package
  17. I was thinking about.  The kind folk at Elxsi have allowed me to post it for
  18. the use of the Berkeley Unix community.  Since it's rather long (3 shar's), I
  19. don't feel it's right to post it to a bugs group.  I've mailed a copy to Keith
  20. Bostic (ucbvax!bostic).  This posting and the following 2 postings are what
  21. was mailed to Keith and is running at Elxsi.
  22.  
  23.     The package is three shars.  Parts 1 and 2 are diffs and documentation,
  24. Part 3 is new administrative code.
  25.  
  26.     The package provides a shadow password file that is read only to root
  27. that contains the passwords.  /etc/passwd retains a place holder for the
  28. passwords.  The GECOS field in the shadow password file is formated to contain
  29. password aging information.  Login(1) will check to see if the users password
  30. has expired and demand the user change password before completing the login
  31. process.
  32.  
  33.     On Monday 14 Mar, I'll be starting a new position at Sun.  At least
  34. for a little while, I'll still be getting Email through Elxsi so I can respond
  35. to any immediate questions or requests.
  36.  
  37. The following is the README from the shars:
  38.    ``The files in this shar comprise enhancements made to the 4.3BSD password
  39. system at ELXSI they will be avaliable on ELXSI ENIX BSD systems with the
  40. forthcoming 4.3BSD release of ENIX BSD.  They are offered to the UNIX community
  41. so that they may be of use to others.  There are context diffs for the 4.3
  42. utilities and man pages modified as well as two new utilities and accompaning
  43. man pages.  The file ``readme.ms'' is an extract from the ELXSI document
  44. ``Installing and Operating ENIX BSD'' which is part of the ELXSI 4.3BSD ENIX
  45. release.
  46.     
  47.     The new code and man pages is available for all to use with the
  48. following provisos:
  49.  
  50.     o It is copyrighted by ELXSI.
  51.      o It may be distributed within the following restrictions:
  52.          (1) It may not be sold at a profit.
  53.          (2) The credit and Copyright notice must remain intact.
  54.      o It may be distributed with other software by a commercial
  55.       vendor, provided that it is included at no additional charge.
  56.  
  57.     Please report bugs to "...!{sun,uunet}!elxsi!gww".
  58.  
  59. Gary..''
  60.  
  61. Gary..
  62. {ucbvax!sun,uunet,lll-lcc!lll-tis,amdahl!altos86,bridge2}!elxsi!gww
  63. #    This is a shell archive.
  64. #    Remove everything above and including the cut line.
  65. #    Then run the rest of the file through sh.
  66. -----cut here-----cut here-----cut here-----cut here-----
  67. #!/bin/sh
  68. # shar:    Shell Archiver
  69. #    Run the following text with /bin/sh to create:
  70. #    README
  71. #    adduser.8e.diff
  72. #    getpwent.3e.diff
  73. #    mkshadow.8e
  74. #    passwd.1e.diff
  75. #    passwd.5e.diff
  76. #    pwadm.8e
  77. #    pwd.h.diff
  78. #    readme.ms
  79. #    vipw.8e.diff
  80. # This archive created: Sat Mar 12 14:58:21 1988
  81. echo shar: extracting README '(1006 characters)'
  82. sed 's/^XX//' << \SHAR_EOF > README
  83. XX    The files in this shar comprise enhancements made to the 4.3BSD password
  84. XXsystem at ELXSI they will be avaliable on ELXSI ENIX BSD systems with the
  85. XXforthcoming 4.3BSD release of ENIX BSD.  They are offered to the UNIX community
  86. XXso that they may be of use to others.  There are context diffs for the 4.3
  87. XXutilities and man pages modified as well as two new utilities and accompaning
  88. XXman pages.  The file ``readme.ms'' is an extract from the ELXSI document
  89. XX``Installing and Operating ENIX BSD'' which is part of the ELXSI 4.3BSD ENIX
  90. XXrelease.
  91. XX    
  92. XX    The new code and man pages is available for all to use with the
  93. XXfollowing provisos:
  94. XX
  95. XX    o It is copyrighted by ELXSI.
  96. XX     o It may be distributed within the following restrictions:
  97. XX         (1) It may not be sold at a profit.
  98. XX         (2) The credit and Copyright notice must remain intact.
  99. XX     o It may be distributed with other software by a commercial
  100. XX      vendor, provided that it is included at no additional charge.
  101. XX
  102. XX    Please report bugs to "...!{sun,uunet}!elxsi!gww".
  103. XX
  104. XXGary..
  105. SHAR_EOF
  106. if test 1006 -ne "`wc -c README`"
  107. then
  108. echo shar: error transmitting README '(should have been 1006 characters)'
  109. fi
  110. echo shar: extracting adduser.8e.diff '(7181 characters)'
  111. sed 's/^XX//' << \SHAR_EOF > adduser.8e.diff
  112. XX*** /tmp/,RCSt1001915    Wed Jan 13 18:12:40 1988
  113. XX--- adduser.8e    Wed Jan 13 18:07:26 1988
  114. XX***************
  115. XX*** 1,6 ****
  116. XX! .\"    $Header: adduser.8e,v 1.1 87/12/24 13:12:49 gww Exp $ ENIX BSD
  117. XX  .\"
  118. XX  .\" $Log:    adduser.8e,v $
  119. XX  .\" Revision 1.1  87/12/24  13:12:49  gww
  120. XX  .\" Initial revision
  121. XX  .\" 
  122. XX--- 1,9 ----
  123. XX! .\"    $Header: adduser.8e,v 1.2 88/01/13 18:07:15 gww Exp $ ENIX BSD
  124. XX  .\"
  125. XX  .\" $Log:    adduser.8e,v $
  126. XX+ .\" Revision 1.2  88/01/13  18:07:15  gww
  127. XX+ .\" Add password aging information.
  128. XX+ .\" 
  129. XX  .\" Revision 1.1  87/12/24  13:12:49  gww
  130. XX  .\" Initial revision
  131. XX  .\" 
  132. XX***************
  133. XX*** 11,17 ****
  134. XX  .\"
  135. XX  .\"    @(#)adduser.8    6.2 (Berkeley) 5/23/86
  136. XX  .\"
  137. XX! .TH ADDUSER 8 "May 23, 1986"
  138. XX  .UC 4
  139. XX  .SH NAME
  140. XX  adduser \- procedure for adding new users
  141. XX--- 14,20 ----
  142. XX  .\"
  143. XX  .\"    @(#)adduser.8    6.2 (Berkeley) 5/23/86
  144. XX  .\"
  145. XX! .TH ADDUSER 8E "May 23, 1986"
  146. XX  .UC 4
  147. XX  .SH NAME
  148. XX  adduser \- procedure for adding new users
  149. XX***************
  150. XX*** 20,77 ****
  151. XX  .I /etc/passwd.
  152. XX  An account can be added by editing a line into the passwd file; this must
  153. XX  be done with the password file locked e.g. by using
  154. XX! .IR vipw (8).
  155. XX  .PP
  156. XX  A new user is given a group and user id.
  157. XX  User id's should be distinct across a system, since they
  158. XX  are used to control access to files.
  159. XX  Typically, users working on
  160. XX! similar projects will be put in the same group.  Thus at UCB we have
  161. XX! groups for system staff, faculty, graduate students, and a few special
  162. XX! groups for large projects.  System staff is group \*(lq10\*(rq for historical
  163. XX! reasons, and the super-user is in this group.
  164. XX  .PP
  165. XX! A skeletal account for a new user \*(lqernie\*(rq would look like:
  166. XX  .IP
  167. XX! ernie::235:20:& Kovacs,508E,7925,6428202:/mnt/grad/ernie:/bin/csh
  168. XX  .PP
  169. XX! The first field is the login name \*(lqernie\*(rq.  The next field is the
  170. XX! encrypted password which is not given and must be initialized using
  171. XX  .IR passwd (1E).
  172. XX  The next two fields are the user and group id's.
  173. XX! Traditionally, users in group 20 are graduate students and have account
  174. XX! names with numbers in the 200's.
  175. XX! The next field gives information about ernie's real name, office and office
  176. XX  phone and home phone.
  177. XX  This information is used by the
  178. XX  .IR finger (1)
  179. XX  program.
  180. XX! From this information we can tell that ernie's real name is
  181. XX! \*(lqErnie Kovacs\*(rq (the & here serves to repeat \*(lqernie\*(rq
  182. XX! with appropriate capitalization), that his office is 508 Evans Hall,
  183. XX! his extension is x2-7925, and this his home phone number is 642-8202.
  184. XX! You can modify the
  185. XX! .IR finger (1)
  186. XX! program if necessary to allow different information to be encoded in
  187. XX! this field.  The UCB version of finger knows several things particular
  188. XX! to Berkeley \- that phone extensions start \*(lq2\-\*(rq, that offices ending
  189. XX! in \*(lqE\*(rq are in Evans Hall and that offices ending in \*(lqC\*(rq are
  190. XX! in Cory Hall. The 
  191. XX  .IR chfn (1)
  192. XX  program allows users to change this information.
  193. XX  .PP
  194. XX  The final two fields give a login directory and a login shell name.
  195. XX  Traditionally, user files live on a file system different from /usr.
  196. XX! Typically the user file systems are mounted on a directories in the root
  197. XX! named sequentially starting from from the beginning of the alphabet,
  198. XX! eg /a, /b, /c, etc.
  199. XX  On each such file system there are subdirectories there for each group
  200. XX! of users, i.e.: \*(lq/a/staff\*(rq and \*(lq/b/prof\*(rq.
  201. XX  This is not strictly necessary but keeps the number of files in the
  202. XX  top level directories reasonably small.
  203. XX  .PP
  204. XX  The login shell will default to \*(lq/bin/sh\*(rq if none is given.
  205. XX! Most users at Berkeley choose \*(lq/bin/csh\*(rq so this is usually
  206. XX  specified here. The 
  207. XX  .IR chsh (1)
  208. XX  program allows users to change their login shell to one of the
  209. XX--- 23,71 ----
  210. XX  .I /etc/passwd.
  211. XX  An account can be added by editing a line into the passwd file; this must
  212. XX  be done with the password file locked e.g. by using
  213. XX! .IR vipw (8E).
  214. XX  .PP
  215. XX  A new user is given a group and user id.
  216. XX  User id's should be distinct across a system, since they
  217. XX  are used to control access to files.
  218. XX  Typically, users working on
  219. XX! similar projects will be put in the same group.  Thus at \s-1ELXSI\s0 we have
  220. XX! groups for system staff, general users, outside users, and a few special
  221. XX! groups for large projects.
  222. XX  .PP
  223. XX! A skeletal account for a new user \*(lqjoe\*(rq would look like:
  224. XX  .IP
  225. XX! joe:***:51:3:& Kool,ELXSI San Jose,7000,4085551212:/usr1/staff/joe:/bin/csh
  226. XX  .PP
  227. XX! The first field is the login name \*(lqjoe\*(rq.  The next field is
  228. XX! a place holder for the
  229. XX  .IR passwd (1E).
  230. XX  The next two fields are the user and group id's.
  231. XX! The next field gives information about joe's real name, office and office
  232. XX  phone and home phone.
  233. XX  This information is used by the
  234. XX  .IR finger (1)
  235. XX  program.
  236. XX! From this information we can tell that joe's real name is
  237. XX! \*(lqJoe Kool\*(rq (the & here serves to repeat \*(lqjoe\*(rq
  238. XX! with appropriate capitalization), that his office is at ELXSI San Jose,
  239. XX! his extension is x7000, and his home phone number is 408-555-1212.
  240. XX! The 
  241. XX  .IR chfn (1)
  242. XX  program allows users to change this information.
  243. XX  .PP
  244. XX  The final two fields give a login directory and a login shell name.
  245. XX  Traditionally, user files live on a file system different from /usr.
  246. XX! Typically the user file systems are mounted on directories in the root
  247. XX! named sequentially,
  248. XX! eg /usr1, /usr2, /usr3, etc.
  249. XX  On each such file system there are subdirectories there for each group
  250. XX! of users, i.e.: \*(lq/usr1/staff\*(rq and \*(lq/usr2/guest\*(rq.
  251. XX  This is not strictly necessary but keeps the number of files in the
  252. XX  top level directories reasonably small.
  253. XX  .PP
  254. XX  The login shell will default to \*(lq/bin/sh\*(rq if none is given.
  255. XX! Most users at \s-1ELXSI\s0 choose \*(lq/bin/csh\*(rq so this is usually
  256. XX  specified here. The 
  257. XX  .IR chsh (1)
  258. XX  program allows users to change their login shell to one of the
  259. XX***************
  260. XX*** 90,103 ****
  261. XX  New users should be given copies of these files which, for instance,
  262. XX  arrange to use
  263. XX  .IR tset (1)
  264. XX  automatically at each login.
  265. XX  .SH FILES
  266. XX  .ta 2i
  267. XX  /etc/passwd    password file
  268. XX  .br
  269. XX  /usr/skel    skeletal login directory
  270. XX  .SH SEE ALSO
  271. XX! passwd(1), finger(1), chsh(1), chfn(1), passwd(5), vipw(8)
  272. XX  .SH BUGS
  273. XX  User information should be stored in its own data base separate from
  274. XX  the password file.
  275. XX--- 84,113 ----
  276. XX  New users should be given copies of these files which, for instance,
  277. XX  arrange to use
  278. XX  .IR tset (1)
  279. XX+ and
  280. XX+ .IR msgs (1)
  281. XX  automatically at each login.
  282. XX+ .PP
  283. XX+ After a new user has been added to the password file,
  284. XX+ .IR passwd (1E)
  285. XX+ must be used to provide the initial password.
  286. XX+ If a shadow password file has been implemented,
  287. XX+ .IR pwadm (8E)
  288. XX+ may now be used to initialize password aging and/or change the password
  289. XX+ criteria.
  290. XX  .SH FILES
  291. XX  .ta 2i
  292. XX  /etc/passwd    password file
  293. XX  .br
  294. XX  /usr/skel    skeletal login directory
  295. XX+ .br
  296. XX+ /etc/shadowpw    shadow password file
  297. XX  .SH SEE ALSO
  298. XX! passwd(1E), finger(1), chsh(1), chfn(1), passwd(5E), mkshadow(8E), pwadm(8E),
  299. XX! vipw(8E)
  300. XX! .br
  301. XX! ``PASSWORD SECURITY ENHANCEMENTS'' in
  302. XX! .I Installing and Operating ENIX BSD
  303. XX  .SH BUGS
  304. XX  User information should be stored in its own data base separate from
  305. XX  the password file.
  306. SHAR_EOF
  307. if test 7181 -ne "`wc -c adduser.8e.diff`"
  308. then
  309. echo shar: error transmitting adduser.8e.diff '(should have been 7181 characters)'
  310. fi
  311. echo shar: extracting getpwent.3e.diff '(2340 characters)'
  312. sed 's/^XX//' << \SHAR_EOF > getpwent.3e.diff
  313. XX*** /tmp/,RCSt1010256    Mon Jan 11 12:55:42 1988
  314. XX--- getpwent.3e    Mon Jan 11 12:51:10 1988
  315. XX***************
  316. XX*** 1,6 ****
  317. XX! .\"    $Header: getpwent.3e,v 1.1 87/03/24 10:50:16 gww Exp $ ENIX BSD
  318. XX  .\"
  319. XX  .\" $Log:    getpwent.3e,v $
  320. XX  .\" Revision 1.1  87/03/24  10:50:16  gww
  321. XX  .\" Initial revision
  322. XX  .\" 
  323. XX--- 1,9 ----
  324. XX! .\"    $Header: getpwent.3e,v 1.2 88/01/11 12:50:59 gww Exp $ ENIX BSD
  325. XX  .\"
  326. XX  .\" $Log:    getpwent.3e,v $
  327. XX+ .\" Revision 1.2  88/01/11  12:50:59  gww
  328. XX+ .\" Add shadow password file information.
  329. XX+ .\" 
  330. XX  .\" Revision 1.1  87/03/24  10:50:16  gww
  331. XX  .\" Initial revision
  332. XX  .\" 
  333. XX***************
  334. XX*** 7,13 ****
  335. XX  .\"
  336. XX  .\"    @(#)getpwent.3    6.3 (Berkeley) 5/15/86
  337. XX  .\"
  338. XX! .TH GETPWENT 3  "May 15, 1986"
  339. XX  .AT 3
  340. XX  .SH NAME
  341. XX  getpwent, getpwuid, getpwnam, setpwent, endpwent, setpwfile \- get password file entry
  342. XX--- 10,16 ----
  343. XX  .\"
  344. XX  .\"    @(#)getpwent.3    6.3 (Berkeley) 5/15/86
  345. XX  .\"
  346. XX! .TH GETPWENT 3E  "May 15, 1986"
  347. XX  .AT 3
  348. XX  .SH NAME
  349. XX  getpwent, getpwuid, getpwnam, setpwent, endpwent, setpwfile \- get password file entry
  350. XX***************
  351. XX*** 53,59 ****
  352. XX  and
  353. XX  .I pw_comment
  354. XX  are unused; the others have meanings described in
  355. XX! .IR passwd (5).
  356. XX  .PP
  357. XX  Searching of the password file is done using the \fIndbm\fP
  358. XX  database access routines.
  359. XX--- 56,62 ----
  360. XX  and
  361. XX  .I pw_comment
  362. XX  are unused; the others have meanings described in
  363. XX! .IR passwd (5E).
  364. XX  .PP
  365. XX  Searching of the password file is done using the \fIndbm\fP
  366. XX  database access routines.
  367. XX***************
  368. XX*** 90,99 ****
  369. XX  If this is desired,
  370. XX  .I endpwent
  371. XX  should be called prior to it.
  372. XX  .SH FILES
  373. XX! /etc/passwd
  374. XX  .SH "SEE ALSO"
  375. XX! getlogin(3), getgrent(3), passwd(5)
  376. XX  .SH DIAGNOSTICS
  377. XX  The routines
  378. XX  .IR getpwent ,
  379. XX--- 93,117 ----
  380. XX  If this is desired,
  381. XX  .I endpwent
  382. XX  should be called prior to it.
  383. XX+ .SH NOTES
  384. XX+ If it is necessary to access the encrypted password, code similar to the
  385. XX+ following may be used to detect the presence of the shadow password file
  386. XX+ and set the appropriate password file name before calling the
  387. XX+ .IR getpwent (3E)
  388. XX+ routines:
  389. XX+ .sp
  390. XX+ .RS
  391. XX+     if (access(SHADOWPW, F_OK) == 0)
  392. XX+ .br
  393. XX+         setpwfile(SHADOWPW);
  394. XX+ .RE
  395. XX  .SH FILES
  396. XX! .ta \w'/etc/shadowpw'u+0.5i
  397. XX! /etc/passwd    readable password file
  398. XX! .br
  399. XX! /etc/shadowpw    shadow password file
  400. XX  .SH "SEE ALSO"
  401. XX! access(2), getlogin(3), getgrent(3), passwd(5E)
  402. XX  .SH DIAGNOSTICS
  403. XX  The routines
  404. XX  .IR getpwent ,
  405. SHAR_EOF
  406. if test 2340 -ne "`wc -c getpwent.3e.diff`"
  407. then
  408. echo shar: error transmitting getpwent.3e.diff '(should have been 2340 characters)'
  409. fi
  410. echo shar: extracting mkshadow.8e '(2222 characters)'
  411. sed 's/^XX//' << \SHAR_EOF > mkshadow.8e
  412. XX.\"    $Header: mkshadow.8e,v 1.1 87/12/24 13:21:12 gww Exp $ ENIX BSD
  413. XX.\"
  414. XX.\" $Log:    mkshadow.8e,v $
  415. XX.\" Revision 1.1  87/12/24  13:21:12  gww
  416. XX.\" Initial revision
  417. XX.\" 
  418. XX.\"
  419. XX.\" Copyright (c) 1987 by ELXSI.
  420. XX.\"
  421. XX.\" This manual page was written by Gary Winiger at ELXSI. It may be
  422. XX.\" distributed within the following restrictions:
  423. XX.\"     (1) It may not be sold at a profit.
  424. XX.\"     (2) This credit and Copyright notice must remain intact.
  425. XX.\" This software may be distributed with other software by a commercial
  426. XX.\" vendor, provided that it is included at no additional charge.
  427. XX.\"
  428. XX.\" Please report bugs to "...!{sun,uunet}!elxsi!gww".
  429. XX.\"
  430. XX.TH MKSHADOW 8E "December 25, 1987"
  431. XX.UC 4
  432. XX.SH NAME
  433. XXmkshadow \- make a shadow password file from \fI/etc/passwd\fP
  434. XX.SH SYNOPSIS
  435. XX.B mkshadow
  436. XX.SH DESCRIPTION
  437. XX.PP
  438. XX.I Mkshadow
  439. XXtakes a normal BSD password file and creates a shadow password file from it.
  440. XXThe user passwords are removed from
  441. XX.IR /etc/passwd ,
  442. XXreplaced with ``***'', and placed in the shadow password file.
  443. XXThe GECOS field of the shadow password file is formatted for different
  444. XXpassword criteria and password aging information.
  445. XXThe default password criteria is set to the normal BSD criteria.
  446. XXPassword aging is not enabled.
  447. XXThe shadow password file is only accessible to root.
  448. XX.PP
  449. XXThis program is meant to be used once when setting up the shadow password file.
  450. XXA guard is made against subsequent use which would destroy the password
  451. XXinformation in the shadow password file.
  452. XX.PP
  453. XX.I /etc/passwd
  454. XXand the shadow password file are sorted by user ID and user name so that
  455. XXthey may be easily kept in sync by
  456. XX.IR vipw (8E).
  457. XX.SH DIAGNOSTICS
  458. XX\fB A shadow password file already exists, remaking will destroy
  459. XXexisting passwords
  460. XX.br
  461. XXMkshadow aborted \fR
  462. XX.br
  463. XXIf mkshadow were to run, it would destroy the existing passwords.
  464. XXAn exit value of 1 is returned.
  465. XX.SH SEE ALSO
  466. XXpasswd(5E),
  467. XXadduser(8E),
  468. XXpwadm(8E),
  469. XXvipw(8E)
  470. XX.br
  471. XX``PASSWORD SECURITY ENHANCEMENTS'' in
  472. XX.I Installing and Operating ENIX BSD
  473. XX.SH FILES
  474. XX.ta \w'/etc/shadowpw'u+0.5i
  475. XX/etc/passwd    readable password file
  476. XX.br
  477. XX/etc/shadowpw    shadow password file
  478. XX.SH BUGS
  479. XXThe password file and shadow password file are sorted as described above.
  480. XX.SH AUTHOR
  481. XXGary Winiger
  482. XX.br
  483. XXCopyright \(co 1987 by ELXSI
  484. SHAR_EOF
  485. if test 2222 -ne "`wc -c mkshadow.8e`"
  486. then
  487. echo shar: error transmitting mkshadow.8e '(should have been 2222 characters)'
  488. fi
  489. echo shar: extracting passwd.1e.diff '(2639 characters)'
  490. sed 's/^XX//' << \SHAR_EOF > passwd.1e.diff
  491. XX*** /tmp/,RCSt1003019    Thu Mar 10 10:32:03 1988
  492. XX--- passwd.1e    Thu Mar 10 10:31:34 1988
  493. XX***************
  494. XX*** 1,6 ****
  495. XX! .\"    $Header: passwd.1e,v 1.1 88/03/10 10:27:17 gww Exp $ ENIX BSD
  496. XX  .\"
  497. XX  .\" $Log:    passwd.1e,v $
  498. XX  .\" Revision 1.1  88/03/10  10:27:17  gww
  499. XX  .\" Initial revision
  500. XX  .\" 
  501. XX--- 1,9 ----
  502. XX! .\"    $Header: passwd.1e,v 1.2 88/03/10 10:31:19 gww Exp $ ENIX BSD
  503. XX  .\"
  504. XX  .\" $Log:    passwd.1e,v $
  505. XX+ .\" Revision 1.2  88/03/10  10:31:19  gww
  506. XX+ .\" Describe strong password criteria.
  507. XX+ .\" 
  508. XX  .\" Revision 1.1  88/03/10  10:27:17  gww
  509. XX  .\" Initial revision
  510. XX  .\" 
  511. XX***************
  512. XX*** 11,17 ****
  513. XX  .\"
  514. XX  .\"    @(#)passwd.1    6.4 (Berkeley) 6/5/86
  515. XX  .\"
  516. XX! .TH PASSWD 1 "June 5, 1986"
  517. XX  .UC 4
  518. XX  .SH NAME
  519. XX  chfn, chsh, passwd \- change password file information
  520. XX--- 14,20 ----
  521. XX  .\"
  522. XX  .\"    @(#)passwd.1    6.4 (Berkeley) 6/5/86
  523. XX  .\"
  524. XX! .TH PASSWD 1E "June 5, 1986"
  525. XX  .UC 4
  526. XX  .SH NAME
  527. XX  chfn, chsh, passwd \- change password file information
  528. XX***************
  529. XX*** 38,47 ****
  530. XX  The caller must supply both.
  531. XX  The new password must be typed twice to forestall mistakes.
  532. XX  .PP
  533. XX! New passwords must be at least four characters long if they use
  534. XX  a sufficiently rich alphabet and at least six characters long
  535. XX  if monocase.
  536. XX  These rules are relaxed if you are insistent enough.
  537. XX  .PP
  538. XX  Only the owner of the name or the super-user may change a password;
  539. XX  the owner must prove he knows the old password.
  540. XX--- 41,57 ----
  541. XX  The caller must supply both.
  542. XX  The new password must be typed twice to forestall mistakes.
  543. XX  .PP
  544. XX! The system administrator may select password criteria for a user.
  545. XX! The ``standard'' BSD criteria requires that
  546. XX! new passwords must be at least four characters long if they use
  547. XX  a sufficiently rich alphabet and at least six characters long
  548. XX  if monocase.
  549. XX  These rules are relaxed if you are insistent enough.
  550. XX+ The ``strong'' password criteria requires that
  551. XX+ new passwords must be at least seven characters long and be selected from
  552. XX+ the full printable ASCII character set.
  553. XX+ At least one but no more than four lower case, upper case, and digits and 
  554. XX+ special characters may be selected.
  555. XX  .PP
  556. XX  Only the owner of the name or the super-user may change a password;
  557. XX  the owner must prove he knows the old password.
  558. XX***************
  559. XX*** 105,111 ****
  560. XX  .br
  561. XX  /etc/shells    The list of approved shells
  562. XX  .SH "SEE ALSO"
  563. XX! login(1), finger(1), passwd(5), crypt(3)
  564. XX  .br
  565. XX  Robert Morris and Ken Thompson,
  566. XX  .I UNIX password security
  567. XX--- 115,121 ----
  568. XX  .br
  569. XX  /etc/shells    The list of approved shells
  570. XX  .SH "SEE ALSO"
  571. XX! login(1), finger(1), passwd(5E), crypt(3), pwadm(8E)
  572. XX  .br
  573. XX  Robert Morris and Ken Thompson,
  574. XX  .I UNIX password security
  575. SHAR_EOF
  576. if test 2639 -ne "`wc -c passwd.1e.diff`"
  577. then
  578. echo shar: error transmitting passwd.1e.diff '(should have been 2639 characters)'
  579. fi
  580. echo shar: extracting passwd.5e.diff '(4755 characters)'
  581. sed 's/^XX//' << \SHAR_EOF > passwd.5e.diff
  582. XX*** /tmp/,RCSt1010243    Mon Jan 11 12:55:03 1988
  583. XX--- passwd.5e    Mon Jan 11 11:26:53 1988
  584. XX***************
  585. XX*** 1,6 ****
  586. XX! .\"    $Header: passwd.5e,v 1.1 87/12/24 12:52:26 gww Exp $ ENIX BSD
  587. XX  .\"
  588. XX  .\" $Log:    passwd.5e,v $
  589. XX  .\" Revision 1.1  87/12/24  12:52:26  gww
  590. XX  .\" Initial revision
  591. XX  .\" 
  592. XX--- 1,9 ----
  593. XX! .\"    $Header: passwd.5e,v 1.2 88/01/11 11:26:42 gww Exp $ ENIX BSD
  594. XX  .\"
  595. XX  .\" $Log:    passwd.5e,v $
  596. XX+ .\" Revision 1.2  88/01/11  11:26:42  gww
  597. XX+ .\" Add shadow password file information.
  598. XX+ .\" 
  599. XX  .\" Revision 1.1  87/12/24  12:52:26  gww
  600. XX  .\" Initial revision
  601. XX  .\" 
  602. XX***************
  603. XX*** 7,13 ****
  604. XX  .\"
  605. XX  .\"    @(#)passwd.5    6.2 (Berkeley) 1/8/86
  606. XX  .\"
  607. XX! .TH PASSWD 5  "January 8, 1986"
  608. XX  .AT 3
  609. XX  .SH NAME
  610. XX  passwd \- password file
  611. XX--- 10,16 ----
  612. XX  .\"
  613. XX  .\"    @(#)passwd.5    6.2 (Berkeley) 1/8/86
  614. XX  .\"
  615. XX! .TH PASSWD 5E  "January 8, 1986"
  616. XX  .AT 3
  617. XX  .SH NAME
  618. XX  passwd \- password file
  619. XX***************
  620. XX*** 22,27 ****
  621. XX--- 25,33 ----
  622. XX  .HP 10
  623. XX  encrypted password
  624. XX  .br
  625. XX+ or, if a shadow password file exists, a place holder for the password
  626. XX+ (\*(lq***\*(rq)
  627. XX+ .br
  628. XX  .ns
  629. XX  .HP 10
  630. XX  numerical user ID
  631. XX***************
  632. XX*** 42,48 ****
  633. XX  .HP 10
  634. XX  program to use as Shell
  635. XX  .PP
  636. XX! The name may contain `&', meaning insert the login name.
  637. XX  This information is set by the
  638. XX  .IR chfn (1)
  639. XX  command and used by the
  640. XX--- 48,55 ----
  641. XX  .HP 10
  642. XX  program to use as Shell
  643. XX  .PP
  644. XX! The user's real name may contain `&', meaning insert the login name with
  645. XX! appropriate capitalization.
  646. XX  This information is set by the
  647. XX  .IR chfn (1)
  648. XX  command and used by the
  649. XX***************
  650. XX*** 49,76 ****
  651. XX  .IR finger (1)
  652. XX  command.
  653. XX  .PP
  654. XX! This is an ASCII file.  Each field within each user's entry
  655. XX  is separated from the next by a colon.
  656. XX  Each user is separated from the next by a new-line.
  657. XX! If the password field is null, no password is demanded;
  658. XX  if the Shell field is null, then
  659. XX  .I /bin/sh
  660. XX  is used.
  661. XX  .PP
  662. XX! This file resides in directory /etc.
  663. XX! Because of the encrypted
  664. XX! passwords, it can and does have general read
  665. XX! permission and can be used, for example,
  666. XX  to map numerical user ID's to names.
  667. XX  .PP
  668. XX  Appropriate precautions must be taken to lock the file against changes
  669. XX  if it is to be edited with a text editor;
  670. XX! .IR vipw (8)
  671. XX  does the necessary locking.
  672. XX  .SH FILES
  673. XX! /etc/passwd
  674. XX  .SH "SEE ALSO"
  675. XX! getpwent(3), login(1), crypt(3), passwd(1), group(5), chfn(1), finger(1),
  676. XX! vipw(8), adduser(8)
  677. XX  .SH BUGS
  678. XX  User information (name, office, etc.) should be stored elsewhere.
  679. XX--- 56,141 ----
  680. XX  .IR finger (1)
  681. XX  command.
  682. XX  .PP
  683. XX! If a shadow password file exists, it contains for each user the following 
  684. XX! information:
  685. XX! .HP 10
  686. XX! name (login name, contains no upper case)
  687. XX! .br
  688. XX! .ns
  689. XX! .HP 10
  690. XX! encrypted password
  691. XX! .br
  692. XX! .ns
  693. XX! .HP 10
  694. XX! numerical user ID
  695. XX! .br
  696. XX! .ns
  697. XX! .HP 10
  698. XX! numerical group ID
  699. XX! .br
  700. XX! .ns
  701. XX! .HP 10
  702. XX! password criteria, aging period, time of last password change, time old
  703. XX! password saved, old password
  704. XX! .br
  705. XX! .ns
  706. XX! .HP 10
  707. XX! initial working directory
  708. XX! .br
  709. XX! .ns
  710. XX! .HP 10
  711. XX! program to use as Shell
  712. XX! .PP
  713. XX! These are ASCII files.  Each field within each user's entry
  714. XX  is separated from the next by a colon.
  715. XX  Each user is separated from the next by a new-line.
  716. XX! If the encrypted password field is null, no password is demanded;
  717. XX  if the Shell field is null, then
  718. XX  .I /bin/sh
  719. XX  is used.
  720. XX  .PP
  721. XX! These files resides in directory /etc.
  722. XX! .I Passwd
  723. XX! has general read
  724. XX  to map numerical user ID's to names.
  725. XX+ If a shadow password file exists, it contains the encrypted passwords and
  726. XX+ is only accessible to root.
  727. XX  .PP
  728. XX  Appropriate precautions must be taken to lock the file against changes
  729. XX  if it is to be edited with a text editor;
  730. XX! .IR vipw (8E)
  731. XX  does the necessary locking.
  732. XX+ .PP
  733. XX+ If a shadow password file exists, it and
  734. XX+ .I /etc/passwd
  735. XX+ are sorted by user ID and login name, and kept in sync by
  736. XX+ .IR vipw .
  737. XX+ .SH NOTES
  738. XX+ If it is necessary to access the encrypted password, code similar to the
  739. XX+ following may be used to detect the presence of the shadow password file
  740. XX+ and set the appropriate password file name before calling the
  741. XX+ .IR getpwent (3E)
  742. XX+ routines:
  743. XX+ .sp
  744. XX+ .RS
  745. XX+     if (access(SHADOWPW, F_OK) == 0)
  746. XX+ .br
  747. XX+         setpwfile(SHADOWPW);
  748. XX+ .RE
  749. XX  .SH FILES
  750. XX! .ta \w'/etc/shadowpw'u+0.5i
  751. XX! /etc/passwd    readable password file
  752. XX! .br
  753. XX! /etc/shadowpw    shadow password file
  754. XX  .SH "SEE ALSO"
  755. XX! access(2),
  756. XX! getpwent(3E), login(1), crypt(3), passwd(1), group(5), chfn(1), finger(1),
  757. XX! vipw(8E), adduser(8E), mkshadow(8E), pwadm(8E)
  758. XX  .SH BUGS
  759. XX  User information (name, office, etc.) should be stored elsewhere.
  760. XX+ .PP
  761. XX+ If a shadow password file exists, the password files are sorted
  762. XX+ by user ID and user name.
  763. XX+ If more than one user name has the same user ID, the user name listed by
  764. XX+ .IR ls (1)
  765. XX+ will be based on the order of the sort.
  766. SHAR_EOF
  767. if test 4755 -ne "`wc -c passwd.5e.diff`"
  768. then
  769. echo shar: error transmitting passwd.5e.diff '(should have been 4755 characters)'
  770. fi
  771. echo shar: extracting pwadm.8e '(3708 characters)'
  772. sed 's/^XX//' << \SHAR_EOF > pwadm.8e
  773. XX.\"    $Header: pwadm.8e,v 1.2 88/01/13 18:09:32 gww Exp $ ENIX BSD
  774. XX.\"
  775. XX.\" $Log:    pwadm.8e,v $
  776. XX.\" Revision 1.2  88/01/13  18:09:32  gww
  777. XX.\" Describe change in exempt user interpretation.
  778. XX.\" 
  779. XX.\" Revision 1.1  87/12/24  13:21:13  gww
  780. XX.\" Initial revision
  781. XX.\" 
  782. XX.\"
  783. XX.\" Copyright (c) 1987 by ELXSI.
  784. XX.\"
  785. XX.\" This manual page was written by Gary Winiger at ELXSI. It may be
  786. XX.\" distributed within the following restrictions:
  787. XX.\"     (1) It may not be sold at a profit.
  788. XX.\"     (2) This credit and Copyright notice must remain intact.
  789. XX.\" This software may be distributed with other software by a commercial
  790. XX.\" vendor, provided that it is included at no additional charge.
  791. XX.\"
  792. XX.\" Please report bugs to "...!{sun,uunet}!elxsi!gww".
  793. XX.\"
  794. XX.TH PWADM 8E "December 25, 1987"
  795. XX.UC 4
  796. XX.SH NAME
  797. XXpwadm \- administer password criteria and aging
  798. XX.SH SYNOPSIS
  799. XX.B pwadm
  800. XX[
  801. XX.B \-c
  802. XX|
  803. XX.B \-l
  804. XX|
  805. XX.B \-r
  806. XX|
  807. XX.B \-s
  808. XX] [
  809. XX.B \-p
  810. XXdays] [
  811. XX.B \-t
  812. XXcriteria] [user[\-user] ...]
  813. XX.SH DESCRIPTION
  814. XX.PP
  815. XXPwadm allows a system administrator to list or modify the contents of the
  816. XXshadow password file.
  817. XXIt operates on the specified user range providing an interface to the
  818. XXpassword criteria and aging information maintained in the GECOS field
  819. XXof the shadow password file.
  820. XX.PP
  821. XXThe available commands are:
  822. XX.TP 8
  823. XX.B \-c
  824. XXClear the password aging history.
  825. XX.TP
  826. XX.B \-l
  827. XXList shadow password file contents.
  828. XX.TP
  829. XX.B \-r
  830. XXReset the last password changed time to force a change at next login.
  831. XX.TP
  832. XX.B \-s
  833. XXSet (enable) password aging.
  834. XX.TP
  835. XX.BI \-p " days"
  836. XXDefine the aging period to be
  837. XX.I days
  838. XXdays.
  839. XX.TP
  840. XX.BI \-t " criteria"
  841. XXDefine the valid password criteria to be of
  842. XX.I criteria
  843. XXtype.
  844. XXValid password criteria are
  845. XX.B b
  846. XX(normal BSD criteria)
  847. XXand
  848. XX.B s
  849. XX(strong criteria).
  850. XX.PP
  851. XXOnly one of 
  852. XX.BR \-c ,
  853. XX.BR \-l ,
  854. XX.BR \-r ,
  855. XXor
  856. XX.B \-s
  857. XXmay be specified at a time.
  858. XXAn aging period of zero (0) days disables password aging.
  859. XXThe default aging period is 90 days for the
  860. XX\fB\-s\fP(et) command, for all other commands it is the aging period currently
  861. XXenabled.
  862. XXThe password criteria will only be changed if the 
  863. XX.B \-t
  864. XXcommand is used, the default is the normal BSD criteria.
  865. XXThe strong password criteria requires passwords be at least 7 characters in
  866. XXlength and that characters be selected from the full printable ASCII character
  867. XXset.
  868. XX.PP
  869. XXThe user range to be acted on may be specified as a single 
  870. XX.I user
  871. XXor 
  872. XX.I user1\c
  873. XX\-
  874. XX.IR user2 .
  875. XXWhere 
  876. XX.I user
  877. XXis either a user ID or login name.
  878. XXIf more than one user has the same user ID, and user ID is specified,
  879. XXall users with that user ID will be affected.
  880. XXIf no user range is specified, all users except those listed in
  881. XX.I /etc/exemptpw
  882. XXwill be acted on.
  883. XX.I /etc/exemptpw
  884. XXlists exempt user names one per line starting in the first column.
  885. XXLines beginning with an ``#'' in the first column are ignored and may
  886. XXbe used for comments.
  887. XXIf no exempt file exists, ``root'' and ``uucp'' are declared exempt.
  888. XX.PP
  889. XXIf a requested multi-user range includes ``exempt'' users, a message will be
  890. XXwritten to the standard error file and the action for those users will be
  891. XXskipped.
  892. XXIf a requested single user is an ``exempt'' user, a message requesting
  893. XXconfirmation of the action will be written to the standard error file and
  894. XXconfirmation read from the standard input file.
  895. XX.IR Yes (1)
  896. XXmay be used from within a shell to provide an appropriate blanket response.
  897. XX.SH DIAGNOSTICS
  898. XXSelf explanatory.
  899. XX.SH SEE ALSO
  900. XXyes(1),
  901. XXpasswd(5E),
  902. XXadduser(8E),
  903. XXmkshadow(8E),
  904. XXvipw(8E)
  905. XX.br
  906. XX``PASSWORD SECURITY ENHANCEMENTS'' in
  907. XX.I Installing and Operating ENIX BSD
  908. XX.SH FILES
  909. XX.ta \w'/etc/exemptpw'u+0.5i
  910. XX/etc/exemptpw    list of exempt user names.
  911. XX.br
  912. XX/etc/shadowpw    shadow password file
  913. XX.SH BUGS
  914. XXMore password criteria should exist.
  915. XX.SH AUTHOR
  916. XXGary Winiger
  917. XX.br
  918. XXCopyright \(co 1987 by ELXSI
  919. SHAR_EOF
  920. if test 3708 -ne "`wc -c pwadm.8e`"
  921. then
  922. echo shar: error transmitting pwadm.8e '(should have been 3708 characters)'
  923. fi
  924. echo shar: extracting pwd.h.diff '(2255 characters)'
  925. sed 's/^XX//' << \SHAR_EOF > pwd.h.diff
  926. XX*** /tmp/,RCSt1007012    Thu Dec 24 11:16:48 1987
  927. XX--- pwd.h    Thu Dec 24 11:16:17 1987
  928. XX***************
  929. XX*** 1,6 ****
  930. XX! /*    $Header: pwd.h,v 1.1 86/12/18 14:08:37 gww Exp $ ENIX BSD
  931. XX   *
  932. XX   * $Log:    pwd.h,v $
  933. XX   * Revision 1.1  86/12/18  14:08:37  gww
  934. XX   * Initial revision
  935. XX   * 
  936. XX--- 1,9 ----
  937. XX! /*    $Header: pwd.h,v 1.2 87/12/24 11:15:46 gww Exp $ ENIX BSD
  938. XX   *
  939. XX   * $Log:    pwd.h,v $
  940. XX+  * Revision 1.2  87/12/24  11:15:46  gww
  941. XX+  * Add shadow password file, password criteria, and password aging information.
  942. XX+  * 
  943. XX   * Revision 1.1  86/12/18  14:08:37  gww
  944. XX   * Initial revision
  945. XX   * 
  946. XX***************
  947. XX*** 20,22 ****
  948. XX--- 23,75 ----
  949. XX  };
  950. XX  
  951. XX  struct passwd *getpwent(), *getpwuid(), *getpwnam();
  952. XX+     
  953. XX+ #ifdef    elxsi
  954. XX+ 
  955. XX+ /* Name of the shadow password file. Contains password and aging info */
  956. XX+ 
  957. XX+ #define    SHADOWPW "/etc/shadowpw"
  958. XX+ #define    SHADOWPW_PAG "/etc/shadowpw.pag"
  959. XX+ #define    SHADOWPW_DIR "/etc/shadowpw.dir"
  960. XX+ 
  961. XX+ /*
  962. XX+  *    Shadow password file pwd->pw_gecos field contains:
  963. XX+  *
  964. XX+  *    <type>,<period>,<last_time>,<old_time>,<old_password>
  965. XX+  *
  966. XX+  *    <type>        = Type of password criteria to enforce (type int).
  967. XX+  *              BSD_CRIT (0), normal BSD.
  968. XX+  *              STR_CRIT (1), strong passwords.
  969. XX+  *    <period>    = Password aging period (type long).
  970. XX+  *              0, no aging.
  971. XX+  *              else, number of seconds in aging period.
  972. XX+  *    <last_time>    = Time (seconds from epoch) of the last password 
  973. XX+  *              change (type long).
  974. XX+  *              0, never changed.
  975. XX+  *    <old_time>    = Time (seconds from epoch) that the current password
  976. XX+  *              was made the <old_password> (type long).
  977. XX+  *              0, never changed.
  978. XX+  *    <old_password>    = Password (encrypted) saved for an aging <period> to
  979. XX+  *              prevent reuse during that period (type char [20]).
  980. XX+  *              "*******", no <old_password>.
  981. XX+  */
  982. XX+ 
  983. XX+ /* number of tries to change an aged password */
  984. XX+ 
  985. XX+ #define    CHANGE_TRIES 3
  986. XX+ 
  987. XX+ /* program to execute to change passwords */
  988. XX+ 
  989. XX+ #define    PASSWD_PROG "/bin/passwd"
  990. XX+ 
  991. XX+ /* Name of the password aging exempt user names and max number of entires */
  992. XX+ 
  993. XX+ #define    EXEMPTPW "/etc/exemptpw"
  994. XX+ #define MAX_EXEMPT 100
  995. XX+ 
  996. XX+ /* Password criteria to enforce */
  997. XX+ 
  998. XX+ #define BSD_CRIT 0        /* Normal BSD password criteria */
  999. XX+ #define STR_CRIT 1        /* Strong password criteria */
  1000. XX+ #define MAX_CRIT 1
  1001. XX+ #endif    elxsi
  1002. SHAR_EOF
  1003. if test 2255 -ne "`wc -c pwd.h.diff`"
  1004. then
  1005. echo shar: error transmitting pwd.h.diff '(should have been 2255 characters)'
  1006. fi
  1007. echo shar: extracting readme.ms '(3745 characters)'
  1008. sed 's/^XX//' << \SHAR_EOF > readme.ms
  1009. XX.SH
  1010. XXPASSWORD SECURITY ENHANCEMENTS
  1011. XX.PP
  1012. XXPasswords are the primary method of user identification and authentication
  1013. XXin UNIX.
  1014. XXIf a user's password is compromised, there is no credibility to the
  1015. XXlogin authentication.
  1016. XXThe \*Qstandard\*U
  1017. XX.I /etc/passwd
  1018. XXfile is readable by all users and contains the encrypted user passwords.
  1019. XXThis leaves these passwords open to attack.
  1020. XXFurthermore, there is no standard mechanism in 4.3BSD to require users
  1021. XXto periodically change passwords or to require stronger passwords.
  1022. XX.PP
  1023. XXThe security of a password is based on the alphabet from which it is chosen,
  1024. XXits length, its life time and the rate at which guesses can be generated
  1025. XXand tested.
  1026. XXIncreasing the alphabet, increasing the length, or decreasing the lifetime
  1027. XXor guess rate increases the security of a password.
  1028. XX(For a discussion of password security, see \*QDepartment of Defense Password
  1029. XXManagement Guideline\*U, CSC-STD-002-85, 12 April 1985.)
  1030. XX.PP
  1031. XXThe 4.3BSD password system commands have been modified and administrative
  1032. XXcommands written to increase the security of the UNIX password system and
  1033. XXthereby increase the credibility of user identification and authentication.
  1034. XXThis package addresses the \*Qstandard\*U 4.3BSD shortcomings by providing a
  1035. XXshadow password file, password aging, and selectable password criteria.
  1036. XXWhen activated, the password field in
  1037. XX.I /etc/passwd
  1038. XXcontains a place holder.
  1039. XXThe actual passwords are kept in the shadow password file (only accessible to
  1040. XXroot).
  1041. XXThe GECOS field in the shadow password file contains fields for password
  1042. XXcriteria, the password aging period, and one level of retained password to
  1043. XXguard against reuse of the same password within the password aging period.
  1044. XX.PP
  1045. XXIf the administrator takes no action, the password system will continue
  1046. XXas in a \*Qstandard\*U 4.3BSD system.
  1047. XXTo gain any of these password security enhancements a shadow password file
  1048. XXmust exist.
  1049. XXAll password system involved UNIX utilities (\fIlogin\fP(1), \fIpasswd\fP(1E),
  1050. XX\fIsu\fP(1), \fIftpd\fP(8C), \fIuucpd\fP(8C), and \fIvipw\fP(8E))
  1051. XXkey on the existence of a shadow password file to activate the enhancements.
  1052. XXThe administrator may create the shadow password file with the
  1053. XX\fImkshadow\fP(8E) command.
  1054. XXOnce created, password aging and password criteria may be set for any user
  1055. XXwith the \fIpwadm\fP(8E) command.
  1056. XXAn example of adding new users is found in the \fIadduser\fP(8E) manual page.
  1057. XXA description of the shadow password file is found in
  1058. XX.I /usr/include/pwd.h
  1059. XXand the \fIpasswd\fP(5E) manual page.
  1060. XX.PP
  1061. XXFor locally written code that must access the encrypted password, code similar
  1062. XXto the following may be used to detect the presence of the shadow password
  1063. XXfile and set the appropriate password file name before calling the
  1064. XX\fIgetpwent\fP(3) routines:
  1065. XX.BD
  1066. XX    if (access(SHADOWPW, F_OK) == 0)
  1067. XX        setpwfile(SHADOWPW);
  1068. XX.DE
  1069. XX.PP
  1070. XXA stronger password criteria in addition to the \*Qstandard\*U 4.3BSD
  1071. XXcriteria is provided.
  1072. XXSource sites will find it easy to add their own criteria.
  1073. XXBinary sites may request additional password criteria from ELXSI through
  1074. XXtheir sales representative.
  1075. XXThe stronger criteria requires password be chosen from the full printable
  1076. XXASCII character set and be of at least 7 characters long.
  1077. XX(The superuser may set any password.)
  1078. XX.PP
  1079. XXWhen password aging is first activated for a user or when a user's password
  1080. XXaging history is cleared (with \fBpwadm -c\fP \fI user\fP), he will be
  1081. XXrequired to change his password during the next login.
  1082. XXWhenever an activated user's current password expires or when a user's
  1083. XXaging history is reset (with \fBpwadm -r\fP \fI user\fP), he will be
  1084. XXrequired to change his password at during the next login.
  1085. XXIf the user does not successfully change his password, he will not be permitted
  1086. XXto login.
  1087. SHAR_EOF
  1088. if test 3745 -ne "`wc -c readme.ms`"
  1089. then
  1090. echo shar: error transmitting readme.ms '(should have been 3745 characters)'
  1091. fi
  1092. echo shar: extracting vipw.8e.diff '(2095 characters)'
  1093. sed 's/^XX//' << \SHAR_EOF > vipw.8e.diff
  1094. XX*** /tmp/,RCSt1008437    Thu Dec 24 13:36:54 1987
  1095. XX--- vipw.8e    Thu Dec 24 13:36:28 1987
  1096. XX***************
  1097. XX*** 1,6 ****
  1098. XX! .\"    $Header: vipw.8e,v 1.1 87/06/10 14:38:27 gww Exp $ ENIX BSD
  1099. XX  .\"
  1100. XX  .\" $Log:    vipw.8e,v $
  1101. XX  .\" Revision 1.1  87/06/10  14:38:27  gww
  1102. XX  .\" Initial revision
  1103. XX  .\" 
  1104. XX--- 1,9 ----
  1105. XX! .\"    $Header: vipw.8e,v 1.2 87/12/24 13:36:16 gww Exp $ ENIX BSD
  1106. XX  .\"
  1107. XX  .\" $Log:    vipw.8e,v $
  1108. XX+ .\" Revision 1.2  87/12/24  13:36:16  gww
  1109. XX+ .\" Add shadow password file information.
  1110. XX+ .\" 
  1111. XX  .\" Revision 1.1  87/06/10  14:38:27  gww
  1112. XX  .\" Initial revision
  1113. XX  .\" 
  1114. XX***************
  1115. XX*** 11,17 ****
  1116. XX  .\"
  1117. XX  .\"    @(#)vipw.8    6.2 (Berkeley) 5/19/86
  1118. XX  .\"
  1119. XX! .TH VIPW 8 "May 19, 1986"
  1120. XX  .UC 4
  1121. XX  .SH NAME
  1122. XX  vipw \- edit the password file
  1123. XX--- 14,20 ----
  1124. XX  .\"
  1125. XX  .\"    @(#)vipw.8    6.2 (Berkeley) 5/19/86
  1126. XX  .\"
  1127. XX! .TH VIPW 8E "May 19, 1986"
  1128. XX  .UC 4
  1129. XX  .SH NAME
  1130. XX  vipw \- edit the password file
  1131. XX***************
  1132. XX*** 31,37 ****
  1133. XX  .IR root ,
  1134. XX  and will not allow a password file with a ``mangled'' root entry
  1135. XX  to be installed.
  1136. XX  .SH SEE ALSO
  1137. XX! passwd(1), passwd(5), adduser(8), mkpasswd(8)
  1138. XX  .SH FILES
  1139. XX  /etc/ptmp
  1140. XX--- 34,65 ----
  1141. XX  .IR root ,
  1142. XX  and will not allow a password file with a ``mangled'' root entry
  1143. XX  to be installed.
  1144. XX+ .PP
  1145. XX+ If a shadow password exists,
  1146. XX+ .I /etc/passwd
  1147. XX+ is passed to the editor to be updated.
  1148. XX+ From the updated
  1149. XX+ .I /etc/passwd
  1150. XX+ and the old shadow password file, a new shadow password file is created.
  1151. XX  .SH SEE ALSO
  1152. XX! passwd(1E), passwd(5E), adduser(8E), mkpasswd(8), mkshadow(8E)
  1153. XX  .SH FILES
  1154. XX  /etc/ptmp
  1155. XX+ .br
  1156. XX+ /etc/sptmp
  1157. XX+ .SH BUGS
  1158. XX+ If a shadow password file exists, the password files are sorted
  1159. XX+ by user ID and user name.
  1160. XX+ If more than one user name has the same user ID, the user name listed by
  1161. XX+ .IR ls (1)
  1162. XX+ will be based on the order of the sort.
  1163. XX+ .PP
  1164. XX+ To disable an account by changing its password to an ungeneratable password
  1165. XX+ in the shadow password file, it is safest to first delete that account's
  1166. XX+ line in 
  1167. XX+ .I /etc/passwd
  1168. XX+ with 
  1169. XX+ .IR vipw (8E)
  1170. XX+ and then re\-install the account with a password field of \*(lq***\*(rq with
  1171. XX+ a second invocation of
  1172. XX+ .IR vipw .
  1173. SHAR_EOF
  1174. if test 2095 -ne "`wc -c vipw.8e.diff`"
  1175. then
  1176. echo shar: error transmitting vipw.8e.diff '(should have been 2095 characters)'
  1177. fi
  1178. #    End of shell archive
  1179. exit 0
  1180.  
  1181.  
  1182.