dwww Home | Manual pages | Find package

RSTARTD(1)                  General Commands Manual                  RSTARTD(1)

NAME
       rstartd - a sample implementation of a Remote Start rsh helper

SYNOPSIS
       rstartd

       rstartd.real [-c configfilename]

DESCRIPTION
       Rstartd is an implementation of a Remote Start "helper" as defined in "A
       Flexible Remote Execution Protocol Based on rsh".

       This  document describes the peculiarities of rstartd and how it is con-
       figured.

OPTIONS
       -c configfilename
               This option  specifies  the  "global"  configuration  file  that
               rstartd  is  to  read.  Normally, rstartd is a shell script that
               invokes rstartd.real with the -c switch, allowing local configu-
               ration  of  the  location  of  the   configuration   file.    If
               rstartd.real   is  started  without  the  -c  option,  it  reads
               /etc/X11/rstart/config.

INSTALLATION
       It is critical to successful interoperation of the Remote Start protocol
       that rstartd be installed in a  directory  which  is  in  the  "default"
       search  path,  so  that default rsh requests and the ilk will be able to
       find it.

CONFIGURATION AND OPERATION
       Rstartd is by design highly configurable.  One would  like  things  like
       configuration  file locations to be fixed, so that users and administra-
       tors can find them without searching, but reality is that no two vendors
       will agree on where things should go, and nobody thinks the original lo-
       cation is "right".  Thus, rstartd allows one  to  relocate  all  of  its
       files and directories.

       Rstartd has a hierarchy of configuration files which are executed in or-
       der when a request is made.  They are:
       global config
       per-user ("local") config
       global per-context config
       per-user ("local") per-context config
       config from request
       As  you  might  guess from the presence of "config from request", all of
       the config files are in the format of an rstart  request.   Rstartd  de-
       fines a few additional keywords with the INTERNAL- prefix for specifying
       its configuration.

       Rstartd  starts  by  reading and executing the global config file.  This
       file will normally specify the  locations  of  the  other  configuration
       files and any systemwide defaults.

       Rstartd  will  then  read  the  user's  local  config file, default name
       $HOME/.rstart.

       Rstartd will then start interpreting the request.

       Presumably one of the first lines in the request will be a CONTEXT line.
       The context name is converted to lower case.

       Rstartd will read the global config file for that context, default  name
       /usr/lib/X11/rstart/contexts/<name>, if any.

       It  will then read the user's config file for that context, default name
       $HOME/.rstart.contexts/<name>, if any.

       (If neither of these exists, rstartd aborts with a Failure message.)

       Rstartd will finish interpreting the request, and  execute  the  program
       specified.

       This allows the system administrator and the user a large degree of con-
       trol  over  the  operation of rstartd.  The administrator has final say,
       because the global config file doesn't need to specify a per-user config
       file.  If it does, however, the user  can  override  anything  from  the
       global  file,  and can even completely replace the global context config
       files.

       The config files have a somewhat more flexible format than requests  do;
       they are allowed to contain blank lines and lines beginning with "#" are
       comments  and ignored.  (#s in the middle of lines are data, not comment
       markers.)

       Any commands run are provided a few useful pieces of information in  en-
       vironment variables.  The exact names are configurable, but the supplied
       defaults are:

       $RSTART_CONTEXT
       $RSTART_GLOBAL_CONTEXTS   the global contexts directory
       $RSTART_LOCAL_CONTEXTS    the local contexts directory
       $RSTART_GLOBAL_COMMANDS   the global generic commands directory
       $RSTART_LOCAL_COMMANDS    the local generic commands directory

       $RSTART_{GLOBAL,LOCAL}_CONTEXTS  should contain one special file, @List,
       which contains a list of the contexts in that directory  in  the  format
       specified  for  ListContexts.  The supplied version of ListContexts will
       cat both the global and local copies of @List.

       Generic commands are searched for in several places: (defaults)
       per-user per-context directory ($HOME/.rstart.commands/<context>)
       global per-context directory (/usr/lib/X11/rstart/commands/<context>)
       per-user all-contexts directory ($HOME/.rstart.commands)
       global all-contexts directory (/usr/lib/X11/rstart/commands)
       (Yes, this means you can't have an all-contexts generic command with the
       same name as a context.  It didn't seem like a big deal.)

       Each of these directories should have a file called @List that gives the
       names and descriptions of the commands in that directory in  the  format
       specified for ListGenericCommands.

CONFIGURATION KEYWORDS
       There are several "special" rstart keywords defined for rstartd configu-
       ration.  Unless otherwise specified, there are no defaults; related fea-
       tures are disabled in this case.

       INTERNAL-REGISTRIES name ...
               Gives a space-separated list of "MISC" registries that this sys-
               tem  understands.   (Registries other than this are accepted but
               generate a Warning.)

       INTERNAL-LOCAL-DEFAULT relative_filename
               Gives the name ($HOME relative) of the per-user config file.

       INTERNAL-GLOBAL-CONTEXTS absolute_directory_name
               Gives the name of the system-wide contexts directory.

       INTERNAL-LOCAL-CONTEXTS relative_directory_name
               Gives the name ($HOME relative) of the per-user contexts  direc-
               tory.

       INTERNAL-GLOBAL-COMMANDS absolute_directory_name
               Gives the name of the system-wide generic commands directory.

       INTERNAL-LOCAL-COMMANDS relative_directory_name
               Gives the name ($HOME relative) of the per-user generic commands
               directory.

       INTERNAL-VARIABLE-PREFIX prefix
               Gives  the  prefix  for  the configuration environment variables
               rstartd passes to its kids.

       INTERNAL-AUTH-PROGRAM authscheme program argv[0] argv[1] ...
               Specifies the program to run to set up  authentication  for  the
               specified  authentication  scheme.   "program argv[0] ..." gives
               the program to run and its arguments, in the same  form  as  the
               EXEC keyword.

       INTERNAL-AUTH-INPUT authscheme
               Specifies  the  data to be given to the authorization program as
               its standard input.  Each argument is passed as a  single  line.
               $n, where n is a number, is replaced by the n'th argument to the
               "AUTH authscheme arg1 arg2 ..." line.

       INTERNAL-PRINT arbitrary text
               Prints its arguments as a Debug message.  Mostly for rstartd de-
               bugging, but could be used to debug config files.

NOTES
       When  using  the  C  shell, or any other shell which runs a script every
       time the shell is started, the script may get run several times.  In the
       worst case, the script may get run three times:
       By rsh, to run rstartd
       By rstartd, to run the specified command
       By the command, eg xterm
       rstartd currently limits lines, both from config files and requests,  to
       BUFSIZ bytes.

       DETACH  is  implemented  by  redirecting  file descriptors 0,1, and 2 to
       /dev/null and forking before executing the program.

       CMD is implemented by invoking $SHELL (default /bin/sh)  with  "-c"  and
       the specified command as arguments.

       POSIX-UMASK is implemented in the obvious way.

       The  authorization  programs  are  run in the same context as the target
       program - same environment variables, path, etc.  Long term  this  might
       be a problem.

       In  the  X context, GENERIC-CMD Terminal runs xterm.  In the OpenWindows
       context, GENERIC-CMD Terminal runs cmdtool.

       In the X context, GENERIC-CMD LoadMonitor runs xload.  In  the  OpenWin-
       dows context, GENERIC-CMD LoadMonitor runs perfmeter.

       GENERIC-CMD ListContexts lists the contents of @List in both the system-
       wide  and  per-user  contexts  directories.  It is available in all con-
       texts.

       GENERIC-CMD ListGenericCommands lists the contents of @List in the  sys-
       tem-wide  and  per-user  commands directories, including the per-context
       subdirectories for the current context.  It is  available  in  all  con-
       texts.

       CONTEXT None is not implemented.

       CONTEXT Default is really dull.

       For installation ease, the "contexts" directory in the distribution con-
       tains  a file "@Aliases" which lists a context name and aliases for that
       context.  This file is used to make symlinks in the  contexts  and  com-
       mands directories.

       All MISC values are passed unmodified as environment variables.

       One  can  mistreat  rstartd in any number of ways, resulting in anything
       from stupid behavior to core dumps.  Other than  by  explicitly  running
       programs  I don't think it can write or delete any files, but there's no
       guarantee of that.  The important thing is that (a) it probably won't do
       anything REALLY stupid and (b) it runs with the user's  permissions,  so
       it can't do anything catastrophic.

       @List files need not be complete; contexts or commands which are dull or
       which  need not or should not be advertised need not be listed.  In par-
       ticular, per-user @List files should not list things which  are  in  the
       system-wide  @List files.  In the future, perhaps ListContexts and List-
       GenericCommands will automatically suppress lines from  the  system-wide
       files when there are per-user replacements for those lines.

       Error  handling  is  OK  to  weak.  In particular, no attempt is made to
       properly report errors on the exec  itself.   (Perversely,  exec  errors
       could  be  reliably  reported  when  detaching, but not when passing the
       stdin/out socket to the app.)

       If compiled with -DODT1_DISPLAY_HACK, rstartd will work around a bug  in
       SCO  ODT version 1.  (1.1?)  (The bug is that the X clients are all com-
       piled with a bad library that doesn't know how to look host names up us-
       ing DNS.  The fix is to look up a host name in $DISPLAY  and  substitute
       an  IP  address.)   This is a trivial example of an incompatibility that
       rstart can hide.

SEE ALSO
       rstart(1), rsh(1), A Flexible Remote Execution Protocol Based on rsh

AUTHOR
       Jordan Brown, Quarterdeck Office Systems

X Version 11                      rstart 1.0.6                       RSTARTD(1)

Generated by dwww version 1.16 on Sat Oct 3 09:31:44 CEST 2026.