diff etc/gnuserv.1 @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children 0132846995bd
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/gnuserv.1	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,242 @@
+.TH GNUSERV 1 "" "XEmacs Server"
+.UC 4
+.SH NAME
+gnuserv, gnuclient, gnuattach, gnudoit \- Server and Clients for XEmacs
+.SH SYNOPSIS
+.B gnuclient
+[-q] [[-h hostname] [-p port] [-r pathname]] [[+line] path] ...
+.br
+.B gnuattach
+[[-h hostname] [-p port] [-r pathname]] [[+line] path] ...
+.br
+.B gnudoit 
+[-q] [[-h hostname] [-p port]] [sexpr] ...
+.br
+.B gnuserv
+.SH DESCRIPTION
+
+.PP
+\fIgnuclient\fP allows the user to request a running XEmacs process to edit
+the named files or directories (typically in a newly created X frame).
+.PP
+\fIgnuattach\fP allows the user to request a running XEmacs process to edit
+the named files or directories in the current TTY connection.  One typical
+use for this is with a dialup connection to a machine on which an XEmacs
+process is currently running.
+.PP
+\fIgnudoit\fP allows the user to request a running XEmacs process to
+evaluate the given arguments inside a progn LISP form.
+.PP
+\fIgnuserv\fP is the server program that is set running by XEmacs to handle
+all incoming and outgoing requests. It is not usually invoked directly, but is
+started from XEmacs by loading the \fIgnuserv\fP package and evaluating 
+the LISP form (gnuserv-start). 
+.SH OPTIONS
+.TP 8
+.BI \-q
+This option informs both \fIgnuclient\fP and \fIgnudoit\fP to exit once
+connection has been made with the XEmacs process.  Normally \fIgnuclient\fP
+waits until all of the files on the command line have been finished with
+(their buffers killed) by the XEmacs process, and \fIgnudoit\fP normally
+waits around for evaluation of its arguments by the XEmacs process, and
+prints the results or error conditions.  This option does not exist for
+\fIgnuattach\fP because it does not make sense -- XEmacs and the shell
+would fight for input and would screw up each other's output.
+.TP 8
+.BI \-h " hostname"
+Used only with Internet-domain sockets, this option specifies the host
+machine which should be running \fIgnuserv\fP.  If this option is not
+specified then the value of the environment variable GNU_HOST is used
+if set.  If no hostname is specified, and the GNU_HOST variable is not
+set, an internet connection will not be attempted.  N\.B.: \fIgnuserv\fP
+does NOT allow internet connections unless the GNU_SECURE variable has
+been specified and points at a file listing all trusted hosts. (See
+SECURITY below.)
+
+.br
+Note that an internet address may be specified instead of a hostname which can
+speed up connections to the server by quite a bit, especially if the client
+machine is running YP.
+
+.br
+Note also that a hostname of \fBunix\fP can be used to specify that
+the connection to the server should use a Unix-domain socket (if
+supported) rather than an Internet-domain socket.
+.TP 8
+.BI \-p " port"
+Used only with Internet-domain sockets, this option specifies the
+service port used to communicate between server and clients.  If this
+option is not specified, then the value of the environment variable
+GNU_PORT is used, if set, otherwise a service called ``gnuserv'' is
+looked up in the services database.  Finally, if no other value can be
+found for the port, then a default port is used which is usually 21490
++ uid.
+.br
+Note that since \fIgnuserv\fP doesn't allow command-line options, the port for
+it will have to be specified via one of the alternative methods.
+.TP 8
+.BI \-r " pathname"
+Used only with Internet-domain sockets, the pathname argument may be
+needed to inform XEmacs how to reach the root directory of a remote
+machine.  \fIgnuclient\fP and \fIgnuattach\fP prepend this string to
+each path argument given.  For example, if you were trying to edit a
+file on a client machine called otter, whose root directory was
+accessible from the server machine via the path /net/otter, then this
+argument should be set to '/net/otter'.  If this option is omitted,
+then the value is taken from the environment variable GNU_NODE, if
+set, or the empty string otherwise.
+.TP 8
+.BI "path"
+This is the path of the file to be edited.  If the file is a directory, then
+the directory browsers dired or monkey are usually invoked instead.
+.TP 8
+.BI "sexpr"
+This is part of an XEmacs LISP expression to evaluate.  All the sexprs are
+concatenated together and wrapped in a progn form before sending to
+XEmacs.  If no sexpr is supplied on the  \fIgnudoit\fP commandline,
+\fIgnudoit\fP will read the sexpr to be evaluated from standard input.
+
+.PP
+.SH SETUP
+\fIgnuserv\fP is packaged standardly with recent versions of XEmacs.
+Therefore, you should be able to start the server simply by evaluating
+the XEmacs Lisp form (gnuserv-start), or equivalently by typing
+`M-x gnuserv-start'.
+.SH EXAMPLE
+.RS 4
+gnudoit -q '(mh-smail)'
+.br
+gnuclient -h cuckoo -r /ange@otter: /tmp/*
+.br
+gnuattach ../src/listproc.c
+.RE
+
+.SH SYSV IPC 
+SysV IPC is used to communicate between \fIgnuclient\fP,
+\fIgnuattach\fP, \fIgnudoit\fP and \fIgnuserv\fP if the symbol
+SYSV_IPC is defined at the top of gnuserv.h. This is incompatible with
+both Unix-domain and Internet-domain socket communication as described
+below. A file called /tmp/gsrv??? is created as a key for the message
+queue, and if removed will cause the communication between server and
+client to fail until the server is restarted.
+.SH UNIX-DOMAIN SOCKETS
+A Unix-domain socket is used to communicate between \fIgnuclient\fP,
+\fIgnuattach\fP, \fIgnudoit\fP and \fIgnuserv\fP if the symbol
+UNIX_DOMAIN_SOCKETS is defined at the top of gnuserv.h.  A file called
+/tmp/gsrvdir????/gsrv is created for communication and if deleted will
+cause communication between server and client to fail.  Only the user
+running gnuserv will be able to connect to the socket.
+.SH INTERNET-DOMAIN SOCKETS
+Internet-domain sockets are used to communicate between
+\fIgnuclient\fP, \fIgnuattach\fP, \fIgnudoit\fP and \fIgnuserv\fP if
+the symbol INTERNET_DOMAIN_SOCKETS is defined at the top of
+gnuserv.h. Both Internet-domain and Unix-domain sockets can be used at
+the same time. If a hostname is specified via -h or via the GNU_HOST
+environment variable, \fIgnudoit\fP, \fIgnuclient\fP and
+\fIgnuattach\fP establish connections using an internet domain
+socket. If not, a local connection is attempted via either a
+unix-domain socket or SYSV IPC."
+.SH SECURITY
+Using Internet-domain sockets, a more robust form of security is
+needed that wasn't necessary with either Unix-domain sockets or SysV
+IPC. Currently, two authentication protocols are supported to provide
+this: MIT-MAGIC-COOKIE-1 (based on the X11 xauth(1) program) and a
+simple host-based access control mechanism, hereafter called
+GNUSERV-1. The GNUSERV-1 protocol is always available, whereas support
+for MIT-MAGIC-COOKIE-1 may or may not have been enabled (via a #define
+at the top of gnuserv.h) at compile-time.
+.PP
+\fIgnuserv\fP, using GNUSERV-1, performs a limited form of access
+control at the machine level. By default no internet-domain socket is
+opened.  If the variable GNU_SECURE can be found in \fIgnuserv\fP's
+environment, and it names a readable filename, then this file is
+opened and assumed to be a list of hosts, one per line, from which the
+server will allow requests. Connections from any other host will be
+rejected. Even the machine on which \fIgnuserv\fP is running is not
+permitted to make connections via the internet socket unless its
+hostname is explicitly specified in this file.  Note that a host may
+be either a numeric IP address or a hostname, and that
+.I any
+user on an approved host may connect to your gnuserv and execute arbitrary
+elisp (e.g., delete all your files).
+If this file contains a lot of
+hostnames then the server may take quite a time to start up.
+.PP
+When the MIT-MAGIC-COOKIE-1 protocol is enabled, an internet socket
+\fIis\fP opened by default. \fIgnuserv\fP will accept a connection from
+any host, and will wait for a "magic cookie" (essentially, a password)
+to be presented by the client. If the client doesn't present the
+cookie, or if the cookie is wrong, the authentication of the client is
+considered to have failed. At this point. \fIgnuserv\fP falls back to
+the GNUSERV-1 protocol; If the client is calling from a host listed in
+the GNU_SECURE file, the connection will be accepted, otherwise it
+will be rejected. 
+.TP 4
+.I  Using MIT-MAGIC-COOKIE-1 authentication
+When the \fIgnuserv\fP server is started, it looks for a cookie
+defined for display 999 on the machine where it is running. If the
+cookie is found, it will be stored for use as the authentication
+cookie. These cookies are defined in an authorization file (usually
+~/.Xauthority) that is manipulated by the X11 xauth(1) program. For
+example, a machine "kali" which runs an emacs that invokes
+\fIgnuserv\fP should respond as follows (at the shell prompt) when set
+up correctly.
+.PP
+.RS 8
+kali% xauth list
+.br
+GS65.SP.CS.CMU.EDU:0  MIT-MAGIC-COOKIE-1  11223344
+.br
+KALI.FTM.CS.CMU.EDU:999  MIT-MAGIC-COOKIE-1  1234
+.RE
+.PP
+.RS 4
+In the above case, the authorization file defines two cookies. The
+second one, defined for screen 999 on the server machine, is used for
+gnuserv authentication. 
+.PP
+On the client machine's side, the authorization file must contain an
+identical line, specifying the 
+.I server's 
+cookie. In other words, on a machine "foobar" which wishes to connect
+to "kali,"  the `xauth list' output should contain the line:
+.PP
+.RS 4
+KALI.FTM.CS.CMU.EDU:999  MIT-MAGIC-COOKIE-1  1234
+.RE
+.PP
+For more information on authorization files, take a look at the
+xauth(1X11) man page, or invoke xauth interactively (without any
+arguments) and type "help" at the prompt. Remember that case in the
+name of the authorization protocol (i.e.`MIT-MAGIC-COOKIE-1') 
+.I is
+significant!
+.RE
+
+.SH FILES
+.PP
+.TP 8
+.B /tmp/gsrv???
+(SYSV_IPC only)
+.TP 8
+.B /tmp/gsrvdir???/gsrv
+(unix domain sockets only)
+.TP 8
+.B ~/.emacs
+XEmacs customization file, see xemacs(1).
+.SH SEE ALSO
+.PP
+.TP 8
+xauth(1X11), Xsecurity(1X11)
+.SH BUGS
+.PP 
+Ctrl-D's occurring in gnudoit input strings won't be handled correctly.
+.PP 
+NULs occurring in result strings don't get passed back to gnudoit properly.
+
+.SH AUTHOR.
+Andy Norman (ange@hplb.hpl.hp.com), based heavily upon
+etc/emacsclient.c, etc/server.c and lisp/server.el from the GNU Emacs
+18.52 distribution.  Various modifications from Bob Weiner (weiner@mot.com),
+Darrell Kindred (dkindred@cmu.edu), Arup Mukherjee (arup@cmu.edu), and
+Ben Wing (wing@666.com).