NEWUSER(8)                                             NEWUSER(8)

     NAME
          newuser - adding a new user

     SYNOPSIS
          /sys/lib/newuser

     DESCRIPTION
          To establish a new user on Plan 9, add the user to
          /adm/users by running the uname command on the console of
          the file server (see users(6)). Next, give the user a pass-
          word using auth/changeuser on the console of the authentica-
          tion server (see auth(8)). At this point, the user can boot-
          strap a terminal using the new name and password.  The ter-
          minal will only get as far as running rc, however, as no
          profile exists for the user.

          The rc(1) script /sys/lib/newuser sets up a sensible envi-
          ronment for a new user of Plan 9.  Once the terminal is run-
          ning rc, type

               /sys/lib/newuser

          to build the necessary directories in /usr/$user, create
          /mail/box/$user/mbox, /cron/$user/cron, a reasonable initial
          profile in /usr/$user/lib/profile and plumbing rules in
          /usr/$user/lib/plumbing (see plumber(4)). The script then
          runs the profile which, as its last step, brings up rio(1).
          At this point the user's environment is established and run-
          ning.  (There is no need to reboot.)  It may be prudent at
          this point to run passwd(1) to change the password, depend-
          ing on how the initial password was chosen.

          The profile built by /sys/lib/newuser looks like this:

               bind -a $home/bin/rc /bin
               bind -a $home/bin/$cputype /bin
               bind -c tmp /tmp
               font = /lib/font/bit/pelm/euro.9.font
               switch($service){
               case terminal
                    plumber
                    upas/fs
                    echo -n accelerated > '#m/mousectl'
                    echo -n 'res 3' > '#m/mousectl'
                    prompt=('term% ' '  ')
                    fn term%{ $* }
                    exec rio
               case cpu
                    if (test -e /mnt/term/mnt/wsys) {
                         # rio already running

     Page 1                       Plan 9            (printed 12/21/24)

     NEWUSER(8)                                             NEWUSER(8)

                         wsys = /mnt/term^`{cat /mnt/term/env/wsys}
                         bind -a /mnt/term/mnt/wsys /dev
                         echo -n $sysname > /dev/label
                    }
                    bind /mnt/term/dev/cons /dev/cons
                    bind /mnt/term/dev/consctl /dev/consctl
                    bind -a /mnt/term/dev /dev
                    prompt=('cpu% ' '   ')
                    fn cpu%{ $* }
                    upas/fs
                    news
                    if (! test -e /mnt/term/mnt/wsys) {
                         # cpu call from drawterm
                         font=/lib/font/bit/pelm/latin1.8.font
                         auth/factotum
                         plumber
                         exec rio
                    }
               case con
                    prompt=('cpu% ' '   ')
                    news
               }

          Sites may make changes to /sys/lib/newuser that reflect the
          properties of the local environment.

     SEE ALSO
          passwd(1), rio(1), namespace(4), users(6), auth(8).

     Page 2                       Plan 9            (printed 12/21/24)