conserver(8)

NAME

   conserver - console server daemon

SYNOPSIS

   conserver  [-7dDEFhinoRSuvV]  [-a  type] [-m max] [-M master] [-p port]
   [-b port] [-c cred] [-C config] [-P passwd] [-L logfile] [-O  min]  [-U
   logfile]

DESCRIPTION

   Conserver  is  the daemon that manages remote access to system consoles
   by multiple users via the console(1) client  program  and  (optionally)
   log  the  console  output.  It can connect to consoles via local serial
   ports, Unix domain sockets, TCP sockets (for terminal servers  and  the
   like), or any external program.

   When  started,  conserver reads the conserver.cf(5) file for details of
   each console.  The console type, logging  options,  serial  or  network
   parameters,  and  user  access levels are just a few of the things that
   can be specified.  Command-line  options  are  then  applied,  possibly
   overriding  conserver.cf(5)  settings.   Conserver categorizes consoles
   into two types: those it should actively manage, and  those  it  should
   just  know about, so it can refer clients to other conserver instances.
   If the master value of a console matches the hostname or ip address  of
   the   local  machine,  conserver  will  actively  manage  the  console.
   Otherwise, it's considered  a  ``remote''  console  and  managed  by  a
   different  server.   Conserver forks a child for each group of consoles
   it must manage and assigns each process a port  number  to  listen  on.
   The  maximum  number  of  consoles managed by each child process is set
   using the -m option.  The console(1) client program  communicates  with
   the  master  console  server  process  to find the port (and host, in a
   multi-server  configuration)  on  which  the   appropriate   child   is
   listening.   Conserver  restricts connections from clients based on the
   host access section of its conserver.cf(5) file, restricts users  based
   on   the   console  access  lists  of  the  conserver.cf(5)  file,  and
   authenticates users against its  conserver.passwd(5)  file.   Conserver
   can also restrict clients using the tcp-wrappers package (enabled using
   --with-libwrap).  This authentication is  done  before  consulting  the
   conserver.cf(5) access list.

   When  Unix  domain  sockets  are  used  between  the  client and server
   (enabled using --with-uds),  authentication  checks  are  done  on  the
   hardcoded  address ``127.0.0.1''.  Automatic client redirection is also
   disabled (as if the  -R  option  was  used)  since  the  client  cannot
   communicate  with  remote  servers.   The  directory  used  to hold the
   sockets is checked to make sure it's empty when the server starts.  The
   server  will not remove any files in the directory itself, just in case
   the directory is accidentally  specified  as  ``/etc''  or  some  other
   critical  location.   The  server  will  do  its best to remove all the
   sockets when it shuts down, but  it  could  stop  ungracefully  (crash,
   ``kill  -9'',  etc) and leave files behind.  It would then be up to the
   admin (or a creative startup script) to clean up the  directory  before
   the server will start again.

   Conserver  completely controls any connection to a console.  All escape
   sequences given by the user to console are passed to the server without
   interpretation.    The  server  recognizes  and  processes  all  escape
   sequences.

   The conserver parent  process  will  automatically  respawn  any  child
   process  that dies.  The following signals are propagated by the parent
   process to its children.

   SIGTERM   Close all connections and exit.

   SIGHUP    Reread the configuration file.  New consoles are  managed  by
             forking   off  new  children,  deleted  consoles  (and  their
             clients) are dropped, and changes to consoles  are  done  "in
             place",  resetting the console port (bringing it down and up)
             only when necessary.  The console name is used  to  determine
             when  consoles  have been added/removed/changed.  All actions
             performed by SIGUSR2 are also performed.

   SIGUSR1   Try to connect to any consoles marked as down.  This can come
             in  handy  if you had a terminal server (or more) that wasn't
             accepting connections at startup and you  want  conserver  to
             try to reconnect to all those downed ports.

   SIGUSR2   Close  and reopen all console logfiles and, if in daemon mode
             (-d option), the error logfile  (see  the  -L  option).   All
             actions performed by SIGUSR1 are also performed.

   Consoles   which  have  no  current  client  connection  might  produce
   important error messages.  With the -u option, these ``unloved'' errors
   are  labeled  with  a  machine name and output on stdout (or, in daemon
   mode, to the logfile).  This allows a live operator or an automated log
   scanner  to  find  otherwise  unseen  errors  by  watching  in a single
   location.

   Conserver must be run as root if it is to bind to a port under 1024  or
   if  it  must  read protected password files (like shadow passwords) for
   authentication (see conserver.passwd(5)).  Otherwise, it may be run  by
   any user, with -p used to specify a port above 1024.

   If  encryption has been built into the code (--with-openssl), encrypted
   client connections (without certificate exchanges) happen  by  default.
   To  add  certificate  exchanges,  use the -c option with the client and
   server.  For authentication of the certificates to  work,  the  signing
   certificate  must  be  properly trusted, which usually means the public
   portion is in OPENSSL_ROOT/ssl/certs (on both  the  client  and  server
   sides).    See   the  sample  self-signing  certificate  making  script
   contrib/maketestcerts for further clues.  To allow non-encrypted client
   connections  (in  addition to encrypted client connections), use the -E
   option.

OPTIONS

   Options may be given as separate arguments (e.g., -n -d)  or  clustered
   (e.g.,  -nd).  Options and their arguments may be separated by optional
   white space.  Option arguments containing spaces  or  other  characters
   special to the shell must be quoted.

   -7          Strip  the  high bit off of all data received, whether from
               the console client or from the console device,  before  any
               processing occurs.

   -atype      Set  the  default access type for incoming connections from
               console clients: `r' for refused  (the  default),  `a'  for
               allowed,  or  `t'  for  trusted.  This applies to hosts for
               which no matching entry is found in the access  section  of
               conserver.cf(5).

   -bport      Set  the  base  port for children to listen on.  Each child
               starts looking for free ports at port and  working  upward,
               trying a maximum number of ports equal to twice the maximum
               number of groups.  If no free ports are available  in  that
               range,  conserver  exits.   By  default, conserver lets the
               operating system choose a free port.

   -ccred      Load an SSL certificate and key from the PEM  encoded  file
               cred.

   -Cconfig    Read  configuration  information from the file config.  The
               default config may be changed at  compile  time  using  the
               --with-cffile option.

   -d          Become a daemon.  Disconnects from the controlling terminal
               and sends all output (including any debug  output)  to  the
               logfile (see -L).

   -D          Enable  debugging  output,  sent  to  stderr.   Multiple -D
               options increases debug output.

   -E          If  encryption  has  been  built  into  the  code  (--with-
               openssl),  encrypted  client connections are a requirement.
               This  option  allows  non-encrypted  clients  (as  well  as
               encrypted clients) to connect to consoles.

   -F          Do  not  automatically  reinitialize  failed  (unexpectedly
               closed) consoles.  If the console is a program (`|' syntax)
               and  it  closes  with  a  zero  exit status, the console is
               reinitialized regardless  of  this  option.   Without  this
               option,  a  console  is  immediately  reopened, and if that
               fails, retried every minute until successful.  This  option
               has no effect on the -o and -O options.

   -h          Output a brief help message.

   -i          Initiate console connections on demand (and close them when
               not used).

   -Llogfile   Log errors and  informational  messages  to  logfile  after
               startup  in  daemon  mode (-d).  This option does not apply
               when not running in daemon mode.  The default  logfile  may
               be changed at compile time using the --with-logfile option.

   -mmax       Set  the maximum consoles managed per process.  The default
               max may be changed at compile time using the --with-maxmemb
               option.

   -Mmaster    Normally,  this allows conserver to bind to a particular IP
               address (like `127.0.0.1') instead of all interfaces.   The
               default  is  to bind to all addresses.  However, if --with-
               uds  was  used  to   enable   Unix   domain   sockets   for
               client/server  communication,  this points conserver to the
               directory where it should store the sockets.   The  default
               master  directory  (``/tmp/conserver'')  may  be changed at
               compile time using the --with-uds option.

   -n          Obsolete (now a no-op); see -u.

   -o          Normally, a client connecting to a ``downed'' console  does
               just   that.    Using   this   option,   the   server  will
               automatically attempt to open (``bring  up'')  the  console
               when the client connects.

   -Omin       Enable  periodic  attempts  (every  min  minutes)  to  open
               (``bring up'') all downed consoles (similar  to  sending  a
               SIGUSR1).   Without  this  option,  or  if  min is zero, no
               periodic attempts occur.

   -pport      Set the TCP port for the master process to listen on.  This
               may be either a port number or a service name.  The default
               port, ``conserver'' (typically  782),  may  be  changed  at
               compile  time using the --with-port option.  If the --with-
               uds option was used, this option is ignored.

   -Ppasswd    Read the table  of  authorized  user  data  from  the  file
               passwd.   The default passwd may be changed at compile time
               using the --with-pwdfile option.

   -R          Disable automatic client  redirection  to  other  conserver
               hosts.   This  means  informational commands like -w and -i
               will only show the status of the local conserver  host  and
               attempts  to  connect  to remote consoles will result in an
               informative message to the user.

   -S          Do not run the server,  just  perform  a  syntax  check  of
               configuration  file and exit with a non-zero value if there
               is an error.  Using more than one -S will  cause  conserver
               to  output  various  information  about  each  console in 5
               colon-separated  fields,  enclosed  in  curly-braces.   The
               philosophy  behind  the output is to provide information to
               allow external detection of multiple  consoles  access  the
               same  physical  port.   Since  this  is highly environment-
               specific, conserver cannot do the check internally.

               name     The name of the console.

               master   The hostname of the master conserver host for  the
                        console.

               aliases  The console aliases in a comma-separated list.

               type     The  type  of console.  Values will be a `/' for a
                        local device, `|' for a command, `!' for a  remote
                        port,  `%' for a Unix domain socket, and `#' for a
                        noop console.

               details  Multiple values are comma-separated and depend  on
                        the  type of the console.  Local devices will have
                        the  values  of   the   device   file   and   baud
                        rate/parity.  Commands will have string to invoke.
                        Remote ports will have the values  of  the  remote
                        hostname  and  port  number.   Unix domain sockets
                        will have the path to the socket.   Noop  consoles
                        will have nothing.

   -u          Send  unloved  console output to conserver's stdout (which,
               in daemon  mode,  is  redirected  to  the  logfile).   This
               applies  to  all  consoles  to  which  no user is attached,
               independent of whether logging of  individual  consoles  is
               enabled via conserver.cf entries.

   -Ulogfile   Copy  all  console  data  to  the ``unified'' logfile.  The
               output is the same as the -u output, but all consoles,  not
               just those without a user, are logged.  Each line of output
               is prefixed with the console name.  If a user  is  attached
               read/write, a `*' is appended to the console name, to allow
               log watching utilites to ignore  potential  user-introduced
               alarms.

   -v          Echo the configuration as it is being read (be verbose).

   -V          Output  the  version  number  and settings of the conserver
               program and then exit.

PROTOCOL

   The protocol used to interact with the conserver daemon has  two  basic
   styles.   The  first style is the initial line-based mode, which occurs
   before connecting to a console.  The second  style  is  the  character-
   based, escape-sequence mode, while connected to a console.

   The initial line-based mode begins the same for both the master process
   and its children.  Upon a successful (non-rejected) client  connection,
   an  ``ok''  is  sent.   The client then issues a command and the server
   responds to it with a result string (``ok'' being the sign  of  success
   for  most  commands).  The commands available are ``help'', ``ssl'' (if
   SSL was built into the  code),  ``login'',  and  ``exit''.   Using  the
   ``login''  command,  the  client  authenticates and gains access to the
   extended command set.   This  is  where  the  master  process  and  its
   children  differ.  The master process gives the client access to global
   commands, and the child provides  commands  for  interacting  with  the
   consoles it manages.  The ``help'' command, in both cases, will provide
   a complete list of commands and a short description of what they do.

   The second, character-based,  style  of  interaction  occurs  when  the
   client  issues the ``call'' command with a child process.  This command
   connects the client to a console and, at that point, relays all traffic
   between  the  client  and  the console.  There is no more command-based
   interaction between the client and the server, any interaction with the
   server is done with the default escape sequence.

   This   is,   by   no  means,  a  complete  description  of  the  entire
   client/server interaction.  It is,  however,  a  brief  explanation  in
   order  to  give a idea of what the program does.  See the PROTOCOL file
   in the distribution for further details.

FILES

   The following default file locations may be overridden at compile  time
   or  by  the  command-line options described above.  Run conserver -V to
   see the defaults set at compile time.

   /etc/conserver.cf        description  of  console  terminal  lines  and
                            client     host     access     levels;     see
                            conserver.cf(5).
   /etc/conserver.passwd    users  allowed   to   access   consoles;   see
                            conserver.passwd(5).
   /var/run/conserver.pid   the master conserver process ID
   /var/log/conserver       log of errors and informational messages
   /tmp/conserver           directory  to  hold  Unix  domain  sockets (if
                            enabled)

   Additionally, output from individual consoles may be logged to separate
   files specified in conserver.cf(5).

BUGS

   I'm  sure there are bugs, I just don't know where they are.  Please let
   me know if you find any.

AUTHORS

   Thomas A. Fine, Ohio State Computer Science
   Kevin S Braunsdorf, Purdue University Computing Center
   Bryan Stansell, conserver.com

SEE ALSO

   console(1), conserver.cf(5), conserver.passwd(5)



Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.


Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.


Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.