glenda.party
term% ls -F
term% pwd
$home/manuals/9front/4/keyfs
term% cat index.txt
KEYFS(4)                   Kernel Interfaces Manual                   KEYFS(4)

NAME
       keyfs, warning - authentication database files

SYNOPSIS
       auth/keyfs [ -p ] [ -w [np] ] [ -mmntpt ] [ keyfile ]

       auth/warning [ -n ] [ -p ]

DESCRIPTION
       Keyfs  serves a two-level file tree for manipulating authentication in‐
       formation.  It runs on the machine providing authentication service for
       the local Plan 9 network,  which  may  be  a  dedicated  authentication
       server or a CPU server.  The programs described in auth(8) use keyfs as
       their interface to the authentication database.

       Keyfs reads and decrypts file keyfile (default /adm/keys) using the DES
       key,  which is by default read from #r/nvram (see rtc(3)).  With option
       -p, keyfs prompts for a password from which the key is  derived.   Key‐
       file holds a 41-byte record for each user in the database.  Each record
       is  encrypted separately and contains the user's name, DES key, status,
       host status, and expiration date.  The name is  a  null-terminated  UTF
       string NAMELEN bytes long.  The status is a byte containing binary 0 if
       the  account  is  enabled,  1 if it is disabled.  Host status is a byte
       containing binary 1 if the user is a host, 0 otherwise.  The expiration
       date is four-byte little-endian integer which represents  the  time  in
       seconds since the epoch (see date(1)) at which the account will expire.
       If  any  changes  are  made to the database that affect the information
       stored in keyfile, a new version of the file is written.

       There are two authentication databases, one for Plan  9  user  informa‐
       tion,  and  one for SecureNet user information.  A user need not be in‐
       stalled in both databases but must be installed in the Plan 9  database
       to connect to a Plan 9 server.

       Keyfs  serves  an interpretation of the keyfile in the file tree rooted
       at mntpt (default /mnt/keys).  Each user user in keyfile is represented
       as the directory mntpt/user.

       Making a new directory in mntpt creates a new user entry in  the  data‐
       base.   Removing  a  directory  removes the user entry, and renaming it
       changes the name in the entry.  Such changes are reflected  immediately
       in  keyfile.  Keyfs does not allow duplicate names when creating or re‐
       naming user entries.

       All files in the user directories except for key  contain  UTF  strings
       with a trailing newline when read, and should be written as UTF strings
       with  or  without  a trailing newline.  Key contains the DESKEYLEN-byte
       encryption key for the user.

       The following files appear in the user directories.

       key    The authentication key for the user.  If the user's  account  is
              disabled  or expired, reading this file returns an error.  Writ‐
              ing key changes the key in the database.

       log    The number of consecutive failed authentication attempts for the
              user.  Writing the string bad increments  this  number;  writing
              good  resets it to 0.  This number is not stored in keyfile, and
              is initialized to 0 when keyfs starts.  When the number  reaches
              a  multiple  of  ten, keyfs temporarily disables the account for
              that many seconds.  Reads from the key or  secret  files  during
              this time return the error ‘‘user in purgatory.''

       status The current status of the account, either ok or disabled.  Writ‐
              ing ok enables the account; writing disabled disables it.

       expire The expiration time for the account.  When read, it contains ei‐
              ther  the  string  never  or the time in seconds since the epoch
              that the account will expire.  When written with strings of  the
              same form, it sets the expiration date for the user.  If the ex‐
              piration  date  is reached, the account is not disabled, but key
              cannot be read without an error.

       If the -w option is on, keyfs runs the command warning  once  every  24
       hours  to  mail  people about expiring keys.  Warnings are sent 14 days
       and 7 days prior to expiration.  The argument to -w, either p or n,  is
       passed  to  warning to restrict the warnings to the Plan 9 or SecureNet
       database.  The default for keyfs is not to call warning at  all;  warn‐
       ing's  own  default  is to warn about both.  The files /adm/netkeys.who
       and /adm/keys.who are used to find the mail addresses to send to.   The
       first  word  on each line identifies a user.  Any subsequent strings on
       the line delimited '<' and '>' are considered mail  addresses  to  send
       warnings  to.   If multiple lines match a user, the last in the file is
       used.  Changeuser (see auth(8)) adds lines to these files.

FILES
       /adm/keys
              Encrypted key file for the Plan 9 database.

       /adm/netkeys
              Encrypted key file for the SecureNet database.

       /adm/keys.who
              List of users in the Plan 9 database.

       /adm/netkeys.who
              List of users in  the SecureNet database.

       #r/nvram
              The non-volatile RAM on the server, which holds the key used  to
              decrypt key files.

SOURCE
       /sys/src/cmd/auth/keyfs.c
       /sys/src/cmd/auth/warning.c

SEE ALSO
       authsrv(6), namespace(6), auth(8)

                                                                      KEYFS(4)