Hi... I wrote a simple program (for BSD 4.3) to help those who need to keep track of the expiration dates of the accounts in the system. First I thought of calling it `expire' but since the news system contains a program called like that, I invented a more glorious name: ACE - ACcount Expiration Ace is a program and a library function to keep track of account expiration dates. If called from login(1) and rshd(8), it takes care that expired accounts will not gain access to your system until the accounts have been activated again. A special feature is to allow a number of logins after the expiration date has passed (by default 3 but it may be set to anything). Another special feature is to set a default date for those accounts that have no expiration date on the first login. This is a compile time option, see the Makefile. As distributed, the patches to login and rshd set a default expiration of one year from the first login through the ace system. Ace does not deny access to the system if the enable file "/etc/ace_enable" does not exist. ------------------------------------------------------------- The package includes a program ace(8) to maintain the expiration database and a library function ace(3) with man pages. I also included patches to login(1) and rshd(8) to make them use the expiration system. (Our rshd(8) also includes another local patch: the remote user and host are copied to the RUSER and RHOST environment variables correnpondingly. This feature is enabled with a compilation option. The ACE system does not need this patch) ------------------------------------------------------------ ace(8) should have enough commands to manipulate and look for everything in the database, see the manual. I tried to add everything that came into my mind, but if something is missing, you're welcome to implement it. (Please send me the diffs) It has commands to list expired accounts, list valid accounts disable some accounts, ask expiration dates and set dates and retry counts. I decided that ace would not delete any files or remove anything from system files (e.g. /etc/passwd) since that may be done with command scripts, and it should be done after the user has had a chance to rescue her files. The expiration database is a DBM file with account names as keys and expiration times and retries as data. Ace uses the file getdate.y from B-News 2.11 to parse dates; the one included here is modified to accept also Finnish month and weekday names. I also removed one file inclusion and one #ifdef to make it compile without problems. The directory scripts/ contains some perl-2.0 scripts to list unregistered users, set expiration dates for those who don't have one yet (with 13 character crypted password and a shell from /etc/shells; to prevent daemons and uucp:s and whatever to be registered) There is also a thing to list the directory and mail file of the expired users; this needs some work and it needs to use find(1) to be complete. Juki jtv@hut.fi