Imported Upstream version 1.8.7
[debian/sudo] / doc / sudo_plugin.cat
index 11e9dd733dfc1634526425f629453e6bf5ab9f40..193da0e8b46cdc0b551f80504159451aa3b2c20b 100644 (file)
@@ -5,11 +5,10 @@ N\bNA\bAM\bME\bE
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      Starting with version 1.8, s\bsu\bud\bdo\bo supports a plugin API for policy and
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      Starting with version 1.8, s\bsu\bud\bdo\bo supports a plugin API for policy and
-     session logging.  By default, the _\bs_\bu_\bd_\bo_\be_\br_\bs policy plugin and an associated
+     session logging.  By default, the s\bsu\bud\bdo\boe\ber\brs\bs policy plugin and an associated
      I/O logging plugin are used.  Via the plugin API, s\bsu\bud\bdo\bo can be configured
      to use alternate policy and/or I/O logging plugins provided by third
      I/O logging plugin are used.  Via the plugin API, s\bsu\bud\bdo\bo can be configured
      to use alternate policy and/or I/O logging plugins provided by third
-     parties.  The plugins to be used are specified via the _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf
-     file.
+     parties.  The plugins to be used are specified in the sudo.conf(4) file.
 
      The API is versioned with a major and minor number.  The minor version
      number is incremented when additions are made.  The major number is
 
      The API is versioned with a major and minor number.  The minor version
      number is incremented when additions are made.  The major number is
@@ -18,50 +17,11 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      The plugin API is defined by the sudo_plugin.h header file.
 
 
      The plugin API is defined by the sudo_plugin.h header file.
 
-   T\bTh\bhe\be s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf f\bfi\bil\ble\be
-     The _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf file contains plugin configuration directives.  The
-     primary keyword is the Plugin directive, which causes a plugin to be
-     loaded.
-
-     A Plugin line consists of the Plugin keyword, followed by the _\bs_\by_\bm_\bb_\bo_\bl_\b__\bn_\ba_\bm_\be
-     and the _\bp_\ba_\bt_\bh to the shared object containing the plugin.  The _\bs_\by_\bm_\bb_\bo_\bl_\b__\bn_\ba_\bm_\be
-     is the name of the struct policy_plugin or struct io_plugin in the plugin
-     shared object.  The _\bp_\ba_\bt_\bh may be fully qualified or relative.  If not
-     fully qualified it is relative to the _\b/_\bu_\bs_\br_\b/_\bl_\bo_\bc_\ba_\bl_\b/_\bl_\bi_\bb_\be_\bx_\be_\bc directory.  Any
-     additional parameters after the _\bp_\ba_\bt_\bh are passed as options to the
-     plugin's o\bop\bpe\ben\bn() function.  Lines that don't begin with Plugin, Path,
-     Debug or Set are silently ignored.
-
-     The same shared object may contain multiple plugins, each with a
-     different symbol name.  The shared object file must be owned by uid 0 and
-     only writable by its owner.  Because of ambiguities that arise from
-     composite policies, only a single policy plugin may be specified.  This
-     limitation does not apply to I/O plugins.
-
-     #
-     # Default /etc/sudo.conf file
-     #
-     # Format:
-     #   Plugin plugin_name plugin_path plugin_options ...
-     #   Path askpass /path/to/askpass
-     #   Path noexec /path/to/sudo_noexec.so
-     #   Debug sudo /var/log/sudo_debug all@warn
-     #   Set disable_coredump true
-     #
-     # The plugin_path is relative to /usr/local/libexec unless
-     #   fully qualified.
-     # The plugin_name corresponds to a global symbol in the plugin
-     #   that contains the plugin interface structure.
-     # The plugin_options are optional.
-     #
-     Plugin sudoers_policy sudoers.so
-     Plugin sudoers_io sudoers.so
-
    P\bPo\bol\bli\bic\bcy\by p\bpl\blu\bug\bgi\bin\bn A\bAP\bPI\bI
      A policy plugin must declare and populate a policy_plugin struct in the
      global scope.  This structure contains pointers to the functions that
      implement the s\bsu\bud\bdo\bo policy checks.  The name of the symbol should be
    P\bPo\bol\bli\bic\bcy\by p\bpl\blu\bug\bgi\bin\bn A\bAP\bPI\bI
      A policy plugin must declare and populate a policy_plugin struct in the
      global scope.  This structure contains pointers to the functions that
      implement the s\bsu\bud\bdo\bo policy checks.  The name of the symbol should be
-     specified in _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf along with a path to the plugin so that s\bsu\bud\bdo\bo
+     specified in sudo.conf(4) along with a path to the plugin so that s\bsu\bud\bdo\bo
      can load it.
 
      struct policy_plugin {
      can load it.
 
      struct policy_plugin {
@@ -141,92 +101,109 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                  equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
                  itself but the _\bv_\ba_\bl_\bu_\be might.
 
                  equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
                  itself but the _\bv_\ba_\bl_\bu_\be might.
 
+                 bsdauth_type=string
+                       Authentication type, if specified by the -\b-a\ba flag, to
+                       use on systems where BSD authentication is supported.
+
+                 closefrom=number
+                       If specified, the user has requested via the -\b-C\bC flag
+                       that s\bsu\bud\bdo\bo close all files descriptors with a value of
+                       _\bn_\bu_\bm_\bb_\be_\br or higher.  The plugin may optionally pass this,
+                       or another value, back in the _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b__\bi_\bn_\bf_\bo list.
+
                  debug_flags=string
                        A comma-separated list of debug flags that correspond
                  debug_flags=string
                        A comma-separated list of debug flags that correspond
-                       to s\bsu\bud\bdo\bo's Debug entry in _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf, if there is
-                       one.  The flags are passed to the plugin as they appear
-                       in _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf.  The syntax used by s\bsu\bud\bdo\bo and the
-                       _\bs_\bu_\bd_\bo_\be_\br_\bs plugin is _\bs_\bu_\bb_\bs_\by_\bs_\bt_\be_\bm@_\bp_\br_\bi_\bo_\br_\bi_\bt_\by but the plugin is
-                       free to use a different format so long as it does not
-                       include a comma (`,').
-
-                       For reference, the priorities supported by the s\bsu\bud\bdo\bo
-                       front end and _\bs_\bu_\bd_\bo_\be_\br_\bs are: _\bc_\br_\bi_\bt, _\be_\br_\br, _\bw_\ba_\br_\bn, _\bn_\bo_\bt_\bi_\bc_\be,
-                       _\bd_\bi_\ba_\bg, _\bi_\bn_\bf_\bo, _\bt_\br_\ba_\bc_\be and _\bd_\be_\bb_\bu_\bg.
-
-                       The following subsystems are defined: _\bm_\ba_\bi_\bn, _\bm_\be_\bm_\bo_\br_\by,
-                       _\ba_\br_\bg_\bs, _\be_\bx_\be_\bc, _\bp_\bt_\by, _\bu_\bt_\bm_\bp, _\bc_\bo_\bn_\bv, _\bp_\bc_\bo_\bm_\bm, _\bu_\bt_\bi_\bl, _\bl_\bi_\bs_\bt, _\bn_\be_\bt_\bi_\bf,
-                       _\ba_\bu_\bd_\bi_\bt, _\be_\bd_\bi_\bt, _\bs_\be_\bl_\bi_\bn_\bu_\bx, _\bl_\bd_\ba_\bp, _\bm_\ba_\bt_\bc_\bh, _\bp_\ba_\br_\bs_\be_\br, _\ba_\bl_\bi_\ba_\bs,
-                       _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bs, _\ba_\bu_\bt_\bh, _\be_\bn_\bv, _\bl_\bo_\bg_\bg_\bi_\bn_\bg, _\bn_\bs_\bs, _\br_\bb_\bt_\br_\be_\be, _\bp_\be_\br_\bm_\bs,
-                       _\bp_\bl_\bu_\bg_\bi_\bn.  The subsystem _\ba_\bl_\bl includes every subsystem.
-
-                       There is not currently a way to specify a set of debug
-                       flags specific to the plugin--the flags are shared by
-                       s\bsu\bud\bdo\bo and the plugin.
+                       to s\bsu\bud\bdo\bo's Debug entry in sudo.conf(4), if there is one.
+                       The flags are passed to the plugin as they appear in
+                       sudo.conf(4).  The syntax used by s\bsu\bud\bdo\bo and the s\bsu\bud\bdo\boe\ber\brs\bs
+                       plugin is _\bs_\bu_\bb_\bs_\by_\bs_\bt_\be_\bm@_\bp_\br_\bi_\bo_\br_\bi_\bt_\by but the plugin is free to
+                       use a different format so long as it does not include a
+                       comma (`,').  There is not currently a way to specify a
+                       set of debug flags specific to the plugin--the flags
+                       are shared by s\bsu\bud\bdo\bo and the plugin.
 
                  debug_level=number
                        This setting has been deprecated in favor of
                        _\bd_\be_\bb_\bu_\bg_\b__\bf_\bl_\ba_\bg_\bs.
 
 
                  debug_level=number
                        This setting has been deprecated in favor of
                        _\bd_\be_\bb_\bu_\bg_\b__\bf_\bl_\ba_\bg_\bs.
 
-                 runas_user=string
-                       The user name or uid to to run the command as, if
-                       specified via the -\b-u\bu flag.
+                 ignore_ticket=bool
+                       Set to true if the user specified the -\b-k\bk flag along
+                       with a command, indicating that the user wishes to
+                       ignore any cached authentication credentials.
+                       _\bi_\bm_\bp_\bl_\bi_\be_\bd_\b__\bs_\bh_\be_\bl_\bl to true.  This allows s\bsu\bud\bdo\bo with no
+                       arguments to be used similarly to su(1).  If the plugin
+                       does not to support this usage, it may return a value
+                       of -2 from the c\bch\bhe\bec\bck\bk_\b_p\bpo\bol\bli\bic\bcy\by() function, which will
+                       cause s\bsu\bud\bdo\bo to print a usage message and exit.
 
 
-                 runas_group=string
-                       The group name or gid to to run the command as, if
-                       specified via the -\b-g\bg flag.
+                 implied_shell=bool
+                       If the user does not specify a program on the command
+                       line, s\bsu\bud\bdo\bo will pass the plugin the path to the user's
+                       shell and set
 
 
-                 prompt=string
-                       The prompt to use when requesting a password, if
-                       specified via the -\b-p\bp flag.
+                 login_class=string
+                       BSD login class to use when setting resource limits and
+                       nice value, if specified by the -\b-c\bc flag.
 
 
-                 set_home=bool
-                       Set to true if the user specified the -\b-H\bH flag.  If
-                       true, set the HOME environment variable to the target
-                       user's home directory.
+                 login_shell=bool
+                       Set to true if the user specified the -\b-i\bi flag,
+                       indicating that the user wishes to run a login shell.
+
+                 max_groups=int
+                       The maximum number of groups a user may belong to.
+                       This will only be present if there is a corresponding
+                       setting in sudo.conf(4).
+
+                 network_addrs=list
+                       A space-separated list of IP network addresses and
+                       netmasks in the form ``addr/netmask'', e.g.
+                       ``192.168.1.2/255.255.255.0''.  The address and netmask
+                       pairs may be either IPv4 or IPv6, depending on what the
+                       operating system supports.  If the address contains a
+                       colon (`:'), it is an IPv6 address, else it is IPv4.
+
+                 noninteractive=bool
+                       Set to true if the user specified the -\b-n\bn flag,
+                       indicating that s\bsu\bud\bdo\bo should operate in non-interactive
+                       mode.  The plugin may reject a command run in non-
+                       interactive mode if user interaction is required.
+
+                 plugin_dir=string
+                       The default plugin directory used by the s\bsu\bud\bdo\bo front
+                       end.  This is the default directory set at compile time
+                       and may not correspond to the directory the running
+                       plugin was loaded from.  It may be used by a plugin to
+                       locate support files.
 
                  preserve_environment=bool
                        Set to true if the user specified the -\b-E\bE flag,
                        indicating that the user wishes to preserve the
                        environment.
 
 
                  preserve_environment=bool
                        Set to true if the user specified the -\b-E\bE flag,
                        indicating that the user wishes to preserve the
                        environment.
 
-                 run_shell=bool
-                       Set to true if the user specified the -\b-s\bs flag,
-                       indicating that the user wishes to run a shell.
-
-                 login_shell=bool
-                       Set to true if the user specified the -\b-i\bi flag,
-                       indicating that the user wishes to run a login shell.
-
-                 implied_shell=bool
-                       If the user does not specify a program on the command
-                       line, s\bsu\bud\bdo\bo will pass the plugin the path to the user's
-                       shell and set _\bi_\bm_\bp_\bl_\bi_\be_\bd_\b__\bs_\bh_\be_\bl_\bl to true.  This allows s\bsu\bud\bdo\bo
-                       with no arguments to be used similarly to su(1).  If
-                       the plugin does not to support this usage, it may
-                       return a value of -2 from the c\bch\bhe\bec\bck\bk_\b_p\bpo\bol\bli\bic\bcy\by() function,
-                       which will cause s\bsu\bud\bdo\bo to print a usage message and
-                       exit.
-
                  preserve_groups=bool
                        Set to true if the user specified the -\b-P\bP flag,
                        indicating that the user wishes to preserve the group
                        vector instead of setting it based on the runas user.
 
                  preserve_groups=bool
                        Set to true if the user specified the -\b-P\bP flag,
                        indicating that the user wishes to preserve the group
                        vector instead of setting it based on the runas user.
 
-                 ignore_ticket=bool
-                       Set to true if the user specified the -\b-k\bk flag along
-                       with a command, indicating that the user wishes to
-                       ignore any cached authentication credentials.
+                 progname=string
+                       The command name that sudo was run as, typically
+                       ``sudo'' or ``sudoedit''.
 
 
-                 noninteractive=bool
-                       Set to true if the user specified the -\b-n\bn flag,
-                       indicating that s\bsu\bud\bdo\bo should operate in non-interactive
-                       mode.  The plugin may reject a command run in non-
-                       interactive mode if user interaction is required.
+                 prompt=string
+                       The prompt to use when requesting a password, if
+                       specified via the -\b-p\bp flag.
 
 
-                 login_class=string
-                       BSD login class to use when setting resource limits and
-                       nice value, if specified by the -\b-c\bc flag.
+                 run_shell=bool
+                       Set to true if the user specified the -\b-s\bs flag,
+                       indicating that the user wishes to run a shell.
+
+                 runas_group=string
+                       The group name or gid to to run the command as, if
+                       specified via the -\b-g\bg flag.
+
+                 runas_user=string
+                       The user name or uid to to run the command as, if
+                       specified via the -\b-u\bu flag.
 
                  selinux_role=string
                        SELinux role to use when executing the command, if
 
                  selinux_role=string
                        SELinux role to use when executing the command, if
@@ -236,21 +213,10 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                        SELinux type to use when executing the command, if
                        specified by the -\b-t\bt flag.
 
                        SELinux type to use when executing the command, if
                        specified by the -\b-t\bt flag.
 
-                 bsdauth_type=string
-                       Authentication type, if specified by the -\b-a\ba flag, to
-                       use on systems where BSD authentication is supported.
-
-                 network_addrs=list
-                       A space-separated list of IP network addresses and
-                       netmasks in the form ``addr/netmask'', e.g.
-                       ``192.168.1.2/255.255.255.0''.  The address and netmask
-                       pairs may be either IPv4 or IPv6, depending on what the
-                       operating system supports.  If the address contains a
-                       colon (`:'), it is an IPv6 address, else it is IPv4.
-
-                 progname=string
-                       The command name that sudo was run as, typically
-                       ``sudo'' or ``sudoedit''.
+                 set_home=bool
+                       Set to true if the user specified the -\b-H\bH flag.  If
+                       true, set the HOME environment variable to the target
+                       user's home directory.
 
                  sudoedit=bool
                        Set to true when the -\b-e\be flag is is specified or if
 
                  sudoedit=bool
                        Set to true when the -\b-e\be flag is is specified or if
@@ -260,12 +226,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                        support _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt.  For more information, see the
                        _\bc_\bh_\be_\bc_\bk_\b__\bp_\bo_\bl_\bi_\bc_\by section.
 
                        support _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt.  For more information, see the
                        _\bc_\bh_\be_\bc_\bk_\b__\bp_\bo_\bl_\bi_\bc_\by section.
 
-                 closefrom=number
-                       If specified, the user has requested via the -\b-C\bC flag
-                       that s\bsu\bud\bdo\bo close all files descriptors with a value of
-                       _\bn_\bu_\bm_\bb_\be_\br or higher.  The plugin may optionally pass this,
-                       or another value, back in the _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b__\bi_\bn_\bf_\bo list.
-
                  Additional settings may be added in the future so the plugin
                  should silently ignore settings that it does not recognize.
 
                  Additional settings may be added in the future so the plugin
                  should silently ignore settings that it does not recognize.
 
@@ -278,42 +238,20 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                  equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
                  itself but the _\bv_\ba_\bl_\bu_\be might.
 
                  equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
                  itself but the _\bv_\ba_\bl_\bu_\be might.
 
-                 pid=int
-                       The process ID of the running s\bsu\bud\bdo\bo process.  Only
-                       available starting with API version 1.2
-
-                 ppid=int
-                       The parent process ID of the running s\bsu\bud\bdo\bo process.
-                       Only available starting with API version 1.2
-
-                 sid=int
-                       The session ID of the running s\bsu\bud\bdo\bo process or 0 if s\bsu\bud\bdo\bo
-                       is not part of a POSIX job control session.  Only
-                       available starting with API version 1.2
-
-                 pgid=int
-                       The ID of the process group that the running s\bsu\bud\bdo\bo
-                       process belongs to.  Only available starting with API
-                       version 1.2
+                 cols=int
+                       The number of columns the user's terminal supports.  If
+                       there is no terminal device available, a default value
+                       of 80 is used.
 
 
-                 tcpgid=int
-                       The ID of the forground process group associated with
-                       the terminal device associcated with the s\bsu\bud\bdo\bo process
-                       or -1 if there is no terminal present.  Only available
-                       starting with API version 1.2
+                 cwd=string
+                       The user's current working directory.
 
 
-                 user=string
-                       The name of the user invoking s\bsu\bud\bdo\bo.
+                 egid=gid_t
+                       The effective group ID of the user invoking s\bsu\bud\bdo\bo.
 
                  euid=uid_t
                        The effective user ID of the user invoking s\bsu\bud\bdo\bo.
 
 
                  euid=uid_t
                        The effective user ID of the user invoking s\bsu\bud\bdo\bo.
 
-                 uid=uid_t
-                       The real user ID of the user invoking s\bsu\bud\bdo\bo.
-
-                 egid=gid_t
-                       The effective group ID of the user invoking s\bsu\bud\bdo\bo.
-
                  gid=gid_t
                        The real group ID of the user invoking s\bsu\bud\bdo\bo.
 
                  gid=gid_t
                        The real group ID of the user invoking s\bsu\bud\bdo\bo.
 
@@ -321,14 +259,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                        The user's supplementary group list formatted as a
                        string of comma-separated group IDs.
 
                        The user's supplementary group list formatted as a
                        string of comma-separated group IDs.
 
-                 cwd=string
-                       The user's current working directory.
-
-                 tty=string
-                       The path to the user's terminal device.  If the user
-                       has no terminal device associated with the session, the
-                       value will be empty, as in ``tty=''.
-
                  host=string
                        The local machine's hostname as returned by the
                        gethostname(2) system call.
                  host=string
                        The local machine's hostname as returned by the
                        gethostname(2) system call.
@@ -338,10 +268,54 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                        there is no terminal device available, a default value
                        of 24 is used.
 
                        there is no terminal device available, a default value
                        of 24 is used.
 
-                 cols=int
-                       The number of columns the user's terminal supports.  If
-                       there is no terminal device available, a default value
-                       of 80 is used.
+                 pgid=int
+                       The ID of the process group that the running s\bsu\bud\bdo\bo
+                       process is a member of.  Only available starting with
+                       API version 1.2
+
+                 pid=int
+                       The process ID of the running s\bsu\bud\bdo\bo process.  Only
+                       available starting with API version 1.2
+
+                 plugin_options
+                       Any (non-comment) strings immediately after the plugin
+                       path are passed as arguments to the plugin.  These
+                       arguments are split on a white space boundary and are
+                       passed to the plugin in the form of a NULL-terminated
+                       array of strings.  If no arguments were specified,
+                       _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs will be the NULL pointer.
+
+                       NOTE: the _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs parameter is only available
+                       starting with API version 1.2.  A plugin m\bmu\bus\bst\bt check the
+                       API version specified by the s\bsu\bud\bdo\bo front end before
+                       using _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs.  Failure to do so may result in a
+                       crash.
+
+                 ppid=int
+                       The parent process ID of the running s\bsu\bud\bdo\bo process.
+                       Only available starting with API version 1.2
+
+                 sid=int
+                       The session ID of the running s\bsu\bud\bdo\bo process or 0 if s\bsu\bud\bdo\bo
+                       is not part of a POSIX job control session.  Only
+                       available starting with API version 1.2
+
+                 tcpgid=int
+                       The ID of the foreground process group associated with
+                       the terminal device associated with the s\bsu\bud\bdo\bo process or
+                       -1 if there is no terminal present.  Only available
+                       starting with API version 1.2
+
+                 tty=string
+                       The path to the user's terminal device.  If the user
+                       has no terminal device associated with the session, the
+                       value will be empty, as in ``tty=''.
+
+                 uid=uid_t
+                       The real user ID of the user invoking s\bsu\bud\bdo\bo.
+
+                 user=string
+                       The name of the user invoking s\bsu\bud\bdo\bo.
 
            user_env
                  The user's environment in the form of a NULL-terminated
 
            user_env
                  The user's environment in the form of a NULL-terminated
@@ -351,19 +325,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                  equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
                  itself but the _\bv_\ba_\bl_\bu_\be might.
 
                  equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
                  itself but the _\bv_\ba_\bl_\bu_\be might.
 
-           plugin_options
-                 Any (non-comment) strings immediately after the plugin path
-                 are treated as arguments to the plugin.  These arguments are
-                 split on a white space boundary and are passed to the plugin
-                 in the form of a NULL-terminated array of strings.  If no
-                 arguments were specified, _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs will be the NULL
-                 pointer.
-
-                 NOTE: the _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs parameter is only available starting
-                 with API version 1.2.  A plugin m\bmu\bus\bst\bt check the API version
-                 specified by the s\bsu\bud\bdo\bo front end before using _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bo_\bp_\bt_\bi_\bo_\bn_\bs.
-                 Failure to do so may result in a crash.
-
      close
            void (*close)(int exit_status, int error);
 
      close
            void (*close)(int exit_status, int error);
 
@@ -384,6 +345,11 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                  c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() or p\bpl\blu\bug\bgi\bin\bn_\b_p\bpr\bri\bin\bnt\btf\bf() function.  If the command
                  was successfully executed, the value of error is 0.
 
                  c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() or p\bpl\blu\bug\bgi\bin\bn_\b_p\bpr\bri\bin\bnt\btf\bf() function.  If the command
                  was successfully executed, the value of error is 0.
 
+           If no c\bcl\blo\bos\bse\be() function is defined, no I/O logging plugins are
+           loaded, and neither the _\bt_\bi_\bm_\be_\bo_\bu_\bt not _\bu_\bs_\be_\b__\bp_\bt_\by options are set in the
+           command_info list, the s\bsu\bud\bdo\bo front end may execute the command
+           directly instead of running it as a child process.
+
      show_version
            int (*show_version)(int verbose);
 
      show_version
            int (*show_version)(int verbose);
 
@@ -454,79 +420,62 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                  must be terminated with a NULL pointer.  The following values
                  are recognized by s\bsu\bud\bdo\bo:
 
                  must be terminated with a NULL pointer.  The following values
                  are recognized by s\bsu\bud\bdo\bo:
 
-                 command=string
-                       Fully qualified path to the command to be executed.
-
-                 runas_uid=uid
-                       User ID to run the command as.
-
-                 runas_euid=uid
-                       Effective user ID to run the command as.  If not
-                       specified, the value of _\br_\bu_\bn_\ba_\bs_\b__\bu_\bi_\bd is used.
-
-                 runas_gid=gid
-                       Group ID to run the command as.
-
-                 runas_egid=gid
-                       Effective group ID to run the command as.  If not
-                       specified, the value of _\br_\bu_\bn_\ba_\bs_\b__\bg_\bi_\bd is used.
-
-                 runas_groups=list
-                       The supplementary group vector to use for the command
-                       in the form of a comma-separated list of group IDs.  If
-                       _\bp_\br_\be_\bs_\be_\br_\bv_\be_\b__\bg_\br_\bo_\bu_\bp_\bs is set, this option is ignored.
+                 chroot=string
+                       The root directory to use when running the command.
 
 
-                 login_class=string
-                       BSD login class to use when setting resource limits and
-                       nice value (optional).  This option is only set on
-                       systems that support login classes.
+                 closefrom=number
+                       If specified, s\bsu\bud\bdo\bo will close all files descriptors
+                       with a value of _\bn_\bu_\bm_\bb_\be_\br or higher.
 
 
-                 preserve_groups=bool
-                       If set, s\bsu\bud\bdo\bo will preserve the user's group vector
-                       instead of initializing the group vector based on
-                       runas_user.
+                 command=string
+                       Fully qualified path to the command to be executed.
 
                  cwd=string
                        The current working directory to change to when
                        executing the command.
 
 
                  cwd=string
                        The current working directory to change to when
                        executing the command.
 
-                 noexec=bool
-                       If set, prevent the command from executing other
-                       programs.
-
-                 chroot=string
-                       The root directory to use when running the command.
-
-                 nice=int
-                       Nice value (priority) to use when executing the
-                       command.  The nice value, if specified, overrides the
-                       priority associated with the _\bl_\bo_\bg_\bi_\bn_\b__\bc_\bl_\ba_\bs_\bs on BSD
-                       systems.
-
-                 umask=octal
-                       The file creation mask to use when executing the
-                       command.
-
-                 selinux_role=string
-                       SELinux role to use when executing the command.
-
-                 selinux_type=string
-                       SELinux type to use when executing the command.
-
-                 timeout=int
-                       Command timeout.  If non-zero then when the timeout
-                       expires the command will be killed.
-
-                 sudoedit=bool
-                       Set to true when in _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt mode.  The plugin may
-                       enable _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt mode even if s\bsu\bud\bdo\bo was not invoked as
-                       s\bsu\bud\bdo\boe\bed\bdi\bit\bt.  This allows the plugin to perform command
-                       substitution and transparently enable _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt when the
-                       user attempts to run an editor.
-
-                 closefrom=number
-                       If specified, s\bsu\bud\bdo\bo will close all files descriptors
-                       with a value of _\bn_\bu_\bm_\bb_\be_\br or higher.
+                 exec_background=bool
+                       By default, s\bsu\bud\bdo\bo runs a command as the foreground
+                       process as long as s\bsu\bud\bdo\bo itself is running in the
+                       foreground.  When _\be_\bx_\be_\bc_\b__\bb_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd is enabled and the
+                       command is being run in a pty (due to I/O logging or
+                       the _\bu_\bs_\be_\b__\bp_\bt_\by setting), the command will be run as a
+                       background process.  Attempts to read from the
+                       controlling terminal (or to change terminal settings)
+                       will result in the command being suspended with the
+                       SIGTTIN signal (or SIGTTOU in the case of terminal
+                       settings).  If this happens when s\bsu\bud\bdo\bo is a foreground
+                       process, the command will be granted the controlling
+                       terminal and resumed in the foreground with no user
+                       intervention required.  The advantage of initially
+                       running the command in the background is that s\bsu\bud\bdo\bo need
+                       not read from the terminal unless the command
+                       explicitly requests it.  Otherwise, any terminal input
+                       must be passed to the command, whether it has required
+                       it or not (the kernel buffers terminals so it is not
+                       possible to tell whether the command really wants the
+                       input).  This is different from historic _\bs_\bu_\bd_\bo behavior
+                       or when the command is not being run in a pty.
+
+                       For this to work seamlessly, the operating system must
+                       support the automatic restarting of system calls.
+                       Unfortunately, not all operating systems do this by
+                       default, and even those that do may have bugs.  For
+                       example, Mac OS X fails to restart the t\btc\bcg\bge\bet\bta\bat\btt\btr\br() and
+                       t\btc\bcs\bse\bet\bta\bat\btt\btr\br() system calls (this is a bug in Mac OS X).
+                       Furthermore, because this behavior depends on the
+                       command stopping with the SIGTTIN or SIGTTOU signals,
+                       programs that catch these signals and suspend
+                       themselves with a different signal (usually SIGTOP)
+                       will not be automatically foregrounded.  Some versions
+                       of the linux su(1) command behave this way.  Because of
+                       this, a plugin should not set _\be_\bx_\be_\bc_\b__\bb_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd unless it
+                       is explicitly enabled by the administrator and there
+                       should be a way to enabled or disable it on a per-
+                       command basis.
+
+                       This setting has no effect unless I/O logging is
+                       enabled or _\bu_\bs_\be_\b__\bp_\bt_\by is enabled.
 
                  iolog_compress=bool
                        Set to true if the I/O logging plugins, if any, should
 
                  iolog_compress=bool
                        Set to true if the I/O logging plugins, if any, should
@@ -572,11 +521,50 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                        hint to the I/O logging plugin which may choose to
                        ignore it.
 
                        hint to the I/O logging plugin which may choose to
                        ignore it.
 
-                 use_pty=bool
-                       Allocate a pseudo-tty to run the command in, regardless
-                       of whether or not I/O logging is in use.  By default,
-                       s\bsu\bud\bdo\bo will only run the command in a pty when an I/O log
-                       plugin is loaded.
+                 login_class=string
+                       BSD login class to use when setting resource limits and
+                       nice value (optional).  This option is only set on
+                       systems that support login classes.
+
+                 nice=int
+                       Nice value (priority) to use when executing the
+                       command.  The nice value, if specified, overrides the
+                       priority associated with the _\bl_\bo_\bg_\bi_\bn_\b__\bc_\bl_\ba_\bs_\bs on BSD
+                       systems.
+
+                 noexec=bool
+                       If set, prevent the command from executing other
+                       programs.
+
+                 preserve_groups=bool
+                       If set, s\bsu\bud\bdo\bo will preserve the user's group vector
+                       instead of initializing the group vector based on
+                       runas_user.
+
+                 runas_egid=gid
+                       Effective group ID to run the command as.  If not
+                       specified, the value of _\br_\bu_\bn_\ba_\bs_\b__\bg_\bi_\bd is used.
+
+                 runas_euid=uid
+                       Effective user ID to run the command as.  If not
+                       specified, the value of _\br_\bu_\bn_\ba_\bs_\b__\bu_\bi_\bd is used.
+
+                 runas_gid=gid
+                       Group ID to run the command as.
+
+                 runas_groups=list
+                       The supplementary group vector to use for the command
+                       in the form of a comma-separated list of group IDs.  If
+                       _\bp_\br_\be_\bs_\be_\br_\bv_\be_\b__\bg_\br_\bo_\bu_\bp_\bs is set, this option is ignored.
+
+                 runas_uid=uid
+                       User ID to run the command as.
+
+                 selinux_role=string
+                       SELinux role to use when executing the command.
+
+                 selinux_type=string
+                       SELinux type to use when executing the command.
 
                  set_utmp=bool
                        Create a utmp (or utmpx) entry when a pseudo-tty is
 
                  set_utmp=bool
                        Create a utmp (or utmpx) entry when a pseudo-tty is
@@ -584,6 +572,27 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                        the user's existing utmp entry (if any), with the tty,
                        time, type and pid fields updated.
 
                        the user's existing utmp entry (if any), with the tty,
                        time, type and pid fields updated.
 
+                 sudoedit=bool
+                       Set to true when in _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt mode.  The plugin may
+                       enable _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt mode even if s\bsu\bud\bdo\bo was not invoked as
+                       s\bsu\bud\bdo\boe\bed\bdi\bit\bt.  This allows the plugin to perform command
+                       substitution and transparently enable _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt when the
+                       user attempts to run an editor.
+
+                 timeout=int
+                       Command timeout.  If non-zero then when the timeout
+                       expires the command will be killed.
+
+                 umask=octal
+                       The file creation mask to use when executing the
+                       command.
+
+                 use_pty=bool
+                       Allocate a pseudo-tty to run the command in, regardless
+                       of whether or not I/O logging is in use.  By default,
+                       s\bsu\bud\bdo\bo will only run the command in a pty when an I/O log
+                       plugin is loaded.
+
                  utmp_user=string
                        User name to use when constructing a new utmp (or
                        utmpx) entry when _\bs_\be_\bt_\b__\bu_\bt_\bm_\bp is enabled.  This option can
                  utmp_user=string
                        User name to use when constructing a new utmp (or
                        utmpx) entry when _\bs_\be_\bt_\b__\bu_\bt_\bm_\bp is enabled.  This option can
@@ -639,7 +648,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
            int (*validate)(void);
 
            The v\bva\bal\bli\bid\bda\bat\bte\be() function is called when s\bsu\bud\bdo\bo is run with the -\b-v\bv
            int (*validate)(void);
 
            The v\bva\bal\bli\bid\bda\bat\bte\be() function is called when s\bsu\bud\bdo\bo is run with the -\b-v\bv
-           flag.  For policy plugins such as _\bs_\bu_\bd_\bo_\be_\br_\bs that cache authentication
+           flag.  For policy plugins such as s\bsu\bud\bdo\boe\ber\brs\bs that cache authentication
            credentials, this function will validate and cache the credentials.
 
            The v\bva\bal\bli\bid\bda\bat\bte\be() function should be NULL if the plugin does not
            credentials, this function will validate and cache the credentials.
 
            The v\bva\bal\bli\bid\bda\bat\bte\be() function should be NULL if the plugin does not
@@ -654,7 +663,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
            void (*invalidate)(int remove);
 
            The i\bin\bnv\bva\bal\bli\bid\bda\bat\bte\be() function is called when s\bsu\bud\bdo\bo is called with the -\b-k\bk
            void (*invalidate)(int remove);
 
            The i\bin\bnv\bva\bal\bli\bid\bda\bat\bte\be() function is called when s\bsu\bud\bdo\bo is called with the -\b-k\bk
-           or -\b-K\bK flag.  For policy plugins such as _\bs_\bu_\bd_\bo_\be_\br_\bs that cache
+           or -\b-K\bK flag.  For policy plugins such as s\bsu\bud\bdo\boe\ber\brs\bs that cache
            authentication credentials, this function will invalidate the
            credentials.  If the _\br_\be_\bm_\bo_\bv_\be flag is set, the plugin may remove the
            credentials instead of simply invalidating them.
            authentication credentials, this function will invalidate the
            credentials.  If the _\br_\be_\bm_\bo_\bv_\be flag is set, the plugin may remove the
            credentials instead of simply invalidating them.
@@ -764,10 +773,11 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      #define SUDO_IO_PLUGIN 2
          unsigned int type; /* always SUDO_IO_PLUGIN */
          unsigned int version; /* always SUDO_API_VERSION */
      #define SUDO_IO_PLUGIN 2
          unsigned int type; /* always SUDO_IO_PLUGIN */
          unsigned int version; /* always SUDO_API_VERSION */
-         int (*open)(unsigned int version, sudo_conv_t conversation
+         int (*open)(unsigned int version, sudo_conv_t conversation,
                      sudo_printf_t plugin_printf, char * const settings[],
                      sudo_printf_t plugin_printf, char * const settings[],
-                     char * const user_info[], int argc, char * const argv[],
-                     char * const user_env[], char * const plugin_options[]);
+                     char * const user_info[], char * const command_info[],
+                     int argc, char * const argv[], char * const user_env[],
+                     char * const plugin_options[]);
          void (*close)(int exit_status, int error); /* wait status or error */
          int (*show_version)(int verbose);
          int (*log_ttyin)(const char *buf, unsigned int len);
          void (*close)(int exit_status, int error); /* wait status or error */
          int (*show_version)(int verbose);
          int (*log_ttyin)(const char *buf, unsigned int len);
@@ -810,7 +820,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
            against.
 
      open
            against.
 
      open
-           int (*open)(unsigned int version, sudo_conv_t conversation
+           int (*open)(unsigned int version, sudo_conv_t conversation,
                        sudo_printf_t plugin_printf, char * const settings[],
                        char * const user_info[], int argc, char * const argv[],
                        char * const user_env[], char * const plugin_options[]);
                        sudo_printf_t plugin_printf, char * const settings[],
                        char * const user_info[], int argc, char * const argv[],
                        char * const user_env[], char * const plugin_options[]);
@@ -1025,6 +1035,29 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      Same as for the _\bP_\bo_\bl_\bi_\bc_\by _\bp_\bl_\bu_\bg_\bi_\bn _\bA_\bP_\bI.
 
 
      Same as for the _\bP_\bo_\bl_\bi_\bc_\by _\bp_\bl_\bu_\bg_\bi_\bn _\bA_\bP_\bI.
 
+   S\bSi\big\bgn\bna\bal\bl h\bha\ban\bnd\bdl\ble\ber\brs\bs
+     The s\bsu\bud\bdo\bo front end installs default signal handlers to trap common
+     signals while the plugin functions are run.  The following signals are
+     trapped by default before the command is executed:
+
+     o\bo   SIGALRM
+     o\bo   SIGHUP
+     o\bo   SIGINT
+     o\bo   SIGQUIT
+     o\bo   SIGTERM
+     o\bo   SIGTSTP
+     o\bo   SIGUSR1
+     o\bo   SIGUSR2
+
+     If a fatal signal is received before the command is executed, s\bsu\bud\bdo\bo will
+     call the plugin's c\bcl\blo\bos\bse\be() function with an exit status of 128 plus the
+     value of the signal that was received.  This allows for consistent
+     logging of commands killed by a signal for plugins that log such
+     information in their c\bcl\blo\bos\bse\be() function.
+
+     A plugin may temporarily install its own signal handlers but must restore
+     the original handler before the plugin function returns.
+
    H\bHo\boo\bok\bk f\bfu\bun\bnc\bct\bti\bio\bon\bn A\bAP\bPI\bI
      Beginning with plugin API version 1.2, it is possible to install hooks
      for certain functions called by the s\bsu\bud\bdo\bo front end.
    H\bHo\boo\bok\bk f\bfu\bun\bnc\bct\bti\bio\bon\bn A\bAP\bPI\bI
      Beginning with plugin API version 1.2, it is possible to install hooks
      for certain functions called by the s\bsu\bud\bdo\bo front end.
@@ -1215,20 +1248,20 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      Unlike, SUDO_CONV_INFO_MSG and Dv SUDO_CONV_ERROR_MSG , messages sent
      with the SUDO_CONV_DEBUG_MSG _\bm_\bs_\bg_\b__\bt_\by_\bp_\be are not directly user-visible.
      Instead, they are logged to the file specified in the Debug statement (if
      Unlike, SUDO_CONV_INFO_MSG and Dv SUDO_CONV_ERROR_MSG , messages sent
      with the SUDO_CONV_DEBUG_MSG _\bm_\bs_\bg_\b__\bt_\by_\bp_\be are not directly user-visible.
      Instead, they are logged to the file specified in the Debug statement (if
-     any) in the _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf
-
-     file.  This allows a plugin to log debugging information and is intended
-     to be used in conjunction with the _\bd_\be_\bb_\bu_\bg_\b__\bf_\bl_\ba_\bg_\bs setting.
+     any) in the sudo.conf(4).  file.  This allows a plugin to log debugging
+     information and is intended to be used in conjunction with the
+     _\bd_\be_\bb_\bu_\bg_\b__\bf_\bl_\ba_\bg_\bs setting.
 
      See the sample plugin for an example of the c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function
      usage.
 
    S\bSu\bud\bdo\boe\ber\brs\bs g\bgr\bro\bou\bup\bp p\bpl\blu\bug\bgi\bin\bn A\bAP\bPI\bI
 
      See the sample plugin for an example of the c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function
      usage.
 
    S\bSu\bud\bdo\boe\ber\brs\bs g\bgr\bro\bou\bup\bp p\bpl\blu\bug\bgi\bin\bn A\bAP\bPI\bI
-     The _\bs_\bu_\bd_\bo_\be_\br_\bs module supports a plugin interface to allow non-Unix group
-     lookups.  This can be used to query a group source other than the
-     standard Unix group database.  A sample group plugin is bundled with s\bsu\bud\bdo\bo
-     that implements file-based lookups.  Third party group plugins include a
-     QAS AD plugin available from Quest Software.
+     The s\bsu\bud\bdo\boe\ber\brs\bs plugin supports its own plugin interface to allow non-Unix
+     group lookups.  This can be used to query a group source other than the
+     standard Unix group database.  Two sample group plugins are bundled with
+     s\bsu\bud\bdo\bo, _\bg_\br_\bo_\bu_\bp_\b__\bf_\bi_\bl_\be and _\bs_\by_\bs_\bt_\be_\bm_\b__\bg_\br_\bo_\bu_\bp, are detailed in sudoers(4).  Third
+     party group plugins include a QAS AD plugin available from Quest
+     Software.
 
      A group plugin must declare and populate a sudoers_group_plugin struct in
      the global scope.  This structure contains pointers to the functions that
 
      A group plugin must declare and populate a sudoers_group_plugin struct in
      the global scope.  This structure contains pointers to the functions that
@@ -1248,7 +1281,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      version
            The version field should be set to GROUP_API_VERSION.
 
      version
            The version field should be set to GROUP_API_VERSION.
 
-           This allows _\bs_\bu_\bd_\bo_\be_\br_\bs to determine the API version the group plugin
+           This allows s\bsu\bud\bdo\boe\ber\brs\bs to determine the API version the group plugin
            was built against.
 
      init
            was built against.
 
      init
@@ -1265,9 +1298,9 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
            The function arguments are as follows:
 
            version
            The function arguments are as follows:
 
            version
-                 The version passed in by _\bs_\bu_\bd_\bo_\be_\br_\bs allows the plugin to
+                 The version passed in by s\bsu\bud\bdo\boe\ber\brs\bs allows the plugin to
                  determine the major and minor version number of the group
                  determine the major and minor version number of the group
-                 plugin API supported by _\bs_\bu_\bd_\bo_\be_\br_\bs.
+                 plugin API supported by s\bsu\bud\bdo\boe\ber\brs\bs.
 
            plugin_printf
                  A pointer to a p\bpr\bri\bin\bnt\btf\bf()-style function that may be used to
 
            plugin_printf
                  A pointer to a p\bpr\bri\bin\bnt\btf\bf()-style function that may be used to
@@ -1282,7 +1315,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      cleanup
            void (*cleanup)();
 
      cleanup
            void (*cleanup)();
 
-           The c\bcl\ble\bea\ban\bnu\bup\bp() function is called when _\bs_\bu_\bd_\bo_\be_\br_\bs has finished its
+           The c\bcl\ble\bea\ban\bnu\bup\bp() function is called when s\bsu\bud\bdo\boe\ber\brs\bs has finished its
            group checks.  The plugin should free any memory it has allocated
            and close open file handles.
 
            group checks.  The plugin should free any memory it has allocated
            and close open file handles.
 
@@ -1328,13 +1361,13 @@ P\bPL\bLU\bUG\bGI\bIN\bN A\bAP\bPI\bI C\bCH\bHA\bAN\bNG\bGE\bEL\bLO\bOG\bG
      Version 1.0
            Initial API version.
 
      Version 1.0
            Initial API version.
 
-     Version 1.1
+     Version 1.1 (sudo 1.8.0)
            The I/O logging plugin's o\bop\bpe\ben\bn() function was modified to take the
            command_info list as an argument.
 
            The I/O logging plugin's o\bop\bpe\ben\bn() function was modified to take the
            command_info list as an argument.
 
-     Version 1.2
+     Version 1.2 (sudo 1.8.5)
            The Policy and I/O logging plugins' o\bop\bpe\ben\bn() functions are now passed
            The Policy and I/O logging plugins' o\bop\bpe\ben\bn() functions are now passed
-           a list of plugin options if any are specified in _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf.
+           a list of plugin parameters if any are specified in sudo.conf(4).
 
            A simple hooks API has been introduced to allow plugins to hook in
            to the system's environment handling functions.
 
            A simple hooks API has been introduced to allow plugins to hook in
            to the system's environment handling functions.
@@ -1344,8 +1377,24 @@ P\bPL\bLU\bUG\bGI\bIN\bN A\bAP\bPI\bI C\bCH\bHA\bAN\bNG\bGE\bEL\bLO\bOG\bG
            used to merge in environment variables stored in the PAM handle
            before a command is run.
 
            used to merge in environment variables stored in the PAM handle
            before a command is run.
 
+     Version 1.3 (sudo 1.8.7)
+           Support for the _\be_\bx_\be_\bc_\b__\bb_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd entry has been added to the
+           command_info list.
+
+           The _\bm_\ba_\bx_\b__\bg_\br_\bo_\bu_\bp_\bs and _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bd_\bi_\br entries were added to the settings
+           list.
+
+           The v\bve\ber\brs\bsi\bio\bon\bn() and c\bcl\blo\bos\bse\be() functions are now optional.  Previously,
+           a missing v\bve\ber\brs\bsi\bio\bon\bn() or c\bcl\blo\bos\bse\be() function would result in a crash.
+           If no policy plugin c\bcl\blo\bos\bse\be() function is defined, a default c\bcl\blo\bos\bse\be()
+           function will be provided by the s\bsu\bud\bdo\bo front end that displays a
+           warning if the command could not be executed.
+
+           The s\bsu\bud\bdo\bo front end now installs default signal handlers to trap
+           common signals while the plugin functions are run.
+
 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     sudoers(4), sudo(1m)
+     sudo.conf(4), sudoers(4), sudo(1m)
 
 B\bBU\bUG\bGS\bS
      If you feel you have found a bug in s\bsu\bud\bdo\bo, please submit a bug report at
 
 B\bBU\bUG\bGS\bS
      If you feel you have found a bug in s\bsu\bud\bdo\bo, please submit a bug report at
@@ -1363,4 +1412,4 @@ D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
      file distributed with s\bsu\bud\bdo\bo or http://www.sudo.ws/sudo/license.html for
      complete details.
 
      file distributed with s\bsu\bud\bdo\bo or http://www.sudo.ws/sudo/license.html for
      complete details.
 
-Sudo 1.8.6                       July 16, 2012                      Sudo 1.8.6
+Sudo 1.8.7                       March 5, 2013                      Sudo 1.8.7