Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
CONSERVER(8)			    conserver			    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 ex-
     ternal 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 ac-
     tively 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 re-
     stricts 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   con-
     server.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 direc-
     tory  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  se-
     quences  given  by the user to console are passed to the server without in-
     terpretation.  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 fork-
	       ing 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 accept-
	       ing connections at startup and you want conserver to try  to  re-
	       connect 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 per-
	       formed 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  log-
     file).   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 authenti-
     cation  (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 sam-
     ple  self-signing	certificate making script contrib/maketestcerts for fur-
     ther clues.  To allow non-encrypted client connections (in addition to  en-
     crypted 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 spe-
     cial 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 process-
		 ing occurs.

     -atype	 Set the default access type for incoming connections from  con-
		 sole  clients:  `r' for refused (the default), `a' for allowed,
		 or `t' for trusted.  This applies to hosts for which no  match-
		 ing 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, con-
		 server 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 de-
		 fault 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 run-
		 ning 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  ad-
		 dress	(like  `127.0.0.1')  instead of all interfaces.  The de-
		 fault is to bind to all addresses.  However, if --with-uds  was
		 used to enable Unix domain sockets for client/server communica-
		 tion,	this  points  conserver to the directory where it should
		 store the sockets.  The default master  directory  (``/tmp/con-
		 server'')  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	configu-
		 ration  file  and exit with a non-zero value if there is an er-
		 ror.  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 in-
		 ternally.

		 name	  The name of the console.

		 master   The hostname of the master conserver host for the con-
			  sole.

		 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 val-
			  ues 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  con-
		 server.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  utili-
		 ties 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  be-
     fore connecting to a console.  The second style is the character-based, es-
     cape-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 com-
     mands).  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   con-
			      server.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)

conserver-8.3.0 		   2026/02/02			    CONSERVER(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=conserver&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help