home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / faqs / comp / answers / 386bsd-faq / part5 < prev    next >
Internet Message Format  |  1997-10-14  |  22KB

  1. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news-out.internetmci.com!newsfeed.internetmci.com!206.229.87.25!news-peer.sprintlink.net!news-sea-19.sprintlink.net!news-in-west.sprintlink.net!news.sprintlink.net!Sprint!204.248.21.3!neonramp.com!cynjut.neonramp.com!cynjut.neonramp.com!not-for-mail
  2. From: burgess@cynjut.neonramp.com (Dave Burgess)
  3. Newsgroups: comp.unix.bsd.netbsd.announce,comp.unix.bsd.freebsd.announce,comp.answers,news.answers,comp.unix.openbsd.announce
  4. Subject: [comp.unix.bsd] NetBSD, FreeBSD, and OpenBSD FAQ (Part 5 of 10)
  5. Supersedes: <386bsd-faq-5-875343603@cynjut.neonramp.com>
  6. Followup-To: comp.unix.bsd.netbsd.misc
  7. Date: 13 Oct 1997 02:00:17 -0500
  8. Organization: Dave's House in Omaha
  9. Lines: 524
  10. Approved: news-answers-request@MIT.Edu,cgd@sun-lamp.cs.berkeley.edu
  11. Expires: 10/31/97 01:00:03 CDT
  12. Message-ID: <386bsd-faq-5-876726003@cynjut.neonramp.com>
  13. References: <386bsd-faq-1-876726003@cynjut.neonramp.com>
  14. Reply-To: burgess@cynjut.neonramp.com (BSD FAQ Maintainer)
  15. NNTP-Posting-Host: cynjut.neonramp.com
  16. Keywords: FAQ 386bsd NetBSD FreeBSD !Linux
  17. X-Posting-Frequency: Posted on/about the 13th and the 27th of every month.
  18. Xref: senator-bedfellow.mit.edu comp.unix.bsd.netbsd.announce:564 comp.unix.bsd.freebsd.announce:735 comp.answers:28478 news.answers:114370
  19.  
  20. Posted-By: auto-faq 3.1.1.2
  21. Archive-name: 386bsd-faq/part5
  22.  
  23. Section 4.    (System Additions)
  24.  
  25. 4.0    Introduction
  26.  
  27.     If you have written some addition to the kernel or some other 
  28.     part of the system, or know of one that feel should be mentioned, 
  29.     send mail to Dave Burgess (burgess@cynjut.neonramp.com) with all 
  30.     the relevant information, and it will be added for the next 
  31.     release.
  32.  
  33. 4.1    Common (sort of) Kernel-related problems
  34.  
  35. 4.1.1    Sometimes I have trouble with my system resetting the terminal
  36.     to seven bit mode.  Isn't BSD eight bit clean?
  37.  
  38.     The answer is "sort of".  The problem seems to come from the
  39.     fact that the <sgtty.h> interface is not guaranteed to be eight
  40.     bit clean.  The <termios.h> interface is better, and should be
  41.     eight bit clean in all cases.  If you find an application that
  42.     uses the <sgtty.h> interface, you should either contact the
  43.     author and try and get them to use the termios interface or port
  44.     the code yourself.
  45.  
  46.     See section 5 for more Terminfo/Termlib information, as well as
  47.     a discussion of the new curses library that is available.
  48.  
  49.  
  50. 4.1.2    How do you implement quotas on Net/2 derived BSD systems?
  51.  
  52.     From: tinguely@plains.NoDak.edu (Mark Tinguely)
  53.  
  54.      maybe you did not complete the setup, here is a step-by-step 
  55.      instructions to get them to work:
  56.  
  57.     1)  make a kernel with "options QUOTA" installed
  58.  
  59.     2)  edit /etc/fstab and include the kinds of quotas you want, 
  60.         below I used "userquota", you could also add "groupquota".
  61.  
  62.     /dev/wd0h        /usr        ufs    rw,userquota 1 2
  63.  
  64.     3)  for each filesystem that is in /etc/fstab that uses quota,
  65.         create the file "quota.user" (and "quota.group if appropriate).
  66.         Above I have user quotas in the /usr filesystem, so I would:
  67.  
  68.         # touch /usr/quota.user
  69.  
  70.     4)  scan filesystem for files ownership (and/or group ownership).
  71.  
  72.         # quotacheck -a
  73.  
  74.     5)  now you can add individual quota limits, if you want to add 
  75.         the same quotas to the many people, then make a template and 
  76.         replicate the template.  If they change for each user, then 
  77.         edit seperately.
  78.  
  79.         # edquota tinguely
  80.  
  81.      (an editor is kicked up and says something like:
  82.  
  83.     Quotas for user tinguely:
  84.       /usr: blocks in use: 11876, limits (soft = 0, hard = 0)
  85.             inodes in use: 891, limits (soft = 0, hard = 0)
  86.  
  87.      a limit of 0 means "unlimited".  Change these to the appropriate 
  88.      number of blocks.  A soft limit generates a warning, and can be 
  89.      exceed for period of time (7 days?), after which time a soft limit 
  90.      is treated like a hard limit.  A hard limit denies new writes.
  91.  
  92.      to replicate a template (for this example let us assume "tinguely" 
  93.      is the template):
  94.  
  95.         # edquota -p tinguely user1 user2 user3 ... userN
  96.  
  97.     6)  turn quotas on (usually done in the /etc/rc file, but turn it 
  98.         on manually so you do not have to reboot right now:
  99.  
  100.         # quotaon
  101.  
  102.     that should take care of setting up quotas.  You can look at the 
  103.     status of use of files with repquota, the -a option lists all 
  104.     filesystems with quotas.
  105.  
  106. 4.1.3    What are the correct permissions for the /tmp, /usr/tmp, and
  107.     /var/tmp directories?
  108.  
  109.     All of these directories should be owned by bin, group bin, mode
  110.     1777.  This turns on the sticky bit, so that the only people who
  111.     can remove a file from these directories are the owner and root.
  112.  
  113.  
  114. 4.2    Available kernel add-ons
  115.  
  116. 4.2.1    Loadable Kernel Modules
  117.  
  118.     Several strides have been made in the past to reduce the amount
  119.     of 'cruft' that gets into the default kernel.  One way is to
  120.     make the kernel so hard to use that practically no one but a
  121.     person with precisely the 'right' hardware would be able to use
  122.     the system
  123.  
  124.     Another way is to implement something called 'LKM's or "Loadable
  125.     Kernel Modules".  These are run-time extensions to the system
  126.     that allow the distribution kernel to not include things that
  127.     people might want, but not nxbeed until they get the system up
  128.     and running.  While the security concerns of LKMs are valid,
  129.     their implementation is such a win that the research to
  130.     implement them is well worth it.
  131.  
  132.     It was really _very_ simple to make these, so this is nothing
  133.     spectacular.  Just something to keep from having to recompile just to
  134.     add msdosfs support to a machine.  ;)
  135.  
  136.     To try this:
  137.  
  138.         1)  get ftp://ftp.flame.org/pub/netbsd/lkm.tar.gz
  139.  
  140.         2)  untar it somewhere.  It will create a subdirectory 
  141.             called lkm and all extracted files will go in it. 
  142.             (I use /usr/src, but that may be a bad place)
  143.  
  144.         3)  follow the directions in lkm/README
  145.  
  146.     Please mail suggestions, and (especially) fixes and more 
  147.     modules to Michael Graff <explorer@flame.org>.  Once it is 
  148.     clean enough, I'll send it in as a send-pr and see what 
  149.     happens.  :)
  150.  
  151.     One question which still needs to be resolved is where should 
  152.     these *.o LKM's be installed?  The directory '/usr/lkm' would 
  153.     be a good idea, with the output (modload's -o option) in 
  154.     /var/run/lkm or something like that.
  155.  
  156.  
  157. 4.3    Other program building type problems.
  158.  
  159. 4.3.1    I am building a program that requires access to the crypt library.  
  160.     Either I have it and it isn't getting copied into the executable, 
  161.     or I don't have it; why?
  162.  
  163.     This is actually two separate questions, but they are close enough
  164.     to the same that I can answer them here.  The first problem that
  165.     anyone building a 'crypt' aware program needs to remember is that
  166.     the crypt library is a separate library and requires a '-lcrypt' 
  167.     to be added at the end of the link line.  The other half of the 
  168.     problem is the 'US Non Export' policy for DES encryption.  There 
  169.     are several good sources (about one per country) for non-US
  170.     crypt libraries.  IF you are outside the US and need one, look 
  171.     around on some of the NetBSD/FreeBSD/OpenBSD FTP sites in the 
  172.     'local area'.  By the way. I don't have any good URLs for Mars,
  173.     so you might be out of luck.
  174.  
  175.     OpenBSD doesn't appear to have this problem, since it is a
  176.     "Canadian" product rather than an American one.  Thanks to this,
  177.     there is no restriction on exporting (or importing) the crypt
  178.     library, so it is no longer needed.  With version 2.1 of
  179.     OpenBSD, the crypt library doesn't even exist; it is included in
  180.     the standard library for the system.  
  181.  
  182.  
  183. 4.3.2    I am having trouble with long file names in my libraries.  It
  184.     seems like there is a 16 character limit in the library
  185.     somewhere.
  186.  
  187.     There is a 16 character limit, sort of.  The most likely symptom
  188.     for this is that the header for the file _after_ the long file
  189.     name will be mangled.  It turns out that there is a "T" option
  190.     that may not be documented very well that provides the correct
  191.     functionality for long filename support in ar.
  192.  
  193. 4.3.3    I'm getting annoyed with having this "conflicting types for 
  194.     `sys_errlist'" problem show up nearly every time I build a 
  195.     program.  What do I need to do?
  196.  
  197.     Remove the sys_errlist reference in the source you're compiling.
  198.     You can either delete it (there are advantages to just deleting
  199.     it) or you can wrap a "#ifdef __NetBSD__/#endif" (obviously only
  200.     if you are running NetBSD, FreeBSD and OpenBSD have a similar
  201.     mechanism) pair around it.  There are religious issues 
  202.     regarding the use of sys_errlist that involve either system 
  203.     security (most declaration allow the error list to be written 
  204.     to) or system internals (there's already a well-defined 
  205.     library call that performs the sys_errlist lookup).  An 
  206.     anonymous example is included below:
  207.  
  208.     Most stupid packages such as GCC expects extern 
  209.     (char*)sys_errlist[] whereas 4.4Lite based systems have more 
  210.     secure extern const (char*) const sys_errlist[] declaration.  
  211.     Just kick that "cccp.c" in the butt and modify the suspicious 
  212.     line.  Hard to believe GCC still doesn't do that.  You're going 
  213.     to have to do lots of this modification as you encounter more of 
  214.     such programs.
  215.  
  216.  
  217. 4.4    System Administration Questions
  218. 4.4.1    Where can I get good books about NetBSD or FreeBSD?
  219.  
  220.     There is a set of books produced by O'Reilly and associates that
  221.     describe in some detail the 4.4 BSD system.  The six volume set
  222.     includes a book on system administration which directly pertains
  223.     to the operation and management of NetBSD and FreeBSD.  Also see
  224.     the Section 1 for a good list of the books that folks use for
  225.     the system.  There is also a good list of books (specifically
  226.     about writing device drivers) in the 'pcvt' distributions in
  227.     NetBSD, FreeBSD, and OpenBSD.  It is in a file called
  228.     'Bibliography' and contains the pcvt author's list of device
  229.     driver books.
  230.  
  231.  
  232. 4.4.2    I am concerned about system security.  What should I do to
  233.     protect my system from net attacks?
  234.  
  235.     With the release of the System Administrators Tool for Analyzing
  236.     Networks (SATAN), network security has suddenly become a serious
  237.     issue.  There are a few things you can do.
  238.  
  239.     --  Get, read, and understand the CERT advisories
  240.     --  Get SATAN and run it against your own system or network.
  241.     Fix whatever it finds as holes
  242.     --  Get courtney, a program that was written to recognize a
  243.     SATAN attack pattern and notify you whenever someone tries to
  244.     probe your system
  245.     --  Log all failed login attempts (see below)
  246.  
  247.  
  248. 4.4.3    How can I log failed login attempts?
  249.     
  250.     Failed logins are logged (without the attempted login name) at
  251.     LOG_NOTICE priority.  Failed logins are logged _with_ the 
  252.     attempted login name at LOG_NOTICE priority, and with the 
  253.     LOG_AUTHPRIV facility.
  254.  
  255.     If you set up some lines in syslog.conf like:
  256.  
  257.     # The authpriv log file should be restricted access;
  258.     # these messages shouldn't go to terminals or publically-readable files.
  259.     authpriv.*                                      /var/log/secure
  260.  
  261.     Make absolutely sure, though, that it's really what you want:  
  262.     logging actual supplied logins is often a great way to offer 
  263.     cleartext passwords to an adversary...
  264.  
  265.     Which is why you have 
  266.         authpriv.*            /var/log/secure
  267.     ...,authpriv.none,...        /var/log/messages
  268.  
  269.     So none of the authpriv messages (those that actually display 
  270.     the failed login) goto /var/log/messages, but they do go to
  271.     /var/log/secure (which you have with 600 perms.)  Bear in mind
  272.     that this still does not prevent someone that has hacked into
  273.     your system with root privs from reading them.  See 4.4.2 for
  274.     more information.
  275.  
  276.  
  277. 4.4.4    Can I use a Concatenated Filesystem with NetBSD?
  278.  
  279.     The "ccd" device (in -current) provides the capability to span a
  280.     file system across multiple hard drive partitions.  Jason Thorpe
  281.     <thorpej@nas.nasa.gov> has been working on it; if you try it and 
  282.     have problems, here are the debug instructions:
  283.  
  284.  
  285. 4.4.4.1    Why, when I type "ccdconfig ccd0 16 none /dev/wd0a > /dev/wd1a", do
  286.     I get back "ccdconfig: ioctl (CCDIOCSET): /dev/ccd0d: Device not
  287.     configured"?
  288.  
  289.     Considering that the error comes froom the ioctl (rather than the 
  290.     open) I'm tempted to say it comes from either the vn_open() or 
  291.     subsequent VOP_*() operations on the components.  If you compile 
  292.     your kernel with `options CCDDEBUG' and set the ccddebug variable 
  293.     (near the top of ccd.c or with the ddb) to 0x03, you should be able 
  294.     to see where it fails.  If you could send me that information, 
  295.     that would be most helpful.
  296.  
  297.     Might be the same problem I had; it turns out that the partitions 
  298.     that you build your concatenated disk device from must not be 
  299.     marked "unused" in their native disks' labels.  This "device not 
  300.     configured" is the way ccdconfig informs you of this condition...  :-)
  301.  
  302.     Actually, I guess this indicates a need for a special "ccd 
  303.     component" type entry for disklabel?  Or should the partition 
  304.     simply be marked as a "raw" partition, sharing this type with 
  305.     database log partitions etc?
  306.  
  307.     'Der Mouse' (mouse@collatz.mcrcim.mcgill.edu) adds:
  308.  
  309.     Personally, I think ccd has no business looking at those 
  310.     partition types.  But I definitely think a special ccd-component 
  311.     partition type is _not_ the way to go; if nothing else, it makes 
  312.     life hard for people running ports using non-NetBSD disk 
  313.     partitions.  For example, under NetBSD/sparc on a disk with 
  314.     a SunOS label, there are no partition types in the label, so 
  315.     it would be impossible to use a ccd that insisted on a special 
  316.     partition type on such a disk.
  317.  
  318.  
  319. 4.4.5    I am really new to Unix System Administration.  I need some real
  320.     basic help.
  321.  
  322. 4.4.5.1    What is the System Administrator's user name?
  323. 4.4.5.2    I can't log in as 'su'.  What does that message mean when I log
  324.     in as root.
  325.  
  326.     Both of these indicate a newness to Unix System Administration
  327.     that many of the core team members don't even remember.  The
  328.     sysadmin user-id is "root", although you typically don't want to 
  329.     log in directly as root.  A better solution is to log in as root 
  330.     once, create a user-id and password for yourself.  Once you are 
  331.     done with that, you need to modify the /etc/groups file.  This
  332.     identifies the users that are allowed to be part of particular
  333.     groups.  Add your UID to the "wheel" group and log off.  With a
  334.     real UID and password and your UID identified as a "wheel"
  335.     member. you will be able to use the 'su' command to log in as
  336.     yourself and then "switch users" to root.  That, by the way, is
  337.     also what that cryptic message "Don't log in as 'root', use 'su'
  338.     instead." means.
  339.  
  340. 4.4.5.3    Are there any books I can 'bootstrap' myself with?
  341.  
  342.     Yes.  Here are a couple:
  343.  
  344.  
  345.     (1) Nemeth, Snyder, and Seebass, "Unix System Administration i
  346.         Handbook"
  347.  
  348.     (2) Horspool, "The Berkeley Unix Environment"
  349.  
  350.  
  351. 4.4.5.4    How about some code examples?
  352.  
  353.  
  354.     ftp://ftp.sterling.com:/usenet/alt.sources/        
  355.     ftp://ftp.sterling.com:/usenet/comp.sources/misc
  356.     ftp://ftp.sterling.com:/usenet/comp.sources.unix
  357.  
  358.     ftp://wuarchive.wustl.edu:/usenet/alt.sources/articles/
  359.                                /usenet/comp.sources.misc/
  360.                                /usenet/comp.sources.unix/
  361.  
  362.     ftp://src.doc.ic.ac.uk:/usenet/alt.sources/articles/
  363.                             /usenet/comp.sources.misc/
  364.                             /usenet/comp.sources.unix/
  365.  
  366.  
  367. 4.5.6    How do I change the default shell for a user?
  368.  
  369.     There are three ways, listed here from most difficult to least
  370.     difficult:
  371.  
  372.     1)  Use 'vi' to edit the /etc/master.passwd.  Once you have
  373.     changed the entry you want modified, run the program 
  374.     "pwd_mkdb -p /etc/master.passwd".  This will rebuild the
  375.     password database and update your /etc/passwd file.  Cd to the
  376.     /var/yp directory and run a "make" to update your 'NIS' database
  377.     (important only if you are using NIS).
  378.  
  379.     2)  Use the 'vipw' program and make your change.  This
  380.     automatically rebuilds the password database and the /etc/passwd
  381.     file.  You still need to update the 'NIS' database on your own.
  382.  
  383.     3)  Use 'chpass', 'chfn', or 'chsh' programs to update the
  384.     appropriate entry in the password database.  These have the
  385.     advantage of update the NIS stuff automatically.
  386.  
  387.  
  388. 4.5    Daemon questions
  389. 4.5.1    I'd like to use amd to mount a file system (/dev/sd0f aka 
  390.     /usr/local) on another machine as "/usr/local".  What's the 
  391.     magic?
  392.  
  393.     There are several ways to achieve 'amd nirvana'.  Each of these
  394.     elements below is an important consideration for getting amd to
  395.     work correctly.
  396.  
  397.     The "-" means use these as defaults, so you need an entry without 
  398.     a "-".  Also, I think one "-..." overrides the previous one 
  399.     completely.
  400.  
  401.     As a start, you can use the following in your amd.project file:
  402.  
  403.     usr/local    opts:=rw;type:=nfs;rhost:=hostname;rfs:=/usr/local
  404.  
  405.     Then run "amd /usr/local /your/map/name -type:=direct".
  406.  
  407.     One word of warning, however.  In NetBSD 1.0, I couldn't get direct
  408.     mount points to work for some reason.  I don't know if this has been
  409.     fixed or not.
  410.  
  411.     If you are using a NetBSD 1.0 (or earlier) system, make /usr/local 
  412.     a real symbolic link into an automount filesystem.
  413.  
  414.     Another instance of the amd.project file might look like this:
  415.     /defaults type:=nfs;opts:=rw,soft,intr,grpid
  416.     local    \
  417.         host==hostname;type:=link;fs=/usr/local ||\
  418.         host!=hostname;rhost:=hostname;rfs:=/usr/local
  419.     
  420.     You amd.master file might look like this:
  421.     /project amd.project
  422.  
  423.     Here's another example which auto-mounts /usr/src from another 
  424.     machine:
  425.  
  426.     grizu% ls -lad /usr/src
  427.     lrwxr-xr-x  1 root  wheel  29 Dec 30 15:33 \ (split by ed.)
  428.         /usr/src -> /tmp_mnt/mounts/src10/usr/src
  429.  
  430.     grizu% cat /etc/amd/master
  431.     /net            /etc/amd/net
  432.     /tmp_mnt/mounts /etc/amd/src
  433.     
  434.     grizu% cat /etc/amd/net
  435.     /defaults       type:=host;fs:=${autodir}/${rhost};rhost:=${key}
  436.     *               opts:=ro,soft,intr
  437.  
  438.     grizu% cat /etc/amd/src
  439.     /defaults       type:=host;fs:=${autodir}/${rhost};
  440.     src10           opts:=rw,soft,intr;rhost:=rfhu1001
  441.  
  442.     grizu% grep ^amd /etc/netstart
  443.     amd=YES
  444.     amd_dir=/tmp_mnt                # AMD's mount directory
  445.     amd_master=/etc/amd/master      # AMD 'master' map
  446.     
  447.     grizu% ls -la /tmp_mnt
  448.     total 9
  449.     drwxr-xr-x   5 root  wheel   512 Jan  3 12:09 .
  450.     drwxr-xr-x  26 root  wheel  1024 Jan  3 12:09 ..
  451.     dr-xr-xr-x   3 root  wheel   512 Nov 20 19:29 ftp.uni-regensburg.de
  452.     dr-xr-xr-x   2 root  wheel   512 Jan  4 10:43 mounts
  453.     dr-xr-xr-x   4 root  wheel   512 Dec 11 08:18 rfhu1001
  454.     
  455.     grizu% ls -la /tmp_mnt/mounts
  456.     total 3
  457.     dr-xr-xr-x  2 root  wheel  512 Jan  4 10:43 .
  458.     drwxr-xr-x  5 root  wheel  512 Jan  3 12:09 ..
  459.  
  460.     I guess that's all. rfhu1001 is the NFS server, grizu the client.
  461.     
  462.  
  463. 4.5.2    I am having trouble with my nameserver refusing to accept
  464.     'nslookup's from my SunOS machine after I installed the resolver
  465.     fix.  The exact error message is "*** Can't find server name for 
  466.     address 194.100.46.2: Query refused". Can you help?
  467.  
  468.       From the README file in the BIND distribution:
  469.  
  470.         Versions of NSLOOKUP up through BIND 4.8.3's used IQUERY to 
  471.         ask the local server for information about the server's own 
  472.         name.  I assume that this was done in a "what the heck, 
  473.         nothing uses these, how can we contrive a need?" sort of 
  474.         spirit.  I removed this code as of BIND 4.9's NSLOOKUP and 
  475.         had it use the standard gethostbyaddr() mechanisms (which 
  476.         depend on normal queries of PTR data).  Disabling INVQ and 
  477.         putting "options fake-iquery" in the boot file will cause 
  478.         IQUERY to be answered bogusly but in a way that old nslookup 
  479.         programs won't trip on.  INVQ is disabled by default in 
  480.         conf/options.h.
  481.  
  482.     So, your options are:
  483.  
  484.         -   Add "options fake-iquery" to named.boot and restart the 
  485.         server
  486.  
  487.         -   Replace your old, broken nslookup with the one in the 
  488.             4.9.3 BIND distribution.
  489.  
  490.         --  Enable INVQ in conf/options.h, then rebuild and re-install 
  491.         named.  This latter option isn't guaranteed to work.  If 
  492.         you point an old version of nslookup at a server, and the 
  493.         server either is not authoritative for a zone containing 
  494.         the A RR matching the address you are sending the query to, 
  495.         or if this A RR is not in it's cache, then nslookup will 
  496.         still fail even if the server has the INVQ option turned on.
  497.  
  498.  
  499. 4.5.3    Are there any alternatives to 'NIS' available for NetBSD, et al.?
  500.  
  501.     Yes, there is 'hesiod' which provides (according to Ted Lemon 
  502.     <mellon@fugue.com>i)another way of distributing databases like
  503.     /etc/passwd, /etc/services, /etc/groups, and so on.  It uses
  504.     DNS, which is (IMHO) slightly more robust and less easily
  505.     subverted than NIS, and doesn't claim to provide authentication
  506.     (authentication is Kerberos's job), so as part of a complete
  507.     system, I think it's a much better solution.  It certainly has 
  508.     a smaller installed base than NIS, though.
  509.  
  510.     There is also Kerberos IV, which provides similar functionality.
  511.     It is now fully integrated into the all of the *BSD systems and
  512.     works well for network wide authentication.
  513.  
  514.  
  515. 4.6    Adding new and removing old users.
  516. 4.6.1    Where can I FTP the 'adduser' program?
  517.  
  518.     There is one you can FTP (see the URL below).  You will need to
  519.     be able to use 'vipw' to make it work, but that shouldn't be a
  520.     big problem for most people.
  521.  
  522.         ftp://ftp.quick.com.au/pub/unix/adduser.sh
  523.  
  524.     The man page is there too..
  525.  
  526.         ftp://ftp.quick.com.au/pub/unix/adduser.8
  527.  
  528.  
  529. 4.6.2    Where can I get a 'rmuser' script?
  530.  
  531.     There is a Perl script called 'removeuser' which should be
  532.     available from one of the 'CPAN' sites.  As soon as someone has
  533.     a URL, let me know.
  534.     
  535.     There is also a FreeBSD 2.2 'rmuser' program which does
  536.     everything the remove program does, plus removes crontab and at
  537.     command entries.
  538.  
  539. -- 
  540. Dave Burgess                   Network Engineer - Nebraska On-Ramp, Inc.
  541. *bsd FAQ Maintainer / SysAdmin for the NetBSD system in my spare bedroom
  542. "Just because something is stupid doesn't mean there isn't someone that 
  543. doesn't want to do it...."
  544.