]> granicus.if.org Git - sudo/commitdiff
Remove .cat pages, there is no need for them in the modern world.
authorTodd C. Miller <Todd.Miller@sudo.ws>
Thu, 20 Jun 2019 19:15:46 +0000 (13:15 -0600)
committerTodd C. Miller <Todd.Miller@sudo.ws>
Thu, 20 Jun 2019 19:15:46 +0000 (13:15 -0600)
Sudo only shipped .cat pages for Irix, which lacked nroff.
Irix is long dead and there are multiple open source nroff options.

13 files changed:
MANIFEST
configure
configure.ac
doc/Makefile.in
doc/cvtsudoers.cat [deleted file]
doc/sudo.cat [deleted file]
doc/sudo.conf.cat [deleted file]
doc/sudo_plugin.cat [deleted file]
doc/sudoers.cat [deleted file]
doc/sudoers.ldap.cat [deleted file]
doc/sudoers_timestamp.cat [deleted file]
doc/sudoreplay.cat [deleted file]
doc/visudo.cat [deleted file]

index 10d02e91c2ab5c4dfa4f36c3b4eaa773255cbdb7..47c645b93a0225a0c1fdafba669e548b341afd2f 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -20,7 +20,6 @@ doc/LICENSE
 doc/Makefile.in
 doc/TROUBLESHOOTING
 doc/UPGRADE
-doc/cvtsudoers.cat
 doc/cvtsudoers.man.in
 doc/cvtsudoers.mdoc.in
 doc/fixman.sh
@@ -29,30 +28,22 @@ doc/schema.ActiveDirectory
 doc/schema.OpenLDAP
 doc/schema.iPlanet
 doc/schema.olcSudo
-doc/sudo.cat
-doc/sudo.conf.cat
 doc/sudo.conf.man.in
 doc/sudo.conf.mdoc.in
 doc/sudo.man.in
 doc/sudo.man.in.sed
 doc/sudo.mdoc.in
-doc/sudo_plugin.cat
 doc/sudo_plugin.man.in
 doc/sudo_plugin.mdoc.in
-doc/sudoers.cat
-doc/sudoers.ldap.cat
 doc/sudoers.ldap.man.in
 doc/sudoers.ldap.mdoc.in
 doc/sudoers.man.in
 doc/sudoers.man.in.sed
 doc/sudoers.mdoc.in
-doc/sudoers_timestamp.cat
 doc/sudoers_timestamp.man.in
 doc/sudoers_timestamp.mdoc.in
-doc/sudoreplay.cat
 doc/sudoreplay.man.in
 doc/sudoreplay.mdoc.in
-doc/visudo.cat
 doc/visudo.man.in
 doc/visudo.mdoc.in
 examples/Makefile.in
index 9bc9caa198483b20326e58d0a830d913e37d1ea7..a8d9ba428aceb6c10822de520e7009dae3b57394 100755 (executable)
--- a/configure
+++ b/configure
@@ -3106,7 +3106,7 @@ mailsub="*** SECURITY information for %h ***"
 badpass_message="Sorry, try again."
 fqdn=off
 runas_default=root
-env_editor=off
+env_editor=on
 env_reset=on
 editor=vi
 passwd_tries=3
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_mantype" >&5
 $as_echo "$sudo_cv_var_mantype" >&6; }
        MANTYPE="$sudo_cv_var_mantype"
-    else
-       MANTYPE=cat
-       MANDIRTYPE=cat
-       mansrcdir='$(srcdir)'
     fi
 fi
 
@@ -15867,24 +15863,11 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     *-*-irix*)
                $as_echo "#define _BSD_TYPES 1" >>confdefs.h
 
-               if test -z "$NROFFPROG"; then
-                   if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
-                       if test -d /usr/share/catman/local; then
-                           mandir="/usr/share/catman/local"
-                       else
-                           mandir="/usr/catman/local"
-                       fi
-                   fi
-                   # Compress cat pages with pack
-                   MANCOMPRESS='pack'
-                   MANCOMPRESSEXT='.z'
-               else
-                   if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
-                       if test -d "/usr/share/man/local"; then
-                           mandir="/usr/share/man/local"
-                       else
-                           mandir="/usr/man/local"
-                       fi
+               if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
+                   if test -d "/usr/share/man/local"; then
+                       mandir="/usr/share/man/local"
+                   else
+                       mandir="/usr/man/local"
                    fi
                fi
                # IRIX <= 4 needs -lsun
index b913e2f0a01e711c24a9fd77f2809a20925184c8..384dd6437b0238a8ef0f1721d2dea7e2311f5a84 100644 (file)
@@ -1748,10 +1748,6 @@ else
            ]
        )
        MANTYPE="$sudo_cv_var_mantype"
-    else
-       MANTYPE=cat
-       MANDIRTYPE=cat
-       mansrcdir='$(srcdir)'
     fi
 fi
 
@@ -2032,24 +2028,11 @@ case "$host" in
                ;;
     *-*-irix*)
                AC_DEFINE([_BSD_TYPES])
-               if test -z "$NROFFPROG"; then
-                   if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
-                       if test -d /usr/share/catman/local; then
-                           mandir="/usr/share/catman/local"
-                       else
-                           mandir="/usr/catman/local"
-                       fi
-                   fi
-                   # Compress cat pages with pack
-                   MANCOMPRESS='pack'
-                   MANCOMPRESSEXT='.z'
-               else
-                   if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
-                       if test -d "/usr/share/man/local"; then
-                           mandir="/usr/share/man/local"
-                       else
-                           mandir="/usr/man/local"
-                       fi
+               if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
+                   if test -d "/usr/share/man/local"; then
+                       mandir="/usr/share/man/local"
+                   else
+                       mandir="/usr/man/local"
                    fi
                fi
                # IRIX <= 4 needs -lsun
index 90c9a8f66fbedf6594c3f9e2dcee7f789ccb3253..8809493812d14a18f5b060933d40808acadd654e 100644 (file)
@@ -76,15 +76,11 @@ DOCS = $(mansrcdir)/cvtsudoers.$(mantype) $(mansrcdir)/sudo.$(mantype) \
        $(mansrcdir)/sudoers_timestamp.$(mantype) \
        $(mansrcdir)/sudoreplay.$(mantype) $(mansrcdir)/visudo.$(mantype)
 
-DEVDOCS = $(srcdir)/cvtsudoers.man.in $(srcdir)/cvtsudoers.cat \
-         $(srcdir)/sudo.conf.man.in $(srcdir)/sudo.conf.cat \
-         $(srcdir)/sudo.man.in $(srcdir)/sudo.cat \
-         $(srcdir)/sudo_plugin.man.in $(srcdir)/sudo_plugin.cat \
-         $(srcdir)/sudoers.ldap.man.in $(srcdir)/sudoers.ldap.cat \
-         $(srcdir)/sudoers.man.in $(srcdir)/sudoers.cat \
-         $(srcdir)/sudoers_timestamp.man.in $(srcdir)/sudoers_timestamp.cat \
-         $(srcdir)/sudoreplay.man.in $(srcdir)/sudoreplay.cat \
-         $(srcdir)/visudo.man.in $(srcdir)/visudo.cat
+DEVDOCS = $(srcdir)/cvtsudoers.man.in $(srcdir)/sudo.conf.man.in \
+         $(srcdir)/sudo.man.in $(srcdir)/sudo_plugin.man.in \
+         $(srcdir)/sudoers.ldap.man.in $(srcdir)/sudoers.man.in \
+         $(srcdir)/sudoers_timestamp.man.in $(srcdir)/sudoreplay.man.in \
+         $(srcdir)/visudo.man.in
 
 OTHER_DOCS = $(top_srcdir)/ChangeLog $(top_srcdir)/README \
             $(top_srcdir)/NEWS $(srcdir)/HISTORY $(srcdir)/CONTRIBUTORS \
@@ -128,12 +124,6 @@ Makefile: $(srcdir)/Makefile.in
 
 .SUFFIXES: .man
 
-varsub: $(top_srcdir)/configure.ac
-       @if [ -n "$(DEVEL)" ]; then \
-           printf 's#@%s@#1#\ns#@%s@#1#\ns#@%s@#1#\ns#@%s@#1#\ns#@%s@#/etc#g\ns#@%s@#/usr/local#g\ns#@%s@#5#g\ns#@%s@#8#g\ns#@%s@#%s#\n' SEMAN BAMAN LCMAN PSMAN sysconfdir prefix mansectform mansectsu PACKAGE_VERSION $(VERSION) > $@; \
-           $(SED) -n '/Begin initial values for man page substitution/,/End initial values for man page substitution/{;p;}' $(top_srcdir)/configure.ac | $(SED) -e '/^#/d' -e 's/^/s#@/' -e 's/=[\\"]*/@#/' -e 's/[\\"]*$$/#g/' >> $@; \
-       fi
-
 $(srcdir)/sudo.man.in: $(srcdir)/sudo.mdoc.in $(srcdir)/sudo.man.in.sed
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -151,12 +141,6 @@ $(mansrcdir)/sudo.man: $(top_builddir)/config.status $(srcdir)/sudo.man.in fixma
 $(mansrcdir)/sudo.mdoc: $(top_builddir)/config.status $(srcdir)/sudo.mdoc.in
        cd $(top_builddir) && $(SHELL) config.status --file=doc/$@
 
-$(srcdir)/sudo.cat: varsub $(srcdir)/sudo.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/sudo.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 $(srcdir)/visudo.man.in: $(srcdir)/visudo.mdoc.in
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -171,12 +155,6 @@ $(mansrcdir)/visudo.man: $(top_builddir)/config.status $(srcdir)/visudo.man.in f
 $(mansrcdir)/visudo.mdoc: $(top_builddir)/config.status $(srcdir)/visudo.mdoc.in
        cd $(top_builddir) && $(SHELL) config.status --file=doc/$@
 
-$(srcdir)/visudo.cat: varsub $(srcdir)/visudo.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/visudo.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 $(srcdir)/sudo.conf.man.in: $(srcdir)/sudo.conf.mdoc.in
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -191,12 +169,6 @@ $(mansrcdir)/sudo.conf.man: $(top_builddir)/config.status $(srcdir)/sudo.conf.ma
 $(mansrcdir)/sudo.conf.mdoc: $(top_builddir)/config.status $(srcdir)/sudo.conf.mdoc.in
        cd $(top_builddir) && $(SHELL) config.status --file=doc/$@
 
-$(srcdir)/sudo.conf.cat: varsub $(srcdir)/sudo.conf.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/sudo.conf.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 $(srcdir)/sudoers.man.in: $(srcdir)/sudoers.mdoc.in $(srcdir)/sudoers.man.in.sed
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -211,12 +183,6 @@ $(mansrcdir)/sudoers.man: $(top_builddir)/config.status $(srcdir)/sudoers.man.in
 $(mansrcdir)/sudoers.mdoc: $(top_builddir)/config.status $(srcdir)/sudoers.mdoc.in $(srcdir)/fixmdoc.sed
        (cd $(top_builddir) && $(SHELL) config.status --file=-) < $(srcdir)/sudoers.mdoc.in | $(SED) -f $(srcdir)/fixmdoc.sed > $@
 
-$(srcdir)/sudoers.cat: varsub $(srcdir)/sudoers.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/sudoers.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 $(srcdir)/sudoers.ldap.man.in: $(srcdir)/sudoers.ldap.mdoc.in
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -231,12 +197,6 @@ $(mansrcdir)/sudoers.ldap.man: $(top_builddir)/config.status $(srcdir)/sudoers.l
 $(mansrcdir)/sudoers.ldap.mdoc: $(top_builddir)/config.status $(srcdir)/sudoers.ldap.mdoc.in
        cd $(top_builddir) && $(SHELL) config.status --file=doc/$@
 
-$(srcdir)/sudoers.ldap.cat: varsub $(srcdir)/sudoers.ldap.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/sudoers.ldap.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 $(srcdir)/sudoers_timestamp.man.in: $(srcdir)/sudoers_timestamp.mdoc.in
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -251,12 +211,6 @@ $(mansrcdir)/sudoers_timestamp.man: $(top_builddir)/config.status $(srcdir)/sudo
 $(mansrcdir)/sudoers_timestamp.mdoc: $(top_builddir)/config.status $(srcdir)/sudoers_timestamp.mdoc.in
        cd $(top_builddir) && $(SHELL) config.status --file=doc/$@
 
-$(srcdir)/sudoers_timestamp.cat: varsub $(srcdir)/sudoers_timestamp.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/sudoers_timestamp.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 $(srcdir)/cvtsudoers.man.in: $(srcdir)/cvtsudoers.mdoc.in
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -271,12 +225,6 @@ $(mansrcdir)/cvtsudoers.man: $(top_builddir)/config.status $(srcdir)/cvtsudoers.
 $(mansrcdir)/cvtsudoers.mdoc: $(top_builddir)/config.status $(srcdir)/cvtsudoers.mdoc.in
        cd $(top_builddir) && $(SHELL) config.status --file=doc/$@
 
-$(srcdir)/cvtsudoers.cat: varsub $(srcdir)/cvtsudoers.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/cvtsudoers.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 $(srcdir)/sudoreplay.man.in: $(srcdir)/sudoreplay.mdoc.in
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -291,12 +239,6 @@ $(mansrcdir)/sudoreplay.man: $(top_builddir)/config.status $(srcdir)/sudoreplay.
 $(mansrcdir)/sudoreplay.mdoc: $(top_builddir)/config.status $(srcdir)/sudoreplay.mdoc.in
        cd $(top_builddir) && $(SHELL) config.status --file=doc/$@
 
-$(srcdir)/sudoreplay.cat: varsub $(srcdir)/sudoreplay.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/sudoreplay.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 $(srcdir)/sudo_plugin.man.in: $(srcdir)/sudo_plugin.mdoc.in
        @if [ -n "$(DEVEL)" ]; then \
            echo "Generating $@"; \
@@ -311,12 +253,6 @@ $(mansrcdir)/sudo_plugin.man: $(top_builddir)/config.status $(srcdir)/sudo_plugi
 $(mansrcdir)/sudo_plugin.mdoc: $(top_builddir)/config.status $(srcdir)/sudo_plugin.mdoc.in
        cd $(top_builddir) && $(SHELL) config.status --file=doc/$@
 
-$(srcdir)/sudo_plugin.cat: varsub $(srcdir)/sudo_plugin.mdoc.in
-       @if [ -n "$(DEVEL)" ]; then \
-           echo "Generating $@"; \
-           $(SED) -f varsub $(srcdir)/sudo_plugin.mdoc.in | $(MANDOC) -Tascii -mdoc | $(SED) -e 's/(5)/(4)/g' -e 's/(8)/(1m)/g' > $@; \
-       fi
-
 pre-install:
 
 install: install-doc
@@ -383,7 +319,7 @@ pvs-studio:
 check:
 
 clean:
-       -rm -f varsub fixman.sed
+       -rm -f fixman.sed
 
 mostlyclean: clean
 
diff --git a/doc/cvtsudoers.cat b/doc/cvtsudoers.cat
deleted file mode 100644 (file)
index f7567b8..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-CVTSUDOERS(1)               General Commands Manual              CVTSUDOERS(1)
-
-N\bNA\bAM\bME\bE
-     c\bcv\bvt\bts\bsu\bud\bdo\boe\ber\brs\bs - convert between sudoers file formats
-
-S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
-     c\bcv\bvt\bts\bsu\bud\bdo\boe\ber\brs\bs [-\b-e\beh\bhM\bMp\bpV\bV] [-\b-b\bb _\bd_\bn] [-\b-c\bc _\bc_\bo_\bn_\bf_\b__\bf_\bi_\bl_\be] [-\b-d\bd _\bd_\be_\bf_\bt_\by_\bp_\be_\bs]
-                [-\b-f\bf _\bo_\bu_\bt_\bp_\bu_\bt_\b__\bf_\bo_\br_\bm_\ba_\bt] [-\b-i\bi _\bi_\bn_\bp_\bu_\bt_\b__\bf_\bo_\br_\bm_\ba_\bt] [-\b-I\bI _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt]
-                [-\b-m\bm _\bf_\bi_\bl_\bt_\be_\br] [-\b-o\bo _\bo_\bu_\bt_\bp_\bu_\bt_\b__\bf_\bi_\bl_\be] [-\b-O\bO _\bs_\bt_\ba_\br_\bt_\b__\bp_\bo_\bi_\bn_\bt] [-\b-P\bP _\bp_\ba_\bd_\bd_\bi_\bn_\bg]
-                [-\b-s\bs _\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs] [_\bi_\bn_\bp_\bu_\bt_\b__\bf_\bi_\bl_\be]
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     c\bcv\bvt\bts\bsu\bud\bdo\boe\ber\brs\bs can be used to convert between _\bs_\bu_\bd_\bo_\be_\br_\bs security policy file
-     formats.  The default input format is sudoers.  The default output format
-     is LDIF.  It is only possible to convert a _\bs_\bu_\bd_\bo_\be_\br_\bs file that is
-     syntactically correct.
-
-     If no _\bi_\bn_\bp_\bu_\bt_\b__\bf_\bi_\bl_\be is specified, or if it is `-', the policy is read from
-     the standard input.  By default, the result is written to the standard
-     output.
-
-     The options are as follows:
-
-     -\b-b\bb _\bd_\bn, -\b--\b-b\bba\bas\bse\be=_\bd_\bn
-                 The base DN (distinguished name) that will be used when
-                 performing LDAP queries.  Typically this is of the form
-                 ou=SUDOers,dc=my-domain,dc=com for the domain my-domain.com.
-                 If this option is not specified, the value of the
-                 SUDOERS_BASE environment variable will be used instead.  Only
-                 necessary when converting to LDIF format.
-
-     -\b-c\bc _\bc_\bo_\bn_\bf_\b__\bf_\bi_\bl_\be, -\b--\b-c\bco\bon\bnf\bfi\big\bg=_\bc_\bo_\bn_\bf_\b__\bf_\bi_\bl_\be
-                 Specify the path to the configuration file.  Defaults to
-                 _\b/_\be_\bt_\bc_\b/_\bc_\bv_\bt_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bc_\bo_\bn_\bf.
-
-     -\b-d\bd _\bd_\be_\bf_\bt_\by_\bp_\be_\bs, -\b--\b-d\bde\bef\bfa\bau\bul\blt\bts\bs=_\bd_\be_\bf_\bt_\by_\bp_\be_\bs
-                 Only convert Defaults entries of the specified types.  One or
-                 more Defaults types may be specified, separated by a comma
-                 (`,').  The supported types are:
-
-                 all       All Defaults entries.
-
-                 global    Global Defaults entries that are applied regardless
-                           of user, runas, host or command.
-
-                 user      Per-user Defaults entries.
-
-                 runas     Per-runas user Defaults entries.
-
-                 host      Per-host Defaults entries.
-
-                 command   Per-command Defaults entries.
-
-                 See the D\bDe\bef\bfa\bau\bul\blt\bts\bs section in sudoers(4) for more information.
-
-                 If the -\b-d\bd option is not specified, all Defaults entries will
-                 be converted.
-
-     -\b-e\be, -\b--\b-e\bex\bxp\bpa\ban\bnd\bd-\b-a\bal\bli\bia\bas\bse\bes\bs
-                 Expand aliases in _\bi_\bn_\bp_\bu_\bt_\b__\bf_\bi_\bl_\be.  Aliases are preserved by
-                 default when the output _\bf_\bo_\br_\bm_\ba_\bt is JSON or sudoers.
-
-     -\b-f\bf _\bo_\bu_\bt_\bp_\bu_\bt_\b__\bf_\bo_\br_\bm_\ba_\bt, -\b--\b-o\bou\but\btp\bpu\but\bt-\b-f\bfo\bor\brm\bma\bat\bt=_\bo_\bu_\bt_\bp_\bu_\bt_\b__\bf_\bo_\br_\bm_\ba_\bt
-                 Specify the output format (case-insensitive).  The following
-                 formats are supported:
-
-                 JSON      JSON (JavaScript Object Notation) files are usually
-                           easier for third-party applications to consume than
-                           the traditional _\bs_\bu_\bd_\bo_\be_\br_\bs format.  The various values
-                           have explicit types which removes much of the
-                           ambiguity of the _\bs_\bu_\bd_\bo_\be_\br_\bs format.
-
-                 LDIF      LDIF (LDAP Data Interchange Format) files can be
-                           imported into an LDAP server for use with
-                           sudoers.ldap(4).
-
-                           Conversion to LDIF has the following limitations:
-
-                           +\b+\bo\bo  Command, host, runas and user-specific Defaults
-                              lines cannot be translated as they don't have an
-                              equivalent in the sudoers LDAP schema.
-
-                           +\b+\bo\bo  Command, host, runas and user aliases are not
-                              supported by the sudoers LDAP schema so they are
-                              expanded during the conversion.
-
-                 sudoers   Traditional sudoers format.  A new sudoers file
-                           will be reconstructed from the parsed input file.
-                           Comments are not preserved and data from any
-                           include files will be output inline.
-
-     -\b-h\bh, -\b--\b-h\bhe\bel\blp\bp  Display a short help message to the standard output and exit.
-
-     -\b-i\bi _\bi_\bn_\bp_\bu_\bt_\b__\bf_\bo_\br_\bm_\ba_\bt, -\b--\b-i\bin\bnp\bpu\but\bt-\b-f\bfo\bor\brm\bma\bat\bt=_\bi_\bn_\bp_\bu_\bt_\b__\bf_\bo_\br_\bm_\ba_\bt
-                 Specify the input format.  The following formats are
-                 supported:
-
-                 LDIF      LDIF (LDAP Data Interchange Format) files can be
-                           exported from an LDAP server to convert security
-                           policies used by sudoers.ldap(4).  If a base DN
-                           (distinguished name) is specified, only sudoRole
-                           objects that match the base DN will be processed.
-                           Not all sudoOptions specified in a sudoRole can be
-                           translated from LDIF to sudoers format.
-
-                 sudoers   Traditional sudoers format.  This is the default
-                           input format.
-
-     -\b-I\bI _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt, -\b--\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bt=_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt
-                 When generating LDIF output, increment each sudoOrder
-                 attribute by the specified number.  Defaults to an increment
-                 of 1.
-
-     -\b-m\bm _\bf_\bi_\bl_\bt_\be_\br, -\b--\b-m\bma\bat\btc\bch\bh=_\bf_\bi_\bl_\bt_\be_\br
-                 Only output rules that match the specified _\bf_\bi_\bl_\bt_\be_\br.  A _\bf_\bi_\bl_\bt_\be_\br
-                 expression is made up of one or more k\bke\bey\by =\b= _\bv_\ba_\bl_\bu_\be pairs,
-                 separated by a comma (`,').  The k\bke\bey\by may be "user", "group"
-                 or "host".  For example, u\bus\bse\ber\br = _\bo_\bp_\be_\br_\ba_\bt_\bo_\br or h\bho\bos\bst\bt = _\bw_\bw_\bw.  An
-                 upper-case User_Alias or Host_Alias may be specified as the
-                 "user" or "host".
-
-                 A matching _\bs_\bu_\bd_\bo_\be_\br_\bs rule may also include users, groups and
-                 hosts that are not part of the _\bf_\bi_\bl_\bt_\be_\br.  This can happen when
-                 a rule includes multiple users, groups or hosts.  To prune
-                 out any non-matching user, group or host from the rules, the
-                 -\b-p\bp option may be used.
-
-                 By default, the password and group databases are not
-                 consulted when matching against the filter so the users and
-                 groups do not need to be present on the local system (see the
-                 -\b-M\bM option).  Only aliases that are referenced by the filtered
-                 policy rules will be displayed.
-
-     -\b-M\bM, -\b--\b-m\bma\bat\btc\bch\bh-\b-l\blo\boc\bca\bal\bl
-                 When the -\b-m\bm option is also specified, use password and group
-                 database information when matching users and groups in the
-                 filter.  Only users and groups in the filter that exist on
-                 the local system will match, and a user's groups will
-                 automatically be added to the filter.  If the -\b-M\bM is _\bn_\bo_\bt
-                 specified, users and groups in the filter do not need to
-                 exist on the local system, but all groups used for matching
-                 must be explicitly listed in the filter.
-
-     -\b-o\bo _\bo_\bu_\bt_\bp_\bu_\bt_\b__\bf_\bi_\bl_\be, -\b--\b-o\bou\but\btp\bpu\but\bt=_\bo_\bu_\bt_\bp_\bu_\bt_\b__\bf_\bi_\bl_\be
-                 Write the converted output to _\bo_\bu_\bt_\bp_\bu_\bt_\b__\bf_\bi_\bl_\be.  If no _\bo_\bu_\bt_\bp_\bu_\bt_\b__\bf_\bi_\bl_\be
-                 is specified, or if it is `-', the converted _\bs_\bu_\bd_\bo_\be_\br_\bs policy
-                 will be written to the standard output.
-
-     -\b-O\bO _\bs_\bt_\ba_\br_\bt_\b__\bp_\bo_\bi_\bn_\bt, -\b--\b-o\bor\brd\bde\ber\br-\b-s\bst\bta\bar\brt\bt=_\bs_\bt_\ba_\br_\bt_\b__\bp_\bo_\bi_\bn_\bt
-                 When generating LDIF output, use the number specified by
-                 _\bs_\bt_\ba_\br_\bt_\b__\bp_\bo_\bi_\bn_\bt in the sudoOrder attribute of the first sudoRole
-                 object.  Subsequent sudoRole object use a sudoOrder value
-                 generated by adding an _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt, see the -\b-I\bI option for
-                 details.  Defaults to a starting point of 1.  A starting
-                 point of 0 will disable the generation of sudoOrder
-                 attributes in the resulting LDIF file.
-
-     -\b-p\bp, -\b--\b-p\bpr\bru\bun\bne\be-\b-m\bma\bat\btc\bch\bhe\bes\bs
-                 When the -\b-m\bm option is also specified, c\bcv\bvt\bts\bsu\bud\bdo\boe\ber\brs\bs will prune
-                 out non-matching users, groups and hosts from matching
-                 entries.
-
-     -\b-P\bP _\bp_\ba_\bd_\bd_\bi_\bn_\bg, -\b--\b-p\bpa\bad\bdd\bdi\bin\bng\bg=_\bp_\ba_\bd_\bd_\bi_\bn_\bg
-                 When generating LDIF output, construct the initial sudoOrder
-                 value by concatenating _\bo_\br_\bd_\be_\br_\b__\bs_\bt_\ba_\br_\bt and _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt, padding the
-                 _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt with zeros until it consists of _\bp_\ba_\bd_\bd_\bi_\bn_\bg digits.
-                 For example, if _\bo_\br_\bd_\be_\br_\b__\bs_\bt_\ba_\br_\bt is 1027, _\bp_\ba_\bd_\bd_\bi_\bn_\bg is 3, and
-                 _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt is 1, the value of sudoOrder for the first entry
-                 will be 1027000, followed by 1027001, 1027002, etc.  If the
-                 number of sudoRole entries is larger than the padding would
-                 allow, c\bcv\bvt\bts\bsu\bud\bdo\boe\ber\brs\bs will exit with an error.  By default, no
-                 padding is performed.
-
-     -\b-s\bs _\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs, -\b--\b-s\bsu\bup\bpp\bpr\bre\bes\bss\bs=_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs
-                 Suppress the output of specific _\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs of the security
-                 policy.  One or more section names may be specified,
-                 separated by a comma (`,').  The supported section name are:
-                 d\bde\bef\bfa\bau\bul\blt\bts\bs, a\bal\bli\bia\bas\bse\bes\bs and p\bpr\bri\biv\bvi\bil\ble\beg\bge\bes\bs (which may be shortened to
-                 p\bpr\bri\biv\bvs\bs).
-
-     -\b-V\bV, -\b--\b-v\bve\ber\brs\bsi\bio\bon\bn
-                 Print the c\bcv\bvt\bts\bsu\bud\bdo\boe\ber\brs\bs and _\bs_\bu_\bd_\bo_\be_\br_\bs grammar versions and exit.
-
-     Options in the form "keyword = value" may also be specified in a
-     configuration file, _\b/_\be_\bt_\bc_\b/_\bc_\bv_\bt_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bc_\bo_\bn_\bf by default.  The following
-     keywords are recognized:
-
-     d\bde\bef\bfa\bau\bul\blt\bts\bs =\b= _\bd_\be_\bf_\bt_\by_\bp_\be_\bs
-           See the description of the -\b-d\bd command line option.
-
-     e\bex\bxp\bpa\ban\bnd\bd_\b_a\bal\bli\bia\bas\bse\bes\bs =\b= _\by_\be_\bs | _\bn_\bo
-           See the description of the -\b-e\be command line option.
-
-     i\bin\bnp\bpu\but\bt_\b_f\bfo\bor\brm\bma\bat\bt =\b= _\bl_\bd_\bi_\bf | _\bs_\bu_\bd_\bo_\be_\br_\bs
-           See the description of the -\b-i\bi command line option.
-
-     m\bma\bat\btc\bch\bh =\b= _\bf_\bi_\bl_\bt_\be_\br
-           See the description of the -\b-m\bm command line option.
-
-     o\bor\brd\bde\ber\br_\b_i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bt =\b= _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt
-           See the description of the -\b-I\bI command line option.
-
-     o\bor\brd\bde\ber\br_\b_s\bst\bta\bar\brt\bt =\b= _\bs_\bt_\ba_\br_\bt_\b__\bp_\bo_\bi_\bn_\bt
-           See the description of the -\b-O\bO command line option.
-
-     o\bou\but\btp\bpu\but\bt_\b_f\bfo\bor\brm\bma\bat\bt =\b= _\bj_\bs_\bo_\bn | _\bl_\bd_\bi_\bf | _\bs_\bu_\bd_\bo_\be_\br_\bs
-           See the description of the -\b-f\bf command line option.
-
-     p\bpa\bad\bdd\bdi\bin\bng\bg =\b= _\bp_\ba_\bd_\bd_\bi_\bn_\bg
-           See the description of the -\b-P\bP command line option.
-
-     p\bpr\bru\bun\bne\be_\b_m\bma\bat\btc\bch\bhe\bes\bs =\b= _\by_\be_\bs | _\bn_\bo
-           See the description of the -\b-p\bp command line option.
-
-     s\bsu\bud\bdo\boe\ber\brs\bs_\b_b\bba\bas\bse\be =\b= _\bd_\bn
-           See the description of the -\b-b\bb command line option.
-
-     s\bsu\bup\bpp\bpr\bre\bes\bss\bs =\b= _\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs
-           See the description of the -\b-s\bs command line option.
-
-     Options on the command line will override values from the configuration
-     file.
-
-F\bFI\bIL\bLE\bES\bS
-     _\b/_\be_\bt_\bc_\b/_\bc_\bv_\bt_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bc_\bo_\bn_\bf      default configuration for cvtsudoers
-
-E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
-     Convert _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs to LDIF (LDAP Data Interchange Format) where the
-     _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf file uses a _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bb_\ba_\bs_\be of my-domain,dc=com, storing the
-     result in _\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bl_\bd_\bi_\bf:
-
-           $ cvtsudoers -b ou=SUDOers,dc=my-domain,dc=com -o sudoers.ldif \
-                        /etc/sudoers
-
-     Convert _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs to JSON format, storing the result in _\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bj_\bs_\bo_\bn:
-
-           $ cvtsudoers -f json -o sudoers.json /etc/sudoers
-
-     Parse _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs and display only rules that match user _\ba_\bm_\bb_\br_\bo_\bs_\be on host
-     _\bh_\ba_\bs_\bt_\bu_\br:
-
-           $ cvtsudoers -f sudoers -m user=ambrose,host=hastur /etc/sudoers
-
-     Same as above, but expand aliases and prune out any non-matching users
-     and hosts from the expanded entries.
-
-           $ cvtsudoers -ep -f sudoers -m user=ambrose,host=hastur /etc/sudoers
-
-     Convert _\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bl_\bd_\bi_\bf from LDIF to traditional _\bs_\bu_\bd_\bo_\be_\br_\bs format:
-
-           $ cvtsudoers -i ldif -f sudoers -o sudoers.new sudoers.ldif
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     sudoers(4), sudoers.ldap(4), sudo(1m)
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-B\bBU\bUG\bGS\bS
-     If you feel you have found a bug in c\bcv\bvt\bts\bsu\bud\bdo\boe\ber\brs\bs, please submit a bug
-     report at https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     c\bcv\bvt\bts\bsu\bud\bdo\boe\ber\brs\bs is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                    December 11, 2018                   Sudo 1.8.28
diff --git a/doc/sudo.cat b/doc/sudo.cat
deleted file mode 100644 (file)
index 32a808a..0000000
+++ /dev/null
@@ -1,745 +0,0 @@
-SUDO(1m)                     System Manager's Manual                    SUDO(1m)
-
-N\bNA\bAM\bME\bE
-     s\bsu\bud\bdo\bo, s\bsu\bud\bdo\boe\bed\bdi\bit\bt - execute a command as another user
-
-S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
-     s\bsu\bud\bdo\bo -\b-h\bh | -\b-K\bK | -\b-k\bk | -\b-V\bV
-     s\bsu\bud\bdo\bo -\b-v\bv [-\b-A\bAB\bBk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt] [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-u\bu _\bu_\bs_\be_\br]
-     s\bsu\bud\bdo\bo -\b-l\bl [-\b-A\bAB\bBk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt] [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-U\bU _\bu_\bs_\be_\br]
-          [-\b-u\bu _\bu_\bs_\be_\br] [_\bc_\bo_\bm_\bm_\ba_\bn_\bd]
-     s\bsu\bud\bdo\bo [-\b-A\bAB\bBb\bbE\bEH\bHn\bnP\bPS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-C\bC _\bn_\bu_\bm] [-\b-c\bc _\bc_\bl_\ba_\bs_\bs] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt]
-          [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-r\br _\br_\bo_\bl_\be] [-\b-t\bt _\bt_\by_\bp_\be] [-\b-T\bT _\bt_\bi_\bm_\be_\bo_\bu_\bt] [-\b-u\bu _\bu_\bs_\be_\br] [_\bV_\bA_\bR=_\bv_\ba_\bl_\bu_\be]
-          [-\b-i\bi | -\b-s\bs] [_\bc_\bo_\bm_\bm_\ba_\bn_\bd]
-     s\bsu\bud\bdo\boe\bed\bdi\bit\bt [-\b-A\bAB\bBk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-C\bC _\bn_\bu_\bm] [-\b-c\bc _\bc_\bl_\ba_\bs_\bs] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt]
-              [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-T\bT _\bt_\bi_\bm_\be_\bo_\bu_\bt] [-\b-u\bu _\bu_\bs_\be_\br] _\bf_\bi_\bl_\be _\b._\b._\b.
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     s\bsu\bud\bdo\bo allows a permitted user to execute a _\bc_\bo_\bm_\bm_\ba_\bn_\bd as the superuser or
-     another user, as specified by the security policy.  The invoking user's
-     real (_\bn_\bo_\bt effective) user ID is used to determine the user name with
-     which to query the security policy.
-
-     s\bsu\bud\bdo\bo supports a plugin architecture for security policies and
-     input/output logging.  Third parties can develop and distribute their own
-     policy and I/O logging plugins to work seamlessly with the s\bsu\bud\bdo\bo front
-     end.  The default security policy is _\bs_\bu_\bd_\bo_\be_\br_\bs, which is configured via the
-     file _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs, or via LDAP.  See the _\bP_\bl_\bu_\bg_\bi_\bn_\bs section for more
-     information.
-
-     The security policy determines what privileges, if any, a user has to run
-     s\bsu\bud\bdo\bo.  The policy may require that users authenticate themselves with a
-     password or another authentication mechanism.  If authentication is
-     required, s\bsu\bud\bdo\bo will exit if the user's password is not entered within a
-     configurable time limit.  This limit is policy-specific; the default
-     password prompt timeout for the _\bs_\bu_\bd_\bo_\be_\br_\bs security policy is 5 minutes.
-
-     Security policies may support credential caching to allow the user to run
-     s\bsu\bud\bdo\bo again for a period of time without requiring authentication.  The
-     _\bs_\bu_\bd_\bo_\be_\br_\bs policy caches credentials for 5 minutes, unless overridden in
-     sudoers(4).  By running s\bsu\bud\bdo\bo with the -\b-v\bv option, a user can update the
-     cached credentials without running a _\bc_\bo_\bm_\bm_\ba_\bn_\bd.
-
-     When invoked as s\bsu\bud\bdo\boe\bed\bdi\bit\bt, the -\b-e\be option (described below), is implied.
-
-     Security policies may log successful and failed attempts to use s\bsu\bud\bdo\bo.  If
-     an I/O plugin is configured, the running command's input and output may
-     be logged as well.
-
-     The options are as follows:
-
-     -\b-A\bA, -\b--\b-a\bas\bsk\bkp\bpa\bas\bss\bs
-                 Normally, if s\bsu\bud\bdo\bo requires a password, it will read it from
-                 the user's terminal.  If the -\b-A\bA (_\ba_\bs_\bk_\bp_\ba_\bs_\bs) option is
-                 specified, a (possibly graphical) helper program is executed
-                 to read the user's password and output the password to the
-                 standard output.  If the SUDO_ASKPASS environment variable is
-                 set, it specifies the path to the helper program.  Otherwise,
-                 if sudo.conf(4) contains a line specifying the askpass
-                 program, that value will be used.  For example:
-
-                     # Path to askpass helper program
-                     Path askpass /usr/X11R6/bin/ssh-askpass
-
-                 If no askpass program is available, s\bsu\bud\bdo\bo will exit with an
-                 error.
-
-     -\b-a\ba _\bt_\by_\bp_\be, -\b--\b-a\bau\but\bth\bh-\b-t\bty\byp\bpe\be=_\bt_\by_\bp_\be
-                 Use the specified BSD authentication _\bt_\by_\bp_\be when validating the
-                 user, if allowed by _\b/_\be_\bt_\bc_\b/_\bl_\bo_\bg_\bi_\bn_\b._\bc_\bo_\bn_\bf.  The system
-                 administrator may specify a list of sudo-specific
-                 authentication methods by adding an "auth-sudo" entry in
-                 _\b/_\be_\bt_\bc_\b/_\bl_\bo_\bg_\bi_\bn_\b._\bc_\bo_\bn_\bf.  This option is only available on systems
-                 that support BSD authentication.
-
-     -\b-B\bB, -\b--\b-b\bbe\bel\bll\bl  Ring the bell as part of the password promp when a terminal
-                 is present.  This option has no effect if an askpass program
-                 is used.
-
-     -\b-b\bb, -\b--\b-b\bba\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd
-                 Run the given command in the background.  Note that it is not
-                 possible to use shell job control to manipulate background
-                 processes started by s\bsu\bud\bdo\bo.  Most interactive commands will
-                 fail to work properly in background mode.
-
-     -\b-C\bC _\bn_\bu_\bm, -\b--\b-c\bcl\blo\bos\bse\be-\b-f\bfr\bro\bom\bm=_\bn_\bu_\bm
-                 Close all file descriptors greater than or equal to _\bn_\bu_\bm
-                 before executing a command.  Values less than three are not
-                 permitted.  By default, s\bsu\bud\bdo\bo will close all open file
-                 descriptors other than standard input, standard output and
-                 standard error when executing a command.  The security policy
-                 may restrict the user's ability to use this option.  The
-                 _\bs_\bu_\bd_\bo_\be_\br_\bs policy only permits use of the -\b-C\bC option when the
-                 administrator has enabled the _\bc_\bl_\bo_\bs_\be_\bf_\br_\bo_\bm_\b__\bo_\bv_\be_\br_\br_\bi_\bd_\be option.
-
-     -\b-c\bc _\bc_\bl_\ba_\bs_\bs, -\b--\b-l\blo\bog\bgi\bin\bn-\b-c\bcl\bla\bas\bss\bs=_\bc_\bl_\ba_\bs_\bs
-                 Run the command with resource limits and scheduling priority
-                 of the specified login _\bc_\bl_\ba_\bs_\bs.  The _\bc_\bl_\ba_\bs_\bs argument can be
-                 either a class name as defined in _\b/_\be_\bt_\bc_\b/_\bl_\bo_\bg_\bi_\bn_\b._\bc_\bo_\bn_\bf, or a
-                 single `-' character.  If _\bc_\bl_\ba_\bs_\bs is -\b-, the default login class
-                 of the target user will be used.  Otherwise, the command must
-                 be run as the superuser (user ID 0), or s\bsu\bud\bdo\bo must be run from
-                 a shell that is already running as the superuser.  If the
-                 command is being run as a login shell, additional
-                 _\b/_\be_\bt_\bc_\b/_\bl_\bo_\bg_\bi_\bn_\b._\bc_\bo_\bn_\bf settings, such as the umask and environment
-                 variables, will be applied, if present.  This option is only
-                 available on systems with BSD login classes.
-
-     -\b-E\bE, -\b--\b-p\bpr\bre\bes\bse\ber\brv\bve\be-\b-e\ben\bnv\bv
-                 Indicates to the security policy that the user wishes to
-                 preserve their existing environment variables.  The security
-                 policy may return an error if the user does not have
-                 permission to preserve the environment.
-
-     -\b--\b-p\bpr\bre\bes\bse\ber\brv\bve\be-\b-e\ben\bnv\bv=\b=l\bli\bis\bst\bt
-                 Indicates to the security policy that the user wishes to add
-                 the comma-separated list of environment variables to those
-                 preserved from the user's environment.  The security policy
-                 may return an error if the user does not have permission to
-                 preserve the environment.
-
-     -\b-e\be, -\b--\b-e\bed\bdi\bit\bt  Edit one or more files instead of running a command.  In lieu
-                 of a path name, the string "sudoedit" is used when consulting
-                 the security policy.  If the user is authorized by the
-                 policy, the following steps are taken:
-
-                  1.   Temporary copies are made of the files to be edited
-                       with the owner set to the invoking user.
-
-                  2.   The editor specified by the policy is run to edit the
-                       temporary files.  The _\bs_\bu_\bd_\bo_\be_\br_\bs policy uses the
-                       SUDO_EDITOR, VISUAL and EDITOR environment variables
-                       (in that order).  If none of SUDO_EDITOR, VISUAL or
-                       EDITOR are set, the first program listed in the _\be_\bd_\bi_\bt_\bo_\br
-                       sudoers(4) option is used.
-
-                  3.   If they have been modified, the temporary files are
-                       copied back to their original location and the
-                       temporary versions are removed.
-
-                 To help prevent the editing of unauthorized files, the
-                 following restrictions are enforced unless explicitly allowed
-                 by the security policy:
-
-                  +\b+\bo\bo  Symbolic links may not be edited (version 1.8.15 and
-                     higher).
-
-                  +\b+\bo\bo  Symbolic links along the path to be edited are not
-                     followed when the parent directory is writable by the
-                     invoking user unless that user is root (version 1.8.16
-                     and higher).
-
-                  +\b+\bo\bo  Files located in a directory that is writable by the
-                     invoking user may not be edited unless that user is root
-                     (version 1.8.16 and higher).
-
-                 Users are never allowed to edit device special files.
-
-                 If the specified file does not exist, it will be created.
-                 Note that unlike most commands run by _\bs_\bu_\bd_\bo, the editor is run
-                 with the invoking user's environment unmodified.  If, for
-                 some reason, s\bsu\bud\bdo\bo is unable to update a file with its edited
-                 version, the user will receive a warning and the edited copy
-                 will remain in a temporary file.
-
-     -\b-g\bg _\bg_\br_\bo_\bu_\bp, -\b--\b-g\bgr\bro\bou\bup\bp=_\bg_\br_\bo_\bu_\bp
-                 Run the command with the primary group set to _\bg_\br_\bo_\bu_\bp instead
-                 of the primary group specified by the target user's password
-                 database entry.  The _\bg_\br_\bo_\bu_\bp may be either a group name or a
-                 numeric group ID (GID) prefixed with the `#' character (e.g.,
-                 #0 for GID 0).  When running a command as a GID, many shells
-                 require that the `#' be escaped with a backslash (`\').  If
-                 no -\b-u\bu option is specified, the command will be run as the
-                 invoking user.  In either case, the primary group will be set
-                 to _\bg_\br_\bo_\bu_\bp.  The _\bs_\bu_\bd_\bo_\be_\br_\bs policy permits any of the target
-                 user's groups to be specified via the -\b-g\bg option as long as
-                 the -\b-P\bP option is not in use.
-
-     -\b-H\bH, -\b--\b-s\bse\bet\bt-\b-h\bho\bom\bme\be
-                 Request that the security policy set the HOME environment
-                 variable to the home directory specified by the target user's
-                 password database entry.  Depending on the policy, this may
-                 be the default behavior.
-
-     -\b-h\bh, -\b--\b-h\bhe\bel\blp\bp  Display a short help message to the standard output and exit.
-
-     -\b-h\bh _\bh_\bo_\bs_\bt, -\b--\b-h\bho\bos\bst\bt=_\bh_\bo_\bs_\bt
-                 Run the command on the specified _\bh_\bo_\bs_\bt if the security policy
-                 plugin supports remote commands.  Note that the _\bs_\bu_\bd_\bo_\be_\br_\bs
-                 plugin does not currently support running remote commands.
-                 This may also be used in conjunction with the -\b-l\bl option to
-                 list a user's privileges for the remote host.
-
-     -\b-i\bi, -\b--\b-l\blo\bog\bgi\bin\bn
-                 Run the shell specified by the target user's password
-                 database entry as a login shell.  This means that login-
-                 specific resource files such as _\b._\bp_\br_\bo_\bf_\bi_\bl_\be, _\b._\bb_\ba_\bs_\bh_\b__\bp_\br_\bo_\bf_\bi_\bl_\be or
-                 _\b._\bl_\bo_\bg_\bi_\bn will be read by the shell.  If a command is specified,
-                 it is passed to the shell for execution via the shell's -\b-c\bc
-                 option.  If no command is specified, an interactive shell is
-                 executed.  s\bsu\bud\bdo\bo attempts to change to that user's home
-                 directory before running the shell.  The command is run with
-                 an environment similar to the one a user would receive at log
-                 in.  Note that most shells behave differently when a command
-                 is specified as compared to an interactive session; consult
-                 the shell's manual for details.  The _\bC_\bo_\bm_\bm_\ba_\bn_\bd _\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt
-                 section in the sudoers(4) manual documents how the -\b-i\bi option
-                 affects the environment in which a command is run when the
-                 _\bs_\bu_\bd_\bo_\be_\br_\bs policy is in use.
-
-     -\b-K\bK, -\b--\b-r\bre\bem\bmo\bov\bve\be-\b-t\bti\bim\bme\bes\bst\bta\bam\bmp\bp
-                 Similar to the -\b-k\bk option, except that it removes the user's
-                 cached credentials entirely and may not be used in
-                 conjunction with a command or other option.  This option does
-                 not require a password.  Not all security policies support
-                 credential caching.
-
-     -\b-k\bk, -\b--\b-r\bre\bes\bse\bet\bt-\b-t\bti\bim\bme\bes\bst\bta\bam\bmp\bp
-                 When used without a command, invalidates the user's cached
-                 credentials.  In other words, the next time s\bsu\bud\bdo\bo is run a
-                 password will be required.  This option does not require a
-                 password and was added to allow a user to revoke s\bsu\bud\bdo\bo
-                 permissions from a _\b._\bl_\bo_\bg_\bo_\bu_\bt file.
-
-                 When used in conjunction with a command or an option that may
-                 require a password, this option will cause s\bsu\bud\bdo\bo to ignore the
-                 user's cached credentials.  As a result, s\bsu\bud\bdo\bo will prompt for
-                 a password (if one is required by the security policy) and
-                 will not update the user's cached credentials.
-
-                 Not all security policies support credential caching.
-
-     -\b-l\bl, -\b--\b-l\bli\bis\bst\bt  If no _\bc_\bo_\bm_\bm_\ba_\bn_\bd is specified, list the allowed (and forbidden)
-                 commands for the invoking user (or the user specified by the
-                 -\b-U\bU option) on the current host.  A longer list format is used
-                 if this option is specified multiple times and the security
-                 policy supports a verbose output format.
-
-                 If a _\bc_\bo_\bm_\bm_\ba_\bn_\bd is specified and is permitted by the security
-                 policy, the fully-qualified path to the command is displayed
-                 along with any command line arguments.  If a _\bc_\bo_\bm_\bm_\ba_\bn_\bd is
-                 specified but not allowed by the policy, s\bsu\bud\bdo\bo will exit with
-                 a status value of 1.
-
-     -\b-n\bn, -\b--\b-n\bno\bon\bn-\b-i\bin\bnt\bte\ber\bra\bac\bct\bti\biv\bve\be
-                 Avoid prompting the user for input of any kind.  If a
-                 password is required for the command to run, s\bsu\bud\bdo\bo will
-                 display an error message and exit.
-
-     -\b-P\bP, -\b--\b-p\bpr\bre\bes\bse\ber\brv\bve\be-\b-g\bgr\bro\bou\bup\bps\bs
-                 Preserve the invoking user's group vector unaltered.  By
-                 default, the _\bs_\bu_\bd_\bo_\be_\br_\bs policy will initialize the group vector
-                 to the list of groups the target user is a member of.  The
-                 real and effective group IDs, however, are still set to match
-                 the target user.
-
-     -\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt, -\b--\b-p\bpr\bro\bom\bmp\bpt\bt=_\bp_\br_\bo_\bm_\bp_\bt
-                 Use a custom password prompt with optional escape sequences.
-                 The following percent (`%') escape sequences are supported by
-                 the _\bs_\bu_\bd_\bo_\be_\br_\bs policy:
-
-                 %H  expanded to the host name including the domain name (on
-                     if the machine's host name is fully qualified or the _\bf_\bq_\bd_\bn
-                     option is set in sudoers(4))
-
-                 %h  expanded to the local host name without the domain name
-
-                 %p  expanded to the name of the user whose password is being
-                     requested (respects the _\br_\bo_\bo_\bt_\bp_\bw, _\bt_\ba_\br_\bg_\be_\bt_\bp_\bw, and _\br_\bu_\bn_\ba_\bs_\bp_\bw
-                     flags in sudoers(4))
-
-                 %U  expanded to the login name of the user the command will
-                     be run as (defaults to root unless the -\b-u\bu option is also
-                     specified)
-
-                 %u  expanded to the invoking user's login name
-
-                 %%  two consecutive `%' characters are collapsed into a
-                     single `%' character
-
-                 The custom prompt will override the default prompt specified
-                 by either the security policy or the SUDO_PROMPT environment
-                 variable.  On systems that use PAM, the custom prompt will
-                 also override the prompt specified by a PAM module unless the
-                 _\bp_\ba_\bs_\bs_\bp_\br_\bo_\bm_\bp_\bt_\b__\bo_\bv_\be_\br_\br_\bi_\bd_\be flag is disabled in _\bs_\bu_\bd_\bo_\be_\br_\bs.
-
-     -\b-r\br _\br_\bo_\bl_\be, -\b--\b-r\bro\bol\ble\be=_\br_\bo_\bl_\be
-                 Run the command with an SELinux security context that
-                 includes the specified _\br_\bo_\bl_\be.
-
-     -\b-S\bS, -\b--\b-s\bst\btd\bdi\bin\bn
-                 Write the prompt to the standard error and read the password
-                 from the standard input instead of using the terminal device.
-
-     -\b-s\bs, -\b--\b-s\bsh\bhe\bel\bll\bl
-                 Run the shell specified by the SHELL environment variable if
-                 it is set or the shell specified by the invoking user's
-                 password database entry.  If a command is specified, it is
-                 passed to the shell for execution via the shell's -\b-c\bc option.
-                 If no command is specified, an interactive shell is executed.
-                 Note that most shells behave differently when a command is
-                 specified as compared to an interactive session; consult the
-                 shell's manual for details.
-
-     -\b-t\bt _\bt_\by_\bp_\be, -\b--\b-t\bty\byp\bpe\be=_\bt_\by_\bp_\be
-                 Run the command with an SELinux security context that
-                 includes the specified _\bt_\by_\bp_\be.  If no _\bt_\by_\bp_\be is specified, the
-                 default type is derived from the role.
-
-     -\b-U\bU _\bu_\bs_\be_\br, -\b--\b-o\bot\bth\bhe\ber\br-\b-u\bus\bse\ber\br=_\bu_\bs_\be_\br
-                 Used in conjunction with the -\b-l\bl option to list the privileges
-                 for _\bu_\bs_\be_\br instead of for the invoking user.  The security
-                 policy may restrict listing other users' privileges.  The
-                 _\bs_\bu_\bd_\bo_\be_\br_\bs policy only allows root or a user with the ALL
-                 privilege on the current host to use this option.
-
-     -\b-T\bT _\bt_\bi_\bm_\be_\bo_\bu_\bt, -\b--\b-c\bco\bom\bmm\bma\ban\bnd\bd-\b-t\bti\bim\bme\beo\bou\but\bt=_\bt_\bi_\bm_\be_\bo_\bu_\bt
-                 Used to set a timeout for the command.  If the timeout
-                 expires before the command has exited, the command will be
-                 terminated.  The security policy may restrict the ability to
-                 set command timeouts.  The _\bs_\bu_\bd_\bo_\be_\br_\bs policy requires that user-
-                 specified timeouts be explicitly enabled.
-
-     -\b-u\bu _\bu_\bs_\be_\br, -\b--\b-u\bus\bse\ber\br=_\bu_\bs_\be_\br
-                 Run the command as a user other than the default target user
-                 (usually _\br_\bo_\bo_\bt).  The _\bu_\bs_\be_\br may be either a user name or a
-                 numeric user ID (UID) prefixed with the `#' character (e.g.,
-                 #0 for UID 0).  When running commands as a UID, many shells
-                 require that the `#' be escaped with a backslash (`\').  Some
-                 security policies may restrict UIDs to those listed in the
-                 password database.  The _\bs_\bu_\bd_\bo_\be_\br_\bs policy allows UIDs that are
-                 not in the password database as long as the _\bt_\ba_\br_\bg_\be_\bt_\bp_\bw option
-                 is not set.  Other security policies may not support this.
-
-     -\b-V\bV, -\b--\b-v\bve\ber\brs\bsi\bio\bon\bn
-                 Print the s\bsu\bud\bdo\bo version string as well as the version string
-                 of the security policy plugin and any I/O plugins.  If the
-                 invoking user is already root the -\b-V\bV option will display the
-                 arguments passed to configure when s\bsu\bud\bdo\bo was built and plugins
-                 may display more verbose information such as default options.
-
-     -\b-v\bv, -\b--\b-v\bva\bal\bli\bid\bda\bat\bte\be
-                 Update the user's cached credentials, authenticating the user
-                 if necessary.  For the _\bs_\bu_\bd_\bo_\be_\br_\bs plugin, this extends the s\bsu\bud\bdo\bo
-                 timeout for another 5 minutes by default, but does not run a
-                 command.  Not all security policies support cached
-                 credentials.
-
-     -\b--\b-          The -\b--\b- option indicates that s\bsu\bud\bdo\bo should stop processing
-                 command line arguments.
-
-     Environment variables to be set for the command may also be passed on the
-     command line in the form of _\bV_\bA_\bR=_\bv_\ba_\bl_\bu_\be, e.g.,
-     LD_LIBRARY_PATH=_\b/_\bu_\bs_\br_\b/_\bl_\bo_\bc_\ba_\bl_\b/_\bp_\bk_\bg_\b/_\bl_\bi_\bb.  Variables passed on the command line
-     are subject to restrictions imposed by the security policy plugin.  The
-     _\bs_\bu_\bd_\bo_\be_\br_\bs policy subjects variables passed on the command line to the same
-     restrictions as normal environment variables with one important
-     exception.  If the _\bs_\be_\bt_\be_\bn_\bv option is set in _\bs_\bu_\bd_\bo_\be_\br_\bs, the command to be run
-     has the SETENV tag set or the command matched is ALL, the user may set
-     variables that would otherwise be forbidden.  See sudoers(4) for more
-     information.
-
-C\bCO\bOM\bMM\bMA\bAN\bND\bD E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN
-     When s\bsu\bud\bdo\bo executes a command, the security policy specifies the execution
-     environment for the command.  Typically, the real and effective user and
-     group and IDs are set to match those of the target user, as specified in
-     the password database, and the group vector is initialized based on the
-     group database (unless the -\b-P\bP option was specified).
-
-     The following parameters may be specified by security policy:
-
-     +\b+\bo\bo  real and effective user ID
-
-     +\b+\bo\bo  real and effective group ID
-
-     +\b+\bo\bo  supplementary group IDs
-
-     +\b+\bo\bo  the environment list
-
-     +\b+\bo\bo  current working directory
-
-     +\b+\bo\bo  file creation mode mask (umask)
-
-     +\b+\bo\bo  SELinux role and type
-
-     +\b+\bo\bo  Solaris project
-
-     +\b+\bo\bo  Solaris privileges
-
-     +\b+\bo\bo  BSD login class
-
-     +\b+\bo\bo  scheduling priority (aka nice value)
-
-   P\bPr\bro\boc\bce\bes\bss\bs m\bmo\bod\bde\bel\bl
-     There are two distinct ways s\bsu\bud\bdo\bo can run a command.
-
-     If an I/O logging plugin is configured or if the security policy
-     explicitly requests it, a new pseudo-terminal ("pty") is allocated and
-     fork(2) is used to create a second s\bsu\bud\bdo\bo process, referred to as the
-     _\bm_\bo_\bn_\bi_\bt_\bo_\br.  The _\bm_\bo_\bn_\bi_\bt_\bo_\br creates a new terminal session with itself as the
-     leader and the pty as its controlling terminal, calls fork(2), sets up
-     the execution environment as described above, and then uses the execve(2)
-     system call to run the command in the child process.  The _\bm_\bo_\bn_\bi_\bt_\bo_\br exists
-     to relay job control signals between the user's existing terminal and the
-     pty the command is being run in.  This makes it possible to suspend and
-     resume the command.  Without the monitor, the command would be in what
-     POSIX terms an "orphaned process group" and it would not receive any job
-     control signals from the kernel.  When the command exits or is terminated
-     by a signal, the _\bm_\bo_\bn_\bi_\bt_\bo_\br passes the command's exit status to the main
-     s\bsu\bud\bdo\bo process and exits.  After receiving the command's exit status, the
-     main s\bsu\bud\bdo\bo passes the command's exit status to the security policy's close
-     function and exits.
-
-     If no pty is used, s\bsu\bud\bdo\bo calls fork(2), sets up the execution environment
-     as described above, and uses the execve(2) system call to run the command
-     in the child process.  The main s\bsu\bud\bdo\bo process waits until the command has
-     completed, then passes the command's exit status to the security policy's
-     close function and exits.  As a special case, if the policy plugin does
-     not define a close function, s\bsu\bud\bdo\bo will execute the command directly
-     instead of calling fork(2) first.  The _\bs_\bu_\bd_\bo_\be_\br_\bs policy plugin will only
-     define a close function when I/O logging is enabled, a pty is required,
-     or the _\bp_\ba_\bm_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn or _\bp_\ba_\bm_\b__\bs_\be_\bt_\bc_\br_\be_\bd options are enabled.  Note that
-     _\bp_\ba_\bm_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn and _\bp_\ba_\bm_\b__\bs_\be_\bt_\bc_\br_\be_\bd are enabled by default on systems using PAM.
-
-   S\bSi\big\bgn\bna\bal\bl h\bha\ban\bnd\bdl\bli\bin\bng\bg
-     When the command is run as a child of the s\bsu\bud\bdo\bo process, s\bsu\bud\bdo\bo will relay
-     signals it receives to the command.  The SIGINT and SIGQUIT signals are
-     only relayed when the command is being run in a new pty or when the
-     signal was sent by a user process, not the kernel.  This prevents the
-     command from receiving SIGINT twice each time the user enters control-C.
-     Some signals, such as SIGSTOP and SIGKILL, cannot be caught and thus will
-     not be relayed to the command.  As a general rule, SIGTSTP should be used
-     instead of SIGSTOP when you wish to suspend a command being run by s\bsu\bud\bdo\bo.
-
-     As a special case, s\bsu\bud\bdo\bo will not relay signals that were sent by the
-     command it is running.  This prevents the command from accidentally
-     killing itself.  On some systems, the reboot(1m) command sends SIGTERM to
-     all non-system processes other than itself before rebooting the system.
-     This prevents s\bsu\bud\bdo\bo from relaying the SIGTERM signal it received back to
-     reboot(1m), which might then exit before the system was actually rebooted,
-     leaving it in a half-dead state similar to single user mode.  Note,
-     however, that this check only applies to the command run by s\bsu\bud\bdo\bo and not
-     any other processes that the command may create.  As a result, running a
-     script that calls reboot(1m) or shutdown(1m) via s\bsu\bud\bdo\bo may cause the system
-     to end up in this undefined state unless the reboot(1m) or shutdown(1m) are
-     run using the e\bex\bxe\bec\bc() family of functions instead of s\bsy\bys\bst\bte\bem\bm() (which
-     interposes a shell between the command and the calling process).
-
-     If no I/O logging plugins are loaded and the policy plugin has not
-     defined a c\bcl\blo\bos\bse\be() function, set a command timeout or required that the
-     command be run in a new pty, s\bsu\bud\bdo\bo may execute the command directly
-     instead of running it as a child process.
-
-   P\bPl\blu\bug\bgi\bin\bns\bs
-     Plugins may be specified via Plugin directives in the sudo.conf(4) file.
-     They may be loaded as dynamic shared objects (on systems that support
-     them), or compiled directly into the s\bsu\bud\bdo\bo binary.  If no sudo.conf(4)
-     file is present, or it contains no Plugin lines, s\bsu\bud\bdo\bo will use the
-     traditional _\bs_\bu_\bd_\bo_\be_\br_\bs security policy and I/O logging.  See the
-     sudo.conf(4) manual for details of the _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf file and the
-     sudo_plugin(4) manual for more information about the s\bsu\bud\bdo\bo plugin
-     architecture.
-
-E\bEX\bXI\bIT\bT V\bVA\bAL\bLU\bUE\bE
-     Upon successful execution of a command, the exit status from s\bsu\bud\bdo\bo will be
-     the exit status of the program that was executed.  If the command
-     terminated due to receipt of a signal, s\bsu\bud\bdo\bo will send itself the same
-     signal that terminated the command.
-
-     If the -\b-l\bl option was specified without a command, s\bsu\bud\bdo\bo will exit with a
-     value of 0 if the user is allowed to run s\bsu\bud\bdo\bo and they authenticated
-     successfully (as required by the security policy).  If a command is
-     specified with the -\b-l\bl option, the exit value will only be 0 if the
-     command is permitted by the security policy, otherwise it will be 1.
-
-     If there is an authentication failure, a configuration/permission problem
-     or if the given command cannot be executed, s\bsu\bud\bdo\bo exits with a value of 1.
-     In the latter case, the error string is printed to the standard error.
-     If s\bsu\bud\bdo\bo cannot stat(2) one or more entries in the user's PATH, an error
-     is printed to the standard error.  (If the directory does not exist or if
-     it is not really a directory, the entry is ignored and no error is
-     printed.)  This should not happen under normal circumstances.  The most
-     common reason for stat(2) to return "permission denied" is if you are
-     running an automounter and one of the directories in your PATH is on a
-     machine that is currently unreachable.
-
-S\bSE\bEC\bCU\bUR\bRI\bIT\bTY\bY N\bNO\bOT\bTE\bES\bS
-     s\bsu\bud\bdo\bo tries to be safe when executing external commands.
-
-     To prevent command spoofing, s\bsu\bud\bdo\bo checks "." and "" (both denoting
-     current directory) last when searching for a command in the user's PATH
-     (if one or both are in the PATH).  Note, however, that the actual PATH
-     environment variable is _\bn_\bo_\bt modified and is passed unchanged to the
-     program that s\bsu\bud\bdo\bo executes.
-
-     Users should _\bn_\be_\bv_\be_\br be granted s\bsu\bud\bdo\bo privileges to execute files that are
-     writable by the user or that reside in a directory that is writable by
-     the user.  If the user can modify or replace the command there is no way
-     to limit what additional commands they can run.
-
-     Please note that s\bsu\bud\bdo\bo will normally only log the command it explicitly
-     runs.  If a user runs a command such as sudo su or sudo sh, subsequent
-     commands run from that shell are not subject to s\bsu\bud\bdo\bo's security policy.
-     The same is true for commands that offer shell escapes (including most
-     editors).  If I/O logging is enabled, subsequent commands will have their
-     input and/or output logged, but there will not be traditional logs for
-     those commands.  Because of this, care must be taken when giving users
-     access to commands via s\bsu\bud\bdo\bo to verify that the command does not
-     inadvertently give the user an effective root shell.  For more
-     information, please see the _\bP_\br_\be_\bv_\be_\bn_\bt_\bi_\bn_\bg _\bs_\bh_\be_\bl_\bl _\be_\bs_\bc_\ba_\bp_\be_\bs section in
-     sudoers(4).
-
-     To prevent the disclosure of potentially sensitive information, s\bsu\bud\bdo\bo
-     disables core dumps by default while it is executing (they are re-enabled
-     for the command that is run).  This historical practice dates from a time
-     when most operating systems allowed setuid processes to dump core by
-     default.  To aid in debugging s\bsu\bud\bdo\bo crashes, you may wish to re-enable
-     core dumps by setting "disable_coredump" to false in the sudo.conf(4)
-     file as follows:
-
-           Set disable_coredump false
-
-     See the sudo.conf(4) manual for more information.
-
-E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
-     s\bsu\bud\bdo\bo utilizes the following environment variables.  The security policy
-     has control over the actual content of the command's environment.
-
-     EDITOR           Default editor to use in -\b-e\be (sudoedit) mode if neither
-                      SUDO_EDITOR nor VISUAL is set.
-
-     MAIL             Set to the mail spool of the target user when the -\b-i\bi
-                      option is specified or when _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt is enabled in
-                      _\bs_\bu_\bd_\bo_\be_\br_\bs (unless MAIL is present in the _\be_\bn_\bv_\b__\bk_\be_\be_\bp list).
-
-     HOME             Set to the home directory of the target user when the -\b-i\bi
-                      or -\b-H\bH options are specified, when the -\b-s\bs option is
-                      specified and _\bs_\be_\bt_\b__\bh_\bo_\bm_\be is set in _\bs_\bu_\bd_\bo_\be_\br_\bs, when
-                      _\ba_\bl_\bw_\ba_\by_\bs_\b__\bs_\be_\bt_\b__\bh_\bo_\bm_\be is enabled in _\bs_\bu_\bd_\bo_\be_\br_\bs, or when _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt
-                      is enabled in _\bs_\bu_\bd_\bo_\be_\br_\bs and _\bH_\bO_\bM_\bE is not present in the
-                      _\be_\bn_\bv_\b__\bk_\be_\be_\bp list.
-
-     LOGNAME          Set to the login name of the target user when the -\b-i\bi
-                      option is specified, when the _\bs_\be_\bt_\b__\bl_\bo_\bg_\bn_\ba_\bm_\be option is
-                      enabled in _\bs_\bu_\bd_\bo_\be_\br_\bs or when the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is
-                      enabled in _\bs_\bu_\bd_\bo_\be_\br_\bs (unless LOGNAME is present in the
-                      _\be_\bn_\bv_\b__\bk_\be_\be_\bp list).
-
-     PATH             May be overridden by the security policy.
-
-     SHELL            Used to determine shell to run with -\b-s\bs option.
-
-     SUDO_ASKPASS     Specifies the path to a helper program used to read the
-                      password if no terminal is available or if the -\b-A\bA option
-                      is specified.
-
-     SUDO_COMMAND     Set to the command run by sudo.
-
-     SUDO_EDITOR      Default editor to use in -\b-e\be (sudoedit) mode.
-
-     SUDO_GID         Set to the group ID of the user who invoked sudo.
-
-     SUDO_PROMPT      Used as the default password prompt unless the -\b-p\bp option
-                      was specified.
-
-     SUDO_PS1         If set, PS1 will be set to its value for the program
-                      being run.
-
-     SUDO_UID         Set to the user ID of the user who invoked sudo.
-
-     SUDO_USER        Set to the login name of the user who invoked sudo.
-
-     USER             Set to the same value as LOGNAME, described above.
-
-     VISUAL           Default editor to use in -\b-e\be (sudoedit) mode if
-                      SUDO_EDITOR is not set.
-
-F\bFI\bIL\bLE\bES\bS
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf            s\bsu\bud\bdo\bo front end configuration
-
-E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
-     Note: the following examples assume a properly configured security
-     policy.
-
-     To get a file listing of an unreadable directory:
-
-           $ sudo ls /usr/local/protected
-
-     To list the home directory of user yaz on a machine where the file system
-     holding ~yaz is not exported as root:
-
-           $ sudo -u yaz ls ~yaz
-
-     To edit the _\bi_\bn_\bd_\be_\bx_\b._\bh_\bt_\bm_\bl file as user www:
-
-           $ sudoedit -u www ~www/htdocs/index.html
-
-     To view system logs only accessible to root and users in the adm group:
-
-           $ sudo -g adm more /var/log/syslog
-
-     To run an editor as jim with a different primary group:
-
-           $ sudoedit -u jim -g audio ~jim/sound.txt
-
-     To shut down a machine:
-
-           $ sudo shutdown -r +15 "quick reboot"
-
-     To make a usage listing of the directories in the /home partition.  Note
-     that this runs the commands in a sub-shell to make the cd and file
-     redirection work.
-
-           $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
-
-D\bDI\bIA\bAG\bGN\bNO\bOS\bST\bTI\bIC\bCS\bS
-     Error messages produced by s\bsu\bud\bdo\bo include:
-
-     editing files in a writable directory is not permitted
-           By default, s\bsu\bud\bdo\boe\bed\bdi\bit\bt does not permit editing a file when any of the
-           parent directories are writable by the invoking user.  This avoids
-           a race condition that could allow the user to overwrite an
-           arbitrary file.  See the _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bc_\bh_\be_\bc_\bk_\bd_\bi_\br option in sudoers(4) for
-           more information.
-
-     editing symbolic links is not permitted
-           By default, s\bsu\bud\bdo\boe\bed\bdi\bit\bt does not follow symbolic links when opening
-           files.  See the _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bf_\bo_\bl_\bl_\bo_\bw option in sudoers(4) for more
-           information.
-
-     effective uid is not 0, is sudo installed setuid root?
-           s\bsu\bud\bdo\bo was not run with root privileges.  The s\bsu\bud\bdo\bo binary must be
-           owned by the root user and have the Set-user-ID bit set.  Also, it
-           must not be located on a file system mounted with the `nosuid'
-           option or on an NFS file system that maps uid 0 to an unprivileged
-           uid.
-
-     effective uid is not 0, is sudo on a file system with the 'nosuid' option
-           set or an NFS file system without root privileges?
-           s\bsu\bud\bdo\bo was not run with root privileges.  The s\bsu\bud\bdo\bo binary has the
-           proper owner and permissions but it still did not run with root
-           privileges.  The most common reason for this is that the file
-           system the s\bsu\bud\bdo\bo binary is located on is mounted with the `nosuid'
-           option or it is an NFS file system that maps uid 0 to an
-           unprivileged uid.
-
-     fatal error, unable to load plugins
-           An error occurred while loading or initializing the plugins
-           specified in sudo.conf(4).
-
-     invalid environment variable name
-           One or more environment variable names specified via the -\b-E\bE option
-           contained an equal sign (`=').  The arguments to the -\b-E\bE option
-           should be environment variable names without an associated value.
-
-     no password was provided
-           When s\bsu\bud\bdo\bo tried to read the password, it did not receive any
-           characters.  This may happen if no terminal is available (or the -\b-S\bS
-           option is specified) and the standard input has been redirected
-           from _\b/_\bd_\be_\bv_\b/_\bn_\bu_\bl_\bl.
-
-     no tty present and no askpass program specified
-           s\bsu\bud\bdo\bo needs to read the password but there is no mechanism available
-           to do so.  A terminal is not present to read the password from,
-           s\bsu\bud\bdo\bo has not been configured to read from the standard input, and
-           no askpass program has been specified either via the -\b-A\bA option or
-           the SUDO_ASKPASS environment variable.
-
-     no writable temporary directory found
-           s\bsu\bud\bdo\boe\bed\bdi\bit\bt was unable to find a usable temporary directory in which
-           to store its intermediate files.
-
-     sudo must be owned by uid 0 and have the setuid bit set
-           s\bsu\bud\bdo\bo was not run with root privileges.  The s\bsu\bud\bdo\bo binary does not
-           have the correct owner or permissions.  It must be owned by the
-           root user and have the Set-user-ID bit set.
-
-     sudoedit is not supported on this platform
-           It is only possible to run s\bsu\bud\bdo\boe\bed\bdi\bit\bt on systems that support setting
-           the effective user-ID.
-
-     timed out reading password
-           The user did not enter a password before the password timeout (5
-           minutes by default) expired.
-
-     you do not exist in the passwd database
-           Your user ID does not appear in the system passwd database.
-
-     you may not specify environment variables in edit mode
-           It is only possible to specify environment variables when running a
-           command.  When editing a file, the editor is run with the user's
-           environment unmodified.
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     su(1), stat(2), login_cap(3), passwd(4), sudo.conf(4), sudo_plugin(4),
-     sudoers(4), sudoreplay(1m), visudo(1m)
-
-H\bHI\bIS\bST\bTO\bOR\bRY\bY
-     See the HISTORY file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/history.html) for a brief history of sudo.
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-C\bCA\bAV\bVE\bEA\bAT\bTS\bS
-     There is no easy way to prevent a user from gaining a root shell if that
-     user is allowed to run arbitrary commands via s\bsu\bud\bdo\bo.  Also, many programs
-     (such as editors) allow the user to run commands via shell escapes, thus
-     avoiding s\bsu\bud\bdo\bo's checks.  However, on most systems it is possible to
-     prevent shell escapes with the sudoers(4) plugin's _\bn_\bo_\be_\bx_\be_\bc functionality.
-
-     It is not meaningful to run the cd command directly via sudo, e.g.,
-
-           $ sudo cd /usr/local/protected
-
-     since when the command exits the parent process (your shell) will still
-     be the same.  Please see the _\bE_\bX_\bA_\bM_\bP_\bL_\bE_\bS section for more information.
-
-     Running shell scripts via s\bsu\bud\bdo\bo can expose the same kernel bugs that make
-     setuid shell scripts unsafe on some operating systems (if your OS has a
-     /dev/fd/ directory, setuid shell scripts are generally safe).
-
-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
-     https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     s\bsu\bud\bdo\bo is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                      May 27, 2019                      Sudo 1.8.28
diff --git a/doc/sudo.conf.cat b/doc/sudo.conf.cat
deleted file mode 100644 (file)
index 25c4f87..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-SUDO.CONF(4)                  File Formats Manual                 SUDO.CONF(4)
-
-N\bNA\bAM\bME\bE
-     s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf - configuration for sudo front end
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     The s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf file is used to configure the s\bsu\bud\bdo\bo front end.  It specifies
-     the security policy and I/O logging plugins, debug flags as well as
-     plugin-agnostic path names and settings.
-
-     The s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf file supports the following directives, described in detail
-     below.
-
-     Plugin    a security policy or I/O logging plugin
-
-     Path      a plugin-agnostic path
-
-     Set       a front end setting, such as _\bd_\bi_\bs_\ba_\bb_\bl_\be_\b__\bc_\bo_\br_\be_\bd_\bu_\bm_\bp or _\bg_\br_\bo_\bu_\bp_\b__\bs_\bo_\bu_\br_\bc_\be
-
-     Debug     debug flags to aid in debugging s\bsu\bud\bdo\bo, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by, v\bvi\bis\bsu\bud\bdo\bo, and
-               the s\bsu\bud\bdo\boe\ber\brs\bs plugin.
-
-     The pound sign (`#') is used to indicate a comment.  Both the comment
-     character and any text after it, up to the end of the line, are ignored.
-
-     Long lines can be continued with a backslash (`\') as the last character
-     on the line.  Note that leading white space is removed from the beginning
-     of lines even when the continuation character is used.
-
-     Non-comment lines that don't begin with Plugin, Path, Debug, or Set are
-     silently ignored.
-
-     The s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf file is always parsed in the "C" locale.
-
-   P\bPl\blu\bug\bgi\bin\bn c\bco\bon\bnf\bfi\big\bgu\bur\bra\bat\bti\bio\bon\bn
-     s\bsu\bud\bdo\bo supports a plugin architecture for security policies and
-     input/output logging.  Third parties can develop and distribute their own
-     policy and I/O logging plugins to work seamlessly with the s\bsu\bud\bdo\bo front
-     end.  Plugins are dynamically loaded based on the contents of s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf.
-
-     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 dynamic shared object that contains 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
-     symbol contained in the plugin.  The _\bp_\ba_\bt_\bh may be fully qualified or
-     relative.  If not fully qualified, it is relative to the directory
-     specified by the _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bd_\bi_\br Path setting, which defaults to
-     _\b/_\bu_\bs_\br_\b/_\bl_\bo_\bc_\ba_\bl_\b/_\bl_\bi_\bb_\be_\bx_\be_\bc_\b/_\bs_\bu_\bd_\bo.  In other words:
-
-           Plugin sudoers_policy sudoers.so
-
-     is equivalent to:
-
-           Plugin sudoers_policy /usr/local/libexec/sudo/sudoers.so
-
-     If the plugin was compiled statically into the s\bsu\bud\bdo\bo binary instead of
-     being installed as a dynamic shared object, the _\bp_\ba_\bt_\bh should be specified
-     without a leading directory, as it does not actually exist in the file
-     system.  For example:
-
-           Plugin sudoers_policy sudoers.so
-
-     Starting with s\bsu\bud\bdo\bo 1.8.5, any additional parameters after the _\bp_\ba_\bt_\bh are
-     passed as arguments to the plugin's _\bo_\bp_\be_\bn function.  For example, to
-     override the compile-time default sudoers file mode:
-
-           Plugin sudoers_policy sudoers.so sudoers_mode=0440
-
-     See the sudoers(4) manual for a list of supported arguments.
-
-     The same dynamic shared object may contain multiple plugins, each with a
-     different symbol name.  The 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.
-
-     If no s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf file is present, or if it contains no Plugin lines, the
-     s\bsu\bud\bdo\boe\ber\brs\bs plugin will be used as the default security policy and for I/O
-     logging (if enabled by the policy).  This is equivalent to the following:
-
-           Plugin sudoers_policy sudoers.so
-           Plugin sudoers_io sudoers.so
-
-     For more information on the s\bsu\bud\bdo\bo plugin architecture, see the
-     sudo_plugin(4) manual.
-
-   P\bPa\bat\bth\bh s\bse\bet\btt\bti\bin\bng\bgs\bs
-     A Path line consists of the Path keyword, followed by the name of the
-     path to set and its value.  For example:
-
-           Path noexec /usr/local/libexec/sudo/sudo_noexec.so
-           Path askpass /usr/X11R6/bin/ssh-askpass
-
-     If no path name is specified, features relying on the specified setting
-     will be disabled.  Disabling Path settings is only supported in s\bsu\bud\bdo\bo
-     version 1.8.16 and higher.
-
-     The following plugin-agnostic paths may be set in the _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf
-     file:
-
-     askpass   The fully qualified path to a helper program used to read the
-               user's password when no terminal is available.  This may be the
-               case when s\bsu\bud\bdo\bo is executed from a graphical (as opposed to
-               text-based) application.  The program specified by _\ba_\bs_\bk_\bp_\ba_\bs_\bs
-               should display the argument passed to it as the prompt and
-               write the user's password to the standard output.  The value of
-               _\ba_\bs_\bk_\bp_\ba_\bs_\bs may be overridden by the SUDO_ASKPASS environment
-               variable.
-
-     devsearch
-               An ordered, colon-separated search path of directories to look
-               in for device nodes.  This is used when mapping the process's
-               tty device number to a device name on systems that do not
-               provide such a mechanism.  Sudo will _\bn_\bo_\bt recurse into sub-
-               directories.  If terminal devices may be located in a sub-
-               directory of _\b/_\bd_\be_\bv, that path must be explicitly listed in
-               _\bd_\be_\bv_\bs_\be_\ba_\br_\bc_\bh.  The default value is:
-               /dev/pts:/dev/vt:/dev/term:/dev/zcons:/dev/pty:/dev
-
-               This option is ignored on systems that support either the
-               d\bde\bev\bvn\bna\bam\bme\be() or _\b_t\btt\bty\byn\bna\bam\bme\be_\b_d\bde\bev\bv() functions, for example BSD, macOS
-               and Solaris.
-
-     noexec    The fully-qualified path to a shared library containing
-               wrappers for the e\bex\bxe\bec\bcl\bl(), e\bex\bxe\bec\bcl\ble\be(), e\bex\bxe\bec\bcl\blp\bp(), e\bex\bxe\bec\bct\bt(), e\bex\bxe\bec\bcv\bv(),
-               e\bex\bxe\bec\bcv\bve\be(), e\bex\bxe\bec\bcv\bvP\bP(), e\bex\bxe\bec\bcv\bvp\bp(), e\bex\bxe\bec\bcv\bvp\bpe\be(), f\bfe\bex\bxe\bec\bcv\bve\be(), p\bpo\bop\bpe\ben\bn(),
-               p\bpo\bos\bsi\bix\bx_\b_s\bsp\bpa\baw\bwn\bn(), p\bpo\bos\bsi\bix\bx_\b_s\bsp\bpa\baw\bwn\bnp\bp(), s\bsy\bys\bst\bte\bem\bm(), and w\bwo\bor\brd\bde\bex\bxp\bp() library
-               functions that prevent the execution of further commands.  This
-               is used to implement the _\bn_\bo_\be_\bx_\be_\bc functionality on systems that
-               support LD_PRELOAD or its equivalent.  The default value is:
-               _\b/_\bu_\bs_\br_\b/_\bl_\bo_\bc_\ba_\bl_\b/_\bl_\bi_\bb_\be_\bx_\be_\bc_\b/_\bs_\bu_\bd_\bo_\b/_\bs_\bu_\bd_\bo_\b__\bn_\bo_\be_\bx_\be_\bc_\b._\bs_\bo.
-
-     plugin_dir
-               The default directory to use when searching for plugins that
-               are specified without a fully qualified path name.  The default
-               value is _\b/_\bu_\bs_\br_\b/_\bl_\bo_\bc_\ba_\bl_\b/_\bl_\bi_\bb_\be_\bx_\be_\bc_\b/_\bs_\bu_\bd_\bo.
-
-     sesh      The fully-qualified path to the s\bse\bes\bsh\bh binary.  This setting is
-               only used when s\bsu\bud\bdo\bo is built with SELinux support.  The default
-               value is _\b/_\bu_\bs_\br_\b/_\bl_\bo_\bc_\ba_\bl_\b/_\bl_\bi_\bb_\be_\bx_\be_\bc_\b/_\bs_\bu_\bd_\bo_\b/_\bs_\be_\bs_\bh.
-
-   O\bOt\bth\bhe\ber\br s\bse\bet\btt\bti\bin\bng\bgs\bs
-     The s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf file also supports the following front end settings:
-
-     disable_coredump
-               Core dumps of s\bsu\bud\bdo\bo itself are disabled by default to prevent
-               the disclosure of potentially sensitive information.  To aid in
-               debugging s\bsu\bud\bdo\bo crashes, you may wish to re-enable core dumps by
-               setting "disable_coredump" to false in s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf as follows:
-
-                     Set disable_coredump false
-
-               All modern operating systems place restrictions on core dumps
-               from setuid processes like s\bsu\bud\bdo\bo so this option can be enabled
-               without compromising security.  To actually get a s\bsu\bud\bdo\bo core
-               file you will likely need to enable core dumps for setuid
-               processes.  On BSD and Linux systems this is accomplished in
-               the sysctl(1m) command.  On Solaris, the coreadm(1m) command is
-               used to configure core dump behavior.
-
-               This setting is only available in s\bsu\bud\bdo\bo version 1.8.4 and
-               higher.
-
-     group_source
-               s\bsu\bud\bdo\bo passes the invoking user's group list to the policy and
-               I/O plugins.  On most systems, there is an upper limit to the
-               number of groups that a user may belong to simultaneously
-               (typically 16 for compatibility with NFS).  On systems with the
-               getconf(1) utility, running:
-                     getconf NGROUPS_MAX
-               will return the maximum number of groups.
-
-               However, it is still possible to be a member of a larger number
-               of groups--they simply won't be included in the group list
-               returned by the kernel for the user.  Starting with s\bsu\bud\bdo\bo
-               version 1.8.7, if the user's kernel group list has the maximum
-               number of entries, s\bsu\bud\bdo\bo will consult the group database
-               directly to determine the group list.  This makes it possible
-               for the security policy to perform matching by group name even
-               when the user is a member of more than the maximum number of
-               groups.
-
-               The _\bg_\br_\bo_\bu_\bp_\b__\bs_\bo_\bu_\br_\bc_\be setting allows the administrator to change
-               this default behavior.  Supported values for _\bg_\br_\bo_\bu_\bp_\b__\bs_\bo_\bu_\br_\bc_\be are:
-
-               static    Use the static group list that the kernel returns.
-                         Retrieving the group list this way is very fast but
-                         it is subject to an upper limit as described above.
-                         It is "static" in that it does not reflect changes to
-                         the group database made after the user logs in.  This
-                         was the default behavior prior to s\bsu\bud\bdo\bo 1.8.7.
-
-               dynamic   Always query the group database directly.  It is
-                         "dynamic" in that changes made to the group database
-                         after the user logs in will be reflected in the group
-                         list.  On some systems, querying the group database
-                         for all of a user's groups can be time consuming when
-                         querying a network-based group database.  Most
-                         operating systems provide an efficient method of
-                         performing such queries.  Currently, s\bsu\bud\bdo\bo supports
-                         efficient group queries on AIX, BSD, HP-UX, Linux and
-                         Solaris.
-
-               adaptive  Only query the group database if the static group
-                         list returned by the kernel has the maximum number of
-                         entries.  This is the default behavior in s\bsu\bud\bdo\bo 1.8.7
-                         and higher.
-
-               For example, to cause s\bsu\bud\bdo\bo to only use the kernel's static list
-               of groups for the user:
-
-                     Set group_source static
-
-               This setting is only available in s\bsu\bud\bdo\bo version 1.8.7 and
-               higher.
-
-     max_groups
-               The maximum number of user groups to retrieve from the group
-               database.  Values less than one will be ignored.  This setting
-               is only used when querying the group database directly.  It is
-               intended to be used on systems where it is not possible to
-               detect when the array to be populated with group entries is not
-               sufficiently large.  By default, s\bsu\bud\bdo\bo will allocate four times
-               the system's maximum number of groups (see above) and retry
-               with double that number if the group database query fails.
-
-               This setting is only available in s\bsu\bud\bdo\bo version 1.8.7 and
-               higher.  It should not be required in s\bsu\bud\bdo\bo versions 1.8.24 and
-               higher and may be removed in a later release.
-
-     probe_interfaces
-               By default, s\bsu\bud\bdo\bo will probe the system's network interfaces and
-               pass the IP address of each enabled interface to the policy
-               plugin.  This makes it possible for the plugin to match rules
-               based on the IP address without having to query DNS.  On Linux
-               systems with a large number of virtual interfaces, this may
-               take a non-negligible amount of time.  If IP-based matching is
-               not required, network interface probing can be disabled as
-               follows:
-
-                     Set probe_interfaces false
-
-               This setting is only available in s\bsu\bud\bdo\bo version 1.8.10 and
-               higher.
-
-   D\bDe\beb\bbu\bug\bg f\bfl\bla\bag\bgs\bs
-     s\bsu\bud\bdo\bo versions 1.8.4 and higher support a flexible debugging framework
-     that can help track down what s\bsu\bud\bdo\bo is doing internally if there is a
-     problem.
-
-     A Debug line consists of the Debug keyword, followed by the name of the
-     program (or plugin) to debug (s\bsu\bud\bdo\bo, v\bvi\bis\bsu\bud\bdo\bo, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by, s\bsu\bud\bdo\boe\ber\brs\bs), the
-     debug file name and a comma-separated list of debug flags.  The debug
-     flag 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
-     a plugin is free to use a different format so long as it does not include
-     a comma (`,').
-
-     For example:
-
-           Debug sudo /var/log/sudo_debug all@warn,plugin@info
-
-     would log all debugging statements at the _\bw_\ba_\br_\bn level and higher in
-     addition to those at the _\bi_\bn_\bf_\bo level for the plugin subsystem.
-
-     As of s\bsu\bud\bdo\bo 1.8.12, multiple Debug entries may be specified per program.
-     Older versions of s\bsu\bud\bdo\bo only support a single Debug entry per program.
-     Plugin-specific Debug entries are also supported starting with s\bsu\bud\bdo\bo
-     1.8.12 and are matched by either the base name of the plugin that was
-     loaded (for example sudoers.so) or by the plugin's fully-qualified path
-     name.  Previously, the s\bsu\bud\bdo\boe\ber\brs\bs plugin shared the same Debug entry as the
-     s\bsu\bud\bdo\bo front end and could not be configured separately.
-
-     The following priorities are supported, in order of decreasing severity:
-     _\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.  Each priority,
-     when specified, also includes all priorities higher than it.  For
-     example, a priority of _\bn_\bo_\bt_\bi_\bc_\be would include debug messages logged at
-     _\bn_\bo_\bt_\bi_\bc_\be and higher.
-
-     The priorities _\bt_\br_\ba_\bc_\be and _\bd_\be_\bb_\bu_\bg also include function call tracing which
-     logs when a function is entered and when it returns.  For example, the
-     following trace is for the g\bge\bet\bt_\b_u\bus\bse\ber\br_\b_g\bgr\bro\bou\bup\bps\bs() function located in
-     src/sudo.c:
-
-           sudo[123] -> get_user_groups @ src/sudo.c:385
-           sudo[123] <- get_user_groups @ src/sudo.c:429 := groups=10,0,5
-
-     When the function is entered, indicated by a right arrow `->', the
-     program, process ID, function, source file and line number are logged.
-     When the function returns, indicated by a left arrow `<-', the same
-     information is logged along with the return value.  In this case, the
-     return value is a string.
-
-     The following subsystems are used by the s\bsu\bud\bdo\bo front-end:
-
-     _\ba_\bl_\bl         matches every subsystem
-
-     _\ba_\br_\bg_\bs        command line argument processing
-
-     _\bc_\bo_\bn_\bv        user conversation
-
-     _\be_\bd_\bi_\bt        sudoedit
-
-     _\be_\bv_\be_\bn_\bt       event subsystem
-
-     _\be_\bx_\be_\bc        command execution
-
-     _\bm_\ba_\bi_\bn        s\bsu\bud\bdo\bo main function
-
-     _\bn_\be_\bt_\bi_\bf       network interface handling
-
-     _\bp_\bc_\bo_\bm_\bm       communication with the plugin
-
-     _\bp_\bl_\bu_\bg_\bi_\bn      plugin configuration
-
-     _\bp_\bt_\by         pseudo-tty related code
-
-     _\bs_\be_\bl_\bi_\bn_\bu_\bx     SELinux-specific handling
-
-     _\bu_\bt_\bi_\bl        utility functions
-
-     _\bu_\bt_\bm_\bp        utmp handling
-
-     The sudoers(4) plugin includes support for additional subsystems.
-
-F\bFI\bIL\bLE\bES\bS
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf            s\bsu\bud\bdo\bo front end configuration
-
-E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
-     #
-     # 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/sudo 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.
-     #
-     # The sudoers plugin is used by default if no Plugin lines are
-     # present.
-     Plugin sudoers_policy sudoers.so
-     Plugin sudoers_io sudoers.so
-
-     #
-     # Sudo askpass:
-     #
-     # An askpass helper program may be specified to provide a graphical
-     # password prompt for "sudo -A" support.  Sudo does not ship with
-     # its own askpass program but can use the OpenSSH askpass.
-     #
-     # Use the OpenSSH askpass
-     #Path askpass /usr/X11R6/bin/ssh-askpass
-     #
-     # Use the Gnome OpenSSH askpass
-     #Path askpass /usr/libexec/openssh/gnome-ssh-askpass
-
-     #
-     # Sudo noexec:
-     #
-     # Path to a shared library containing dummy versions of the execv(),
-     # execve() and fexecve() library functions that just return an error.
-     # This is used to implement the "noexec" functionality on systems that
-     # support C<LD_PRELOAD> or its equivalent.
-     # The compiled-in value is usually sufficient and should only be
-     # changed if you rename or move the sudo_noexec.so file.
-     #
-     #Path noexec /usr/local/libexec/sudo/sudo_noexec.so
-
-     #
-     # Core dumps:
-     #
-     # By default, sudo disables core dumps while it is executing
-     # (they are re-enabled for the command that is run).
-     # To aid in debugging sudo problems, you may wish to enable core
-     # dumps by setting "disable_coredump" to false.
-     #
-     #Set disable_coredump false
-
-     #
-     # User groups:
-     #
-     # Sudo passes the user's group list to the policy plugin.
-     # If the user is a member of the maximum number of groups (usually 16),
-     # sudo will query the group database directly to be sure to include
-     # the full list of groups.
-     #
-     # On some systems, this can be expensive so the behavior is configurable.
-     # The "group_source" setting has three possible values:
-     #   static   - use the user's list of groups returned by the kernel.
-     #   dynamic  - query the group database to find the list of groups.
-     #   adaptive - if user is in less than the maximum number of groups.
-     #              use the kernel list, else query the group database.
-     #
-     #Set group_source static
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     sudo_plugin(4), sudoers(4), sudo(1m)
-
-H\bHI\bIS\bST\bTO\bOR\bRY\bY
-     See the HISTORY file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/history.html) for a brief history of sudo.
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-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
-     https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     s\bsu\bud\bdo\bo is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                     October 7, 2018                    Sudo 1.8.28
diff --git a/doc/sudo_plugin.cat b/doc/sudo_plugin.cat
deleted file mode 100644 (file)
index 2d12cdd..0000000
+++ /dev/null
@@ -1,1683 +0,0 @@
-SUDO_PLUGIN(4)                File Formats Manual               SUDO_PLUGIN(4)
-
-N\bNA\bAM\bME\bE
-     s\bsu\bud\bdo\bo_\b_p\bpl\blu\bug\bgi\bin\bn - Sudo Plugin API
-
-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.  Plugins may be compiled as dynamic shared objects (the
-     default on systems that support them) or compiled statically into the
-     s\bsu\bud\bdo\bo binary itself.  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 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
-     incremented when incompatible changes are made.  A plugin should be check
-     the version passed to it and make sure that the major version matches.
-
-     The plugin API is defined by the sudo_plugin.h header file.
-
-   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 sudo.conf(4) along with a path to the plugin so that s\bsu\bud\bdo\bo
-     can load it.
-
-     struct policy_plugin {
-     #define SUDO_POLICY_PLUGIN     1
-         unsigned int type; /* always SUDO_POLICY_PLUGIN */
-         unsigned int version; /* always SUDO_API_VERSION */
-         int (*open)(unsigned int version, sudo_conv_t conversation,
-                     sudo_printf_t plugin_printf, char * const settings[],
-                     char * const user_info[], char * const user_env[],
-                     char * const plugin_options[]);
-         void (*close)(int exit_status, int error);
-         int (*show_version)(int verbose);
-         int (*check_policy)(int argc, char * const argv[],
-                             char *env_add[], char **command_info[],
-                             char **argv_out[], char **user_env_out[]);
-         int (*list)(int argc, char * const argv[], int verbose,
-                     const char *list_user);
-         int (*validate)(void);
-         void (*invalidate)(int remove);
-         int (*init_session)(struct passwd *pwd, char **user_env[]);
-         void (*register_hooks)(int version,
-            int (*register_hook)(struct sudo_hook *hook));
-         void (*deregister_hooks)(int version,
-            int (*deregister_hook)(struct sudo_hook *hook));
-     };
-
-     The policy_plugin struct has the following fields:
-
-     type  The type field should always be set to SUDO_POLICY_PLUGIN.
-
-     version
-           The version field should be set to SUDO_API_VERSION.
-
-           This allows s\bsu\bud\bdo\bo to determine the API version the plugin was built
-           against.
-
-     open
-           int (*open)(unsigned int version, sudo_conv_t conversation,
-                       sudo_printf_t plugin_printf, char * const settings[],
-                       char * const user_info[], char * const user_env[],
-                       char * const plugin_options[]);
-
-           Returns 1 on success, 0 on failure, -1 if a general error occurred,
-           or -2 if there was a usage error.  In the latter case, s\bsu\bud\bdo\bo will
-           print a usage message before it exits.  If an error occurs, the
-           plugin may optionally call the 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 with SUDO_CONF_ERROR_MSG to present additional error
-           information to the user.
-
-           The function arguments are as follows:
-
-           version
-                 The version passed in by s\bsu\bud\bdo\bo allows the plugin to determine
-                 the major and minor version number of the plugin API
-                 supported by s\bsu\bud\bdo\bo.
-
-           conversation
-                 A pointer to the c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function that can be used by
-                 the plugin to interact with the user (see below).  Returns 0
-                 on success and -1 on failure.
-
-           plugin_printf
-                 A pointer to a p\bpr\bri\bin\bnt\btf\bf()-style function that may be used to
-                 display informational or error messages (see below).  Returns
-                 the number of characters printed on success and -1 on
-                 failure.
-
-           settings
-                 A vector of user-supplied s\bsu\bud\bdo\bo settings in the form of
-                 "name=value" strings.  The vector is terminated by a NULL
-                 pointer.  These settings correspond to flags the user
-                 specified when running s\bsu\bud\bdo\bo.  As such, they will only be
-                 present when the corresponding flag has been specified on the
-                 command line.
-
-                 When parsing _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs, the plugin should split on the f\bfi\bir\brs\bst\bt
-                 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 debug file path name followed by a space and a comma-
-                       separated list of debug flags that correspond to the
-                       plugin's Debug entry in sudo.conf(4), if there is one.
-                       The flags are passed to the plugin exactly 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 a plugin
-                       is free to use a different format so long as it does
-                       not include a comma (`,').  Prior to s\bsu\bud\bdo\bo 1.8.12, there
-                       was no way to specify plugin-specific _\bd_\be_\bb_\bu_\bg_\b__\bf_\bl_\ba_\bg_\bs so
-                       the value was always the same as that used by the s\bsu\bud\bdo\bo
-                       front end and did not include a path name, only the
-                       flags themselves.  As of version 1.7 of the plugin
-                       interface, s\bsu\bud\bdo\bo will only pass _\bd_\be_\bb_\bu_\bg_\b__\bf_\bl_\ba_\bg_\bs if
-                       sudo.conf(4) contains a plugin-specific Debug entry.
-
-                 debug_level=number
-                       This setting has been deprecated in favor of
-                       _\bd_\be_\bb_\bu_\bg_\b__\bf_\bl_\ba_\bg_\bs.
-
-                 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.
-
-                 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
-
-                 login_class=string
-                       BSD login class to use when setting resource limits and
-                       nice value, if specified by the -\b-c\bc flag.
-
-                 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.
-
-                 plugin_path=string
-                       The path name of plugin loaded by the s\bsu\bud\bdo\bo front end.
-                       The path name will be a fully-qualified unless the
-                       plugin was statically compiled into s\bsu\bud\bdo\bo.
-
-                 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_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.
-
-                 progname=string
-                       The command name that sudo was run as, typically "sudo"
-                       or "sudoedit".
-
-                 prompt=string
-                       The prompt to use when requesting a password, if
-                       specified via the -\b-p\bp flag.
-
-                 remote_host=string
-                       The name of the remote host to run the command on, if
-                       specified via the -\b-h\bh option.  Support for running the
-                       command on a remote host is meant to be implemented via
-                       a helper program that is executed in place of the user-
-                       specified command.  The s\bsu\bud\bdo\bo front end is only capable
-                       of executing commands on the local host.  Only
-                       available starting with API version 1.4.
-
-                 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 run the command as, if
-                       specified via the -\b-g\bg flag.
-
-                 runas_user=string
-                       The user name or uid 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
-                       specified by the -\b-r\br flag.
-
-                 selinux_type=string
-                       SELinux type to use when executing the command, if
-                       specified by the -\b-t\bt 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.
-
-                 sudoedit=bool
-                       Set to true when the -\b-e\be flag is specified or if invoked
-                       as s\bsu\bud\bdo\boe\bed\bdi\bit\bt.  The plugin shall substitute an editor
-                       into _\ba_\br_\bg_\bv in the c\bch\bhe\bec\bck\bk_\b_p\bpo\bol\bli\bic\bcy\by() function or return -2
-                       with a usage error if the plugin does not 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.
-
-                 timeout=string
-                       User-specified command timeout.  Not all plugins
-                       support command timeouts and the ability for the user
-                       to set a timeout may be restricted by policy.  The
-                       format of the timeout string is plugin-specific.
-
-                 Additional settings may be added in the future so the plugin
-                 should silently ignore settings that it does not recognize.
-
-           user_info
-                 A vector of information about the user running the command in
-                 the form of "name=value" strings.  The vector is terminated
-                 by a NULL pointer.
-
-                 When parsing _\bu_\bs_\be_\br_\b__\bi_\bn_\bf_\bo, the plugin should split on the f\bfi\bir\brs\bst\bt
-                 equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
-                 itself but the _\bv_\ba_\bl_\bu_\be might.
-
-                 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.
-
-                 cwd=string
-                       The user's current working directory.
-
-                 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.
-
-                 gid=gid_t
-                       The real group ID of the user invoking s\bsu\bud\bdo\bo.
-
-                 groups=list
-                       The user's supplementary group list formatted as a
-                       string of comma-separated group IDs.
-
-                 host=string
-                       The local machine's hostname as returned by the
-                       gethostname(2) system call.
-
-                 lines=int
-                       The number of lines the user's terminal supports.  If
-                       there is no terminal device available, a default value
-                       of 24 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.
-
-                 umask=octal
-                       The invoking user's file creation mask.  Only available
-                       starting with API version 1.10.
-
-                 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
-                 vector of "name=value" strings.
-
-                 When parsing _\bu_\bs_\be_\br_\b__\be_\bn_\bv, the plugin should split on the f\bfi\bir\brs\bst\bt
-                 equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
-                 itself but the _\bv_\ba_\bl_\bu_\be might.
-
-     close
-           void (*close)(int exit_status, int error);
-
-           The c\bcl\blo\bos\bse\be() function is called when the command being run by s\bsu\bud\bdo\bo
-           finishes.
-
-           The function arguments are as follows:
-
-           exit_status
-                 The command's exit status, as returned by the wait(2) system
-                 call.  The value of exit_status is undefined if error is non-
-                 zero.
-
-           error
-                 If the command could not be executed, this is set to the
-                 value of errno set by the execve(2) system call.  The plugin
-                 is responsible for displaying error information via the
-                 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);
-
-           The s\bsh\bho\bow\bw_\b_v\bve\ber\brs\bsi\bio\bon\bn() function is called by s\bsu\bud\bdo\bo when the user
-           specifies the -\b-V\bV option.  The plugin may display its version
-           information to the user via the 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 using SUDO_CONV_INFO_MSG.  If the user requests detailed
-           version information, the verbose flag will be set.
-
-           Returns 1 on success, 0 on failure, -1 if a general error occurred,
-           or -2 if there was a usage error, although the return value is
-           currently ignored.
-
-     check_policy
-           int (*check_policy)(int argc, char * const argv[],
-                               char *env_add[], char **command_info[],
-                               char **argv_out[], char **user_env_out[]);
-
-           The c\bch\bhe\bec\bck\bk_\b_p\bpo\bol\bli\bic\bcy\by() function is called by s\bsu\bud\bdo\bo to determine whether
-           the user is allowed to run the specified commands.
-
-           If the _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt option was enabled in the _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs array passed to
-           the o\bop\bpe\ben\bn() function, the user has requested _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt mode.
-           _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt is a mechanism for editing one or more files where an
-           editor is run with the user's credentials instead of with elevated
-           privileges.  s\bsu\bud\bdo\bo achieves this by creating user-writable temporary
-           copies of the files to be edited and then overwriting the originals
-           with the temporary copies after editing is complete.  If the plugin
-           supports _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt, it should choose the editor to be used,
-           potentially from a variable in the user's environment, such as
-           EDITOR, and include it in _\ba_\br_\bg_\bv_\b__\bo_\bu_\bt (note that environment variables
-           may include command line flags).  The files to be edited should be
-           copied from _\ba_\br_\bg_\bv into _\ba_\br_\bg_\bv_\b__\bo_\bu_\bt, separated from the editor and its
-           arguments by a "--" element.  The "--" will be removed by s\bsu\bud\bdo\bo
-           before the editor is executed.  The plugin should also set
-           _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b=_\bt_\br_\bu_\be in the _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b__\bi_\bn_\bf_\bo list.
-
-           The c\bch\bhe\bec\bck\bk_\b_p\bpo\bol\bli\bic\bcy\by() function returns 1 if the command is allowed, 0
-           if not allowed, -1 for a general error, or -2 for a usage error or
-           if _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt was specified but is unsupported by the plugin.  In the
-           latter case, s\bsu\bud\bdo\bo will print a usage message before it exits.  If
-           an error occurs, the plugin may optionally call the 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 with SUDO_CONF_ERROR_MSG to present
-           additional error information to the user.
-
-           The function arguments are as follows:
-
-           argc  The number of elements in _\ba_\br_\bg_\bv, not counting the final NULL
-                 pointer.
-
-           argv  The argument vector describing the command the user wishes to
-                 run, in the same form as what would be passed to the
-                 execve(2) system call.  The vector is terminated by a NULL
-                 pointer.
-
-           env_add
-                 Additional environment variables specified by the user on the
-                 command line in the form of a NULL-terminated vector of
-                 "name=value" strings.  The plugin may reject the command if
-                 one or more variables are not allowed to be set, or it may
-                 silently ignore such variables.
-
-                 When parsing _\be_\bn_\bv_\b__\ba_\bd_\bd, the plugin should split on the f\bfi\bir\brs\bst\bt
-                 equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
-                 itself but the _\bv_\ba_\bl_\bu_\be might.
-
-           command_info
-                 Information about the command being run in the form of
-                 "name=value" strings.  These values are used by s\bsu\bud\bdo\bo to set
-                 the execution environment when running a command.  The plugin
-                 is responsible for creating and populating the vector, which
-                 must be terminated with a NULL pointer.  The following values
-                 are recognized by s\bsu\bud\bdo\bo:
-
-                 chroot=string
-                       The root directory to use when running the command.
-
-                 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.
-
-                 command=string
-                       Fully qualified path to the command to be executed.
-
-                 cwd=string
-                       The current working directory to change to when
-                       executing the command.
-
-                 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, macOS 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 macOS).
-                       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.
-
-                 execfd=number
-                       If specified, s\bsu\bud\bdo\bo will use the fexecve(2) system call
-                       to execute the command instead of execve(2).  The
-                       specified _\bn_\bu_\bm_\bb_\be_\br must refer to an open file descriptor.
-
-                 iolog_compress=bool
-                       Set to true if the I/O logging plugins, if any, should
-                       compress the log data.  This is a hint to the I/O
-                       logging plugin which may choose to ignore it.
-
-                 iolog_group=string
-                       The group that will own newly created I/O log files and
-                       directories.  This is a hint to the I/O logging plugin
-                       which may choose to ignore it.
-
-                 iolog_mode=octal
-                       The file permission mode to use when creating I/O log
-                       files and directories.  This is a hint to the I/O
-                       logging plugin which may choose to ignore it.
-
-                 iolog_user=string
-                       The user that will own newly created I/O log files and
-                       directories.  This is a hint to the I/O logging plugin
-                       which may choose to ignore it.
-
-                 iolog_path=string
-                       Fully qualified path to the file or directory in which
-                       I/O log is to be stored.  This is a hint to the I/O
-                       logging plugin which may choose to ignore it.  If no
-                       I/O logging plugin is loaded, this setting has no
-                       effect.
-
-                 iolog_stdin=bool
-                       Set to true if the I/O logging plugins, if any, should
-                       log the standard input if it is not connected to a
-                       terminal device.  This is a hint to the I/O logging
-                       plugin which may choose to ignore it.
-
-                 iolog_stdout=bool
-                       Set to true if the I/O logging plugins, if any, should
-                       log the standard output if it is not connected to a
-                       terminal device.  This is a hint to the I/O logging
-                       plugin which may choose to ignore it.
-
-                 iolog_stderr=bool
-                       Set to true if the I/O logging plugins, if any, should
-                       log the standard error if it is not connected to a
-                       terminal device.  This is a hint to the I/O logging
-                       plugin which may choose to ignore it.
-
-                 iolog_ttyin=bool
-                       Set to true if the I/O logging plugins, if any, should
-                       log all terminal input.  This only includes input typed
-                       by the user and not from a pipe or redirected from a
-                       file.  This is a hint to the I/O logging plugin which
-                       may choose to ignore it.
-
-                 iolog_ttyout=bool
-                       Set to true if the I/O logging plugins, if any, should
-                       log all terminal output.  This only includes output to
-                       the screen, not output to a pipe or file.  This is a
-                       hint to the I/O logging plugin which may choose to
-                       ignore it.
-
-                 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_fds=list
-                       A comma-separated list of file descriptors that should
-                       be preserved, regardless of the value of the _\bc_\bl_\bo_\bs_\be_\bf_\br_\bo_\bm
-                       setting.  Only available starting with API version 1.5.
-
-                 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
-                       allocated.  By default, the new entry will be a copy of
-                       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.
-
-                 sudoedit_checkdir=bool
-                       Set to false to disable directory writability checks in
-                       s\bsu\bud\bdo\boe\bed\bdi\bit\bt.  By default, s\bsu\bud\bdo\boe\bed\bdi\bit\bt 1.8.16 and higher will
-                       check all directory components of the path to be edited
-                       for writability by the invoking user.  Symbolic links
-                       will not be followed in writable directories and
-                       s\bsu\bud\bdo\boe\bed\bdi\bit\bt will refuse to edit a file located in a
-                       writable directory.  These restrictions are not
-                       enforced when s\bsu\bud\bdo\boe\bed\bdi\bit\bt is run by root.  The
-                       _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bf_\bo_\bl_\bl_\bo_\bw option can be set to false to disable
-                       this check.  Only available starting with API version
-                       1.8.
-
-                 sudoedit_follow=bool
-                       Set to true to allow s\bsu\bud\bdo\boe\bed\bdi\bit\bt to edit files that are
-                       symbolic links.  By default, s\bsu\bud\bdo\boe\bed\bdi\bit\bt 1.8.15 and higher
-                       will refuse to open a symbolic link.  The
-                       _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bf_\bo_\bl_\bl_\bo_\bw option can be used to restore the older
-                       behavior and allow s\bsu\bud\bdo\boe\bed\bdi\bit\bt to open symbolic links.
-                       Only available starting with API version 1.8.
-
-                 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
-                       be used to set the user field in the utmp entry to the
-                       user the command runs as rather than the invoking user.
-                       If not set, s\bsu\bud\bdo\bo will base the new entry on the
-                       invoking user's existing entry.
-
-                 Unsupported values will be ignored.
-
-           argv_out
-                 The NULL-terminated argument vector to pass to the execve(2)
-                 system call when executing the command.  The plugin is
-                 responsible for allocating and populating the vector.
-
-           user_env_out
-                 The NULL-terminated environment vector to use when executing
-                 the command.  The plugin is responsible for allocating and
-                 populating the vector.
-
-     list
-           int (*list)(int argc, char * const argv[],
-                       int verbose, const char *list_user);
-
-           List available privileges for the invoking user.  Returns 1 on
-           success, 0 on failure and -1 on error.  On error, the plugin may
-           optionally call the 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 with
-           SUDO_CONF_ERROR_MSG to present additional error information to the
-           user.
-
-           Privileges should be output via the 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 using SUDO_CONV_INFO_MSG,
-
-           verbose
-                 Flag indicating whether to list in verbose mode or not.
-
-           list_user
-                 The name of a different user to list privileges for if the
-                 policy allows it.  If NULL, the plugin should list the
-                 privileges of the invoking user.
-
-           argc  The number of elements in _\ba_\br_\bg_\bv, not counting the final NULL
-                 pointer.
-
-           argv  If non-NULL, an argument vector describing a command the user
-                 wishes to check against the policy in the same form as what
-                 would be passed to the execve(2) system call.  If the command
-                 is permitted by the policy, the fully-qualified path to the
-                 command should be displayed along with any command line
-                 arguments.
-
-     validate
-           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 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
-           support credential caching.
-
-           Returns 1 on success, 0 on failure and -1 on error.  On error, the
-           plugin may optionally call the 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 with SUDO_CONF_ERROR_MSG to present additional error
-           information to the user.
-
-     invalidate
-           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 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.
-
-           The i\bin\bnv\bva\bal\bli\bid\bda\bat\bte\be() function should be NULL if the plugin does not
-           support credential caching.
-
-     init_session
-           int (*init_session)(struct passwd *pwd, char **user_envp[);
-
-           The i\bin\bni\bit\bt_\b_s\bse\bes\bss\bsi\bio\bon\bn() function is called before s\bsu\bud\bdo\bo sets up the
-           execution environment for the command.  It is run in the parent
-           s\bsu\bud\bdo\bo process and before any uid or gid changes.  This can be used
-           to perform session setup that is not supported by _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b__\bi_\bn_\bf_\bo,
-           such as opening the PAM session.  The c\bcl\blo\bos\bse\be() function can be used
-           to tear down the session that was opened by init_session.
-
-           The _\bp_\bw_\bd argument points to a passwd struct for the user the command
-           will be run as if the uid the command will run as was found in the
-           password database, otherwise it will be NULL.
-
-           The _\bu_\bs_\be_\br_\b__\be_\bn_\bv argument points to the environment the command will
-           run in, in the form of a NULL-terminated vector of "name=value"
-           strings.  This is the same string passed back to the front end via
-           the Policy Plugin's _\bu_\bs_\be_\br_\b__\be_\bn_\bv_\b__\bo_\bu_\bt parameter.  If the i\bin\bni\bit\bt_\b_s\bse\bes\bss\bsi\bio\bon\bn()
-           function needs to modify the user environment, it should update the
-           pointer stored in _\bu_\bs_\be_\br_\b__\be_\bn_\bv.  The expected use case is to merge the
-           contents of the PAM environment (if any) with the contents of
-           _\bu_\bs_\be_\br_\b__\be_\bn_\bv.  NOTE: the _\bu_\bs_\be_\br_\b__\be_\bn_\bv 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 _\bu_\bs_\be_\br_\b__\be_\bn_\bv.  Failure to
-           do so may result in a crash.
-
-           Returns 1 on success, 0 on failure and -1 on error.  On error, the
-           plugin may optionally call the 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 with SUDO_CONF_ERROR_MSG to present additional error
-           information to the user.
-
-     register_hooks
-           void (*register_hooks)(int version,
-              int (*register_hook)(struct sudo_hook *hook));
-
-           The r\bre\beg\bgi\bis\bst\bte\ber\br_\b_h\bho\boo\bok\bks\bs() function is called by the sudo front end to
-           register any hooks the plugin needs.  If the plugin does not
-           support hooks, register_hooks should be set to the NULL pointer.
-
-           The _\bv_\be_\br_\bs_\bi_\bo_\bn argument describes the version of the hooks API
-           supported by the s\bsu\bud\bdo\bo front end.
-
-           The r\bre\beg\bgi\bis\bst\bte\ber\br_\b_h\bho\boo\bok\bk() function should be used to register any
-           supported hooks the plugin needs.  It returns 0 on success, 1 if
-           the hook type is not supported and -1 if the major version in
-           struct hook does not match the front end's major hook API version.
-
-           See the _\bH_\bo_\bo_\bk _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn _\bA_\bP_\bI section below for more information about
-           hooks.
-
-           NOTE: the r\bre\beg\bgi\bis\bst\bte\ber\br_\b_h\bho\boo\bok\bks\bs() function is only available starting with
-           API version 1.2.  If the s\bsu\bud\bdo\bo front end doesn't support API version
-           1.2 or higher, register_hooks will not be called.
-
-     deregister_hooks
-           void (*deregister_hooks)(int version,
-              int (*deregister_hook)(struct sudo_hook *hook));
-
-           The d\bde\ber\bre\beg\bgi\bis\bst\bte\ber\br_\b_h\bho\boo\bok\bks\bs() function is called by the sudo front end to
-           deregister any hooks the plugin has registered.  If the plugin does
-           not support hooks, deregister_hooks should be set to the NULL
-           pointer.
-
-           The _\bv_\be_\br_\bs_\bi_\bo_\bn argument describes the version of the hooks API
-           supported by the s\bsu\bud\bdo\bo front end.
-
-           The d\bde\ber\bre\beg\bgi\bis\bst\bte\ber\br_\b_h\bho\boo\bok\bk() function should be used to deregister any
-           hooks that were put in place by the r\bre\beg\bgi\bis\bst\bte\ber\br_\b_h\bho\boo\bok\bk() function.  If
-           the plugin tries to deregister a hook that the front end does not
-           support, deregister_hook will return an error.
-
-           See the _\bH_\bo_\bo_\bk _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn _\bA_\bP_\bI section below for more information about
-           hooks.
-
-           NOTE: the d\bde\ber\bre\beg\bgi\bis\bst\bte\ber\br_\b_h\bho\boo\bok\bks\bs() function is only available starting
-           with API version 1.2.  If the s\bsu\bud\bdo\bo front end doesn't support API
-           version 1.2 or higher, deregister_hooks will not be called.
-
-     _\bP_\bo_\bl_\bi_\bc_\by _\bP_\bl_\bu_\bg_\bi_\bn _\bV_\be_\br_\bs_\bi_\bo_\bn _\bM_\ba_\bc_\br_\bo_\bs
-
-     /* Plugin API version major/minor. */
-     #define SUDO_API_VERSION_MAJOR 1
-     #define SUDO_API_VERSION_MINOR 13
-     #define SUDO_API_MKVERSION(x, y) ((x << 16) | y)
-     #define SUDO_API_VERSION SUDO_API_MKVERSION(SUDO_API_VERSION_MAJOR,\
-                                                 SUDO_API_VERSION_MINOR)
-
-     /* Getters and setters for API version */
-     #define SUDO_API_VERSION_GET_MAJOR(v) ((v) >> 16)
-     #define SUDO_API_VERSION_GET_MINOR(v) ((v) & 0xffff)
-     #define SUDO_API_VERSION_SET_MAJOR(vp, n) do { \
-         *(vp) = (*(vp) & 0x0000ffff) | ((n) << 16); \
-     } while(0)
-     #define SUDO_API_VERSION_SET_MINOR(vp, n) do { \
-         *(vp) = (*(vp) & 0xffff0000) | (n); \
-     } while(0)
-
-   I\bI/\b/O\bO p\bpl\blu\bug\bgi\bin\bn A\bAP\bPI\bI
-     struct io_plugin {
-     #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,
-                     sudo_printf_t plugin_printf, char * const settings[],
-                     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);
-         int (*log_ttyout)(const char *buf, unsigned int len);
-         int (*log_stdin)(const char *buf, unsigned int len);
-         int (*log_stdout)(const char *buf, unsigned int len);
-         int (*log_stderr)(const char *buf, unsigned int len);
-         void (*register_hooks)(int version,
-            int (*register_hook)(struct sudo_hook *hook));
-         void (*deregister_hooks)(int version,
-            int (*deregister_hook)(struct sudo_hook *hook));
-         int (*change_winsize)(unsigned int lines, unsigned int cols);
-         int (*log_suspend)(int signo);
-     };
-
-     When an I/O plugin is loaded, s\bsu\bud\bdo\bo runs the command in a pseudo-tty.
-     This makes it possible to log the input and output from the user's
-     session.  If any of the standard input, standard output or standard error
-     do not correspond to a tty, s\bsu\bud\bdo\bo will open a pipe to capture the I/O for
-     logging before passing it on.
-
-     The log_ttyin function receives the raw user input from the terminal
-     device (note that this will include input even when echo is disabled,
-     such as when a password is read).  The log_ttyout function receives
-     output from the pseudo-tty that is suitable for replaying the user's
-     session at a later time.  The l\blo\bog\bg_\b_s\bst\btd\bdi\bin\bn(), l\blo\bog\bg_\b_s\bst\btd\bdo\bou\but\bt() and l\blo\bog\bg_\b_s\bst\btd\bde\ber\brr\br()
-     functions are only called if the standard input, standard output or
-     standard error respectively correspond to something other than a tty.
-
-     Any of the logging functions may be set to the NULL pointer if no logging
-     is to be performed.  If the open function returns 0, no I/O will be sent
-     to the plugin.
-
-     If a logging function returns an error (-1), the running command will be
-     terminated and all of the plugin's logging functions will be disabled.
-     Other I/O logging plugins will still receive any remaining input or
-     output that has not yet been processed.
-
-     If an input logging function rejects the data by returning 0, the command
-     will be terminated and the data will not be passed to the command, though
-     it will still be sent to any other I/O logging plugins.  If an output
-     logging function rejects the data by returning 0, the command will be
-     terminated and the data will not be written to the terminal, though it
-     will still be sent to any other I/O logging plugins.
-
-     The io_plugin struct has the following fields:
-
-     type  The type field should always be set to SUDO_IO_PLUGIN.
-
-     version
-           The version field should be set to SUDO_API_VERSION.
-
-           This allows s\bsu\bud\bdo\bo to determine the API version the plugin was built
-           against.
-
-     open
-           int (*open)(unsigned int version, sudo_conv_t conversation,
-                       sudo_printf_t plugin_printf, char * const settings[],
-                       char * const user_info[], char * const command_info[],
-                       int argc, char * const argv[], char * const user_env[],
-                       char * const plugin_options[]);
-
-           The o\bop\bpe\ben\bn() function is run before the l\blo\bog\bg_\b_t\btt\bty\byi\bin\bn(), l\blo\bog\bg_\b_t\btt\bty\byo\bou\but\bt(),
-           l\blo\bog\bg_\b_s\bst\btd\bdi\bin\bn(), l\blo\bog\bg_\b_s\bst\btd\bdo\bou\but\bt(), l\blo\bog\bg_\b_s\bst\btd\bde\ber\brr\br(), l\blo\bog\bg_\b_s\bsu\bus\bsp\bpe\ben\bnd\bd(),
-           c\bch\bha\ban\bng\bge\be_\b_w\bwi\bin\bns\bsi\biz\bze\be(), or s\bsh\bho\bow\bw_\b_v\bve\ber\brs\bsi\bio\bon\bn() functions are called.  It is
-           only called if the version is being requested or if the policy
-           plugin's c\bch\bhe\bec\bck\bk_\b_p\bpo\bol\bli\bic\bcy\by() function has returned successfully.  It
-           returns 1 on success, 0 on failure, -1 if a general error occurred,
-           or -2 if there was a usage error.  In the latter case, s\bsu\bud\bdo\bo will
-           print a usage message before it exits.  If an error occurs, the
-           plugin may optionally call the 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 with SUDO_CONF_ERROR_MSG to present additional error
-           information to the user.
-
-           The function arguments are as follows:
-
-           version
-                 The version passed in by s\bsu\bud\bdo\bo allows the plugin to determine
-                 the major and minor version number of the plugin API
-                 supported by s\bsu\bud\bdo\bo.
-
-           conversation
-                 A pointer to the c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function that may be used by
-                 the s\bsh\bho\bow\bw_\b_v\bve\ber\brs\bsi\bio\bon\bn() function to display version information
-                 (see s\bsh\bho\bow\bw_\b_v\bve\ber\brs\bsi\bio\bon\bn() below).  The c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function may
-                 also be used to display additional error message to the user.
-                 The c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function returns 0 on success and -1 on
-                 failure.
-
-           plugin_printf
-                 A pointer to a p\bpr\bri\bin\bnt\btf\bf()-style function that may be used by
-                 the s\bsh\bho\bow\bw_\b_v\bve\ber\brs\bsi\bio\bon\bn() function to display version information
-                 (see show_version below).  The p\bpl\blu\bug\bgi\bin\bn_\b_p\bpr\bri\bin\bnt\btf\bf() function may
-                 also be used to display additional error message to the user.
-                 The p\bpl\blu\bug\bgi\bin\bn_\b_p\bpr\bri\bin\bnt\btf\bf() function returns number of characters
-                 printed on success and -1 on failure.
-
-           settings
-                 A vector of user-supplied s\bsu\bud\bdo\bo settings in the form of
-                 "name=value" strings.  The vector is terminated by a NULL
-                 pointer.  These settings correspond to flags the user
-                 specified when running s\bsu\bud\bdo\bo.  As such, they will only be
-                 present when the corresponding flag has been specified on the
-                 command line.
-
-                 When parsing _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs, the plugin should split on the f\bfi\bir\brs\bst\bt
-                 equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
-                 itself but the _\bv_\ba_\bl_\bu_\be might.
-
-                 See the _\bP_\bo_\bl_\bi_\bc_\by _\bp_\bl_\bu_\bg_\bi_\bn _\bA_\bP_\bI section for a list of all possible
-                 settings.
-
-           user_info
-                 A vector of information about the user running the command in
-                 the form of "name=value" strings.  The vector is terminated
-                 by a NULL pointer.
-
-                 When parsing _\bu_\bs_\be_\br_\b__\bi_\bn_\bf_\bo, the plugin should split on the f\bfi\bir\brs\bst\bt
-                 equal sign (`=') since the _\bn_\ba_\bm_\be field will never include one
-                 itself but the _\bv_\ba_\bl_\bu_\be might.
-
-                 See the _\bP_\bo_\bl_\bi_\bc_\by _\bp_\bl_\bu_\bg_\bi_\bn _\bA_\bP_\bI section for a list of all possible
-                 strings.
-
-           argc  The number of elements in _\ba_\br_\bg_\bv, not counting the final NULL
-                 pointer.  It can be zero, when s\bsu\bud\bdo\bo is called with -\b-V\bV.
-
-           argv  If non-NULL, an argument vector describing a command the user
-                 wishes to run in the same form as what would be passed to the
-                 execve(2) system call.
-
-           user_env
-                 The user's environment in the form of a NULL-terminated
-                 vector of "name=value" strings.
-
-                 When parsing _\bu_\bs_\be_\br_\b__\be_\bn_\bv, the plugin should split on the f\bfi\bir\brs\bst\bt
-                 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);
-
-           The c\bcl\blo\bos\bse\be() function is called when the command being run by s\bsu\bud\bdo\bo
-           finishes.
-
-           The function arguments are as follows:
-
-           exit_status
-                 The command's exit status, as returned by the wait(2) system
-                 call.  The value of exit_status is undefined if error is non-
-                 zero.
-
-           error
-                 If the command could not be executed, this is set to the
-                 value of errno set by the execve(2) system call.  If the
-                 command was successfully executed, the value of error is 0.
-
-     show_version
-           int (*show_version)(int verbose);
-
-           The s\bsh\bho\bow\bw_\b_v\bve\ber\brs\bsi\bio\bon\bn() function is called by s\bsu\bud\bdo\bo when the user
-           specifies the -\b-V\bV option.  The plugin may display its version
-           information to the user via the 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 using SUDO_CONV_INFO_MSG.  If the user requests detailed
-           version information, the verbose flag will be set.
-
-           Returns 1 on success, 0 on failure, -1 if a general error occurred,
-           or -2 if there was a usage error, although the return value is
-           currently ignored.
-
-     log_ttyin
-           int (*log_ttyin)(const char *buf, unsigned int len);
-
-           The l\blo\bog\bg_\b_t\btt\bty\byi\bin\bn() function is called whenever data can be read from
-           the user but before it is passed to the running command.  This
-           allows the plugin to reject data if it chooses to (for instance if
-           the input contains banned content).  Returns 1 if the data should
-           be passed to the command, 0 if the data is rejected (which will
-           terminate the running command) or -1 if an error occurred.
-
-           The function arguments are as follows:
-
-           buf   The buffer containing user input.
-
-           len   The length of _\bb_\bu_\bf in bytes.
-
-     log_ttyout
-           int (*log_ttyout)(const char *buf, unsigned int len);
-
-           The l\blo\bog\bg_\b_t\btt\bty\byo\bou\but\bt() function is called whenever data can be read from
-           the command but before it is written to the user's terminal.  This
-           allows the plugin to reject data if it chooses to (for instance if
-           the output contains banned content).  Returns 1 if the data should
-           be passed to the user, 0 if the data is rejected (which will
-           terminate the running command) or -1 if an error occurred.
-
-           The function arguments are as follows:
-
-           buf   The buffer containing command output.
-
-           len   The length of _\bb_\bu_\bf in bytes.
-
-     log_stdin
-           int (*log_stdin)(const char *buf, unsigned int len);
-
-           The l\blo\bog\bg_\b_s\bst\btd\bdi\bin\bn() function is only used if the standard input does
-           not correspond to a tty device.  It is called whenever data can be
-           read from the standard input but before it is passed to the running
-           command.  This allows the plugin to reject data if it chooses to
-           (for instance if the input contains banned content).  Returns 1 if
-           the data should be passed to the command, 0 if the data is rejected
-           (which will terminate the running command) or -1 if an error
-           occurred.
-
-           The function arguments are as follows:
-
-           buf   The buffer containing user input.
-
-           len   The length of _\bb_\bu_\bf in bytes.
-
-     log_stdout
-           int (*log_stdout)(const char *buf, unsigned int len);
-
-           The l\blo\bog\bg_\b_s\bst\btd\bdo\bou\but\bt() function is only used if the standard output does
-           not correspond to a tty device.  It is called whenever data can be
-           read from the command but before it is written to the standard
-           output.  This allows the plugin to reject data if it chooses to
-           (for instance if the output contains banned content).  Returns 1 if
-           the data should be passed to the user, 0 if the data is rejected
-           (which will terminate the running command) or -1 if an error
-           occurred.
-
-           The function arguments are as follows:
-
-           buf   The buffer containing command output.
-
-           len   The length of _\bb_\bu_\bf in bytes.
-
-     log_stderr
-           int (*log_stderr)(const char *buf, unsigned int len);
-
-           The l\blo\bog\bg_\b_s\bst\btd\bde\ber\brr\br() function is only used if the standard error does
-           not correspond to a tty device.  It is called whenever data can be
-           read from the command but before it is written to the standard
-           error.  This allows the plugin to reject data if it chooses to (for
-           instance if the output contains banned content).  Returns 1 if the
-           data should be passed to the user, 0 if the data is rejected (which
-           will terminate the running command) or -1 if an error occurred.
-
-           The function arguments are as follows:
-
-           buf   The buffer containing command output.
-
-           len   The length of _\bb_\bu_\bf in bytes.
-
-     register_hooks
-           See the _\bP_\bo_\bl_\bi_\bc_\by _\bp_\bl_\bu_\bg_\bi_\bn _\bA_\bP_\bI section for a description of
-           register_hooks.
-
-     deregister_hooks
-           See the _\bP_\bo_\bl_\bi_\bc_\by _\bp_\bl_\bu_\bg_\bi_\bn _\bA_\bP_\bI section for a description of
-           deregister_hooks.
-
-     change_winsize
-           int (*change_winsize)(unsigned int lines, unsigned int cols);
-
-           The c\bch\bha\ban\bng\bge\be_\b_w\bwi\bin\bns\bsi\biz\bze\be() function is called whenever the window size of
-           the terminal changes from the initial values specified in the
-           user_info list.  Returns -1 if an error occurred, in which case no
-           further calls to c\bch\bha\ban\bng\bge\be_\b_w\bwi\bin\bns\bsi\biz\bze\be() will be made,
-
-     log_suspend
-           int (*log_suspend)(int signo);
-
-           The l\blo\bog\bg_\b_s\bsu\bus\bsp\bpe\ben\bnd\bd() function is called whenever a command is
-           suspended or resumed.  The _\bs_\bi_\bg_\bn_\bo argument is either the signal that
-           caused the command to be suspended or SIGCONT if the command was
-           resumed.  Logging this information makes it possible to skip the
-           period of time when the command was suspended during playback of a
-           session.  Returns -1 if an error occurred, in which case no further
-           calls to l\blo\bog\bg_\b_s\bsu\bus\bsp\bpe\ben\bnd\bd() will be made,
-
-     _\bI_\b/_\bO _\bP_\bl_\bu_\bg_\bi_\bn _\bV_\be_\br_\bs_\bi_\bo_\bn _\bM_\ba_\bc_\br_\bo_\bs
-
-     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:
-
-     +\b+\bo\bo  SIGALRM
-     +\b+\bo\bo  SIGHUP
-     +\b+\bo\bo  SIGINT
-     +\b+\bo\bo  SIGPIPE
-     +\b+\bo\bo  SIGQUIT
-     +\b+\bo\bo  SIGTERM
-     +\b+\bo\bo  SIGTSTP
-     +\b+\bo\bo  SIGUSR1
-     +\b+\bo\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.  An exception to this is SIGPIPE,
-     which is ignored until the command is executed.
-
-     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.
-
-     Currently, the only supported hooks relate to the handling of environment
-     variables.  Hooks can be used to intercept attempts to get, set, or
-     remove environment variables so that these changes can be reflected in
-     the version of the environment that is used to execute a command.  A
-     future version of the API will support hooking internal s\bsu\bud\bdo\bo front end
-     functions as well.
-
-     _\bH_\bo_\bo_\bk _\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be
-
-     Hooks in s\bsu\bud\bdo\bo are described by the following structure:
-
-     typedef int (*sudo_hook_fn_t)();
-
-     struct sudo_hook {
-         unsigned int hook_version;
-         unsigned int hook_type;
-         sudo_hook_fn_t hook_fn;
-         void *closure;
-     };
-
-     The sudo_hook structure has the following fields:
-
-     hook_version
-           The hook_version field should be set to SUDO_HOOK_VERSION.
-
-     hook_type
-           The hook_type field may be one of the following supported hook
-           types:
-
-           SUDO_HOOK_SETENV
-                 The C library setenv(3) function.  Any registered hooks will
-                 run before the C library implementation.  The hook_fn field
-                 should be a function that matches the following typedef:
-
-                 typedef int (*sudo_hook_fn_setenv_t)(const char *name,
-                    const char *value, int overwrite, void *closure);
-
-                 If the registered hook does not match the typedef the results
-                 are unspecified.
-
-           SUDO_HOOK_UNSETENV
-                 The C library unsetenv(3) function.  Any registered hooks
-                 will run before the C library implementation.  The hook_fn
-                 field should be a function that matches the following
-                 typedef:
-
-                 typedef int (*sudo_hook_fn_unsetenv_t)(const char *name,
-                    void *closure);
-
-           SUDO_HOOK_GETENV
-                 The C library getenv(3) function.  Any registered hooks will
-                 run before the C library implementation.  The hook_fn field
-                 should be a function that matches the following typedef:
-
-                 typedef int (*sudo_hook_fn_getenv_t)(const char *name,
-                    char **value, void *closure);
-
-                 If the registered hook does not match the typedef the results
-                 are unspecified.
-
-           SUDO_HOOK_PUTENV
-                 The C library putenv(3) function.  Any registered hooks will
-                 run before the C library implementation.  The hook_fn field
-                 should be a function that matches the following typedef:
-
-                 typedef int (*sudo_hook_fn_putenv_t)(char *string,
-                    void *closure);
-
-                 If the registered hook does not match the typedef the results
-                 are unspecified.
-
-     hook_fn
-           sudo_hook_fn_t hook_fn;
-
-           The hook_fn field should be set to the plugin's hook
-           implementation.  The actual function arguments will vary depending
-           on the hook_type (see hook_type above).  In all cases, the closure
-           field of struct sudo_hook is passed as the last function parameter.
-           This can be used to pass arbitrary data to the plugin's hook
-           implementation.
-
-           The function return value may be one of the following:
-
-           SUDO_HOOK_RET_ERROR
-                 The hook function encountered an error.
-
-           SUDO_HOOK_RET_NEXT
-                 The hook completed without error, go on to the next hook
-                 (including the native implementation if applicable).  For
-                 example, a getenv(3) hook might return SUDO_HOOK_RET_NEXT if
-                 the specified variable was not found in the private copy of
-                 the environment.
-
-           SUDO_HOOK_RET_STOP
-                 The hook completed without error, stop processing hooks for
-                 this invocation.  This can be used to replace the native
-                 implementation.  For example, a setenv hook that operates on
-                 a private copy of the environment but leaves environ
-                 unchanged.
-
-     Note that it is very easy to create an infinite loop when hooking C
-     library functions.  For example, a getenv(3) hook that calls the
-     snprintf(3) function may create a loop if the snprintf(3) implementation
-     calls getenv(3) to check the locale.  To prevent this, you may wish to
-     use a static variable in the hook function to guard against nested calls.
-     For example:
-
-     static int in_progress = 0; /* avoid recursion */
-     if (in_progress)
-         return SUDO_HOOK_RET_NEXT;
-     in_progress = 1;
-     ...
-     in_progress = 0;
-     return SUDO_HOOK_RET_STOP;
-
-     _\bH_\bo_\bo_\bk _\bA_\bP_\bI _\bV_\be_\br_\bs_\bi_\bo_\bn _\bM_\ba_\bc_\br_\bo_\bs
-
-     /* Hook API version major/minor */
-     #define SUDO_HOOK_VERSION_MAJOR 1
-     #define SUDO_HOOK_VERSION_MINOR 0
-     #define SUDO_HOOK_VERSION SUDO_API_MKVERSION(SUDO_HOOK_VERSION_MAJOR,\
-                                                   SUDO_HOOK_VERSION_MINOR)
-
-     For getters and setters see the _\bP_\bo_\bl_\bi_\bc_\by _\bp_\bl_\bu_\bg_\bi_\bn _\bA_\bP_\bI.
-
-   R\bRe\bem\bmo\bot\bte\be c\bco\bom\bmm\bma\ban\bnd\bd e\bex\bxe\bec\bcu\but\bti\bio\bon\bn
-     The s\bsu\bud\bdo\bo front end does not have native support for running remote
-     commands.  However, starting with s\bsu\bud\bdo\bo 1.8.8, the -\b-h\bh option may be used
-     to specify a remote host that is passed to the policy plugin.  A plugin
-     may also accept a _\br_\bu_\bn_\ba_\bs_\b__\bu_\bs_\be_\br in the form of "user@hostname" which will
-     work with older versions of s\bsu\bud\bdo\bo.  It is anticipated that remote commands
-     will be supported by executing a "helper" program.  The policy plugin
-     should setup the execution environment such that the s\bsu\bud\bdo\bo front end will
-     run the helper which, in turn, will connect to the remote host and run
-     the command.
-
-     For example, the policy plugin could utilize s\bss\bsh\bh to perform remote
-     command execution.  The helper program would be responsible for running
-     s\bss\bsh\bh with the proper options to use a private key or certificate that the
-     remote host will accept and run a program on the remote host that would
-     setup the execution environment accordingly.
-
-     Note that remote s\bsu\bud\bdo\boe\bed\bdi\bit\bt functionality must be handled by the policy
-     plugin, not s\bsu\bud\bdo\bo itself as the front end has no knowledge that a remote
-     command is being executed.  This may be addressed in a future revision of
-     the plugin API.
-
-   C\bCo\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn A\bAP\bPI\bI
-     If the plugin needs to interact with the user, it may do so via the
-     c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function.  A plugin should not attempt to read directly
-     from the standard input or the user's tty (neither of which are
-     guaranteed to exist).  The caller must include a trailing newline in msg
-     if one is to be printed.
-
-     A p\bpr\bri\bin\bnt\btf\bf()-style function is also available that can be used to display
-     informational or error messages to the user, which is usually more
-     convenient for simple messages where no use input is required.
-
-     _\bC_\bo_\bn_\bv_\be_\br_\bs_\ba_\bt_\bi_\bo_\bn _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn _\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bs
-
-     The conversation function takes as arguments pointers to the following
-     structures:
-
-     struct sudo_conv_message {
-     #define SUDO_CONV_PROMPT_ECHO_OFF  0x0001 /* do not echo user input */
-     #define SUDO_CONV_PROMPT_ECHO_ON   0x0002 /* echo user input */
-     #define SUDO_CONV_ERROR_MSG        0x0003 /* error message */
-     #define SUDO_CONV_INFO_MSG         0x0004 /* informational message */
-     #define SUDO_CONV_PROMPT_MASK      0x0005 /* mask user input */
-     #define SUDO_CONV_PROMPT_ECHO_OK   0x1000 /* flag: allow echo if no tty */
-     #define SUDO_CONV_PREFER_TTY       0x2000 /* flag: use tty if possible */
-         int msg_type;
-         int timeout;
-         const char *msg;
-     };
-
-     #define SUDO_CONV_REPL_MAX      255
-
-     struct sudo_conv_reply {
-         char *reply;
-     };
-
-     typedef int (*sudo_conv_callback_fn_t)(int signo, void *closure);
-     struct sudo_conv_callback {
-         unsigned int version;
-         void *closure;
-         sudo_conv_callback_fn_t on_suspend;
-         sudo_conv_callback_fn_t on_resume;
-     };
-
-     Pointers to the c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() and p\bpr\bri\bin\bnt\btf\bf()-style functions are passed in
-     to the plugin's o\bop\bpe\ben\bn() function when the plugin is initialized.  The
-     following type definitions can be used in the declaration of the o\bop\bpe\ben\bn()
-     function:
-
-     typedef int (*sudo_conv_t)(int num_msgs,
-                  const struct sudo_conv_message msgs[],
-                  struct sudo_conv_reply replies[],
-                  struct sudo_conv_callback *callback);
-
-     typedef int (*sudo_printf_t)(int msg_type, const char *fmt, ...);
-
-     To use the c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function, the plugin must pass an array of
-     sudo_conv_message and sudo_conv_reply structures.  There must be a struct
-     sudo_conv_message and struct sudo_conv_reply for each message in the
-     conversation, that is, both arrays must have the same number of elements.
-     Each struct sudo_conv_reply must have its _\br_\be_\bp_\bl_\by member initialized to
-     NULL.  The struct sudo_conv_callback pointer, if not NULL, should contain
-     function pointers to be called when the s\bsu\bud\bdo\bo process is suspended and/or
-     resumed during conversation input.  The _\bo_\bn_\b__\bs_\bu_\bs_\bp_\be_\bn_\bd and _\bo_\bn_\b__\br_\be_\bs_\bu_\bm_\be
-     functions are called with the signal that caused s\bsu\bud\bdo\bo to be suspended and
-     the _\bc_\bl_\bo_\bs_\bu_\br_\be pointer from the struct sudo_conv_callback.  These functions
-     should return 0 on success and -1 on error.  On error, the conversation
-     will end and the conversation function will return a value of -1.  The
-     intended use is to allow the plugin to release resources, such as locks,
-     that should not be held indefinitely while suspended and then reacquire
-     them when the process is resumed.  Note that the functions are not
-     actually invoked from within a signal handler.
-
-     The _\bm_\bs_\bg_\b__\bt_\by_\bp_\be must be set to one of the following values:
-
-     SUDO_CONV_PROMPT_ECHO_OFF
-           Prompt the user for input with echo disabled; this is generally
-           used for passwords.  The reply will be stored in the _\br_\be_\bp_\bl_\bi_\be_\bs array,
-           and it will never be NULL.
-
-     SUDO_CONV_PROMPT_ECHO_ON
-           Prompt the user for input with echo enabled.  The reply will be
-           stored in the _\br_\be_\bp_\bl_\bi_\be_\bs array, and it will never be NULL.
-
-     SUDO_CONV_ERROR_MSG
-           Display an error message.  The message is written to the standard
-           error unless the SUDO_CONV_PREFER_TTY flag is set, in which case it
-           is written to the user's terminal if possible.
-
-     SUDO_CONV_INFO_MSG
-           Display a message.  The message is written to the standard output
-           unless the SUDO_CONV_PREFER_TTY flag is set, in which case it is
-           written to the user's terminal if possible.
-
-     SUDO_CONV_PROMPT_MASK
-           Prompt the user for input but echo an asterisk character for each
-           character read.  The reply will be stored in the _\br_\be_\bp_\bl_\bi_\be_\bs array, and
-           it will never be NULL.  This can be used to provide visual feedback
-           to the user while reading sensitive information that should not be
-           displayed.
-
-     In addition to the above values, the following flag bits may also be set:
-
-     SUDO_CONV_PROMPT_ECHO_OK
-           Allow input to be read when echo cannot be disabled when the
-           message type is SUDO_CONV_PROMPT_ECHO_OFF or SUDO_CONV_PROMPT_MASK.
-           By default, s\bsu\bud\bdo\bo will refuse to read input if the echo cannot be
-           disabled for those message types.
-
-     SUDO_CONV_PREFER_TTY
-           When displaying a message via SUDO_CONV_ERROR_MSG or
-           SUDO_CONV_INFO_MSG, try to write the message to the user's
-           terminal.  If the terminal is unavailable, the standard error or
-           standard output will be used, depending upon whether The user's
-           terminal is always used when possible for input, this flag is only
-           used for output.  SUDO_CONV_ERROR_MSG or SUDO_CONV_INFO_MSG was
-           used.
-
-     The _\bt_\bi_\bm_\be_\bo_\bu_\bt in seconds until the prompt will wait for no more input.  A
-     zero value implies an infinite timeout.
-
-     The plugin is responsible for freeing the reply buffer located in each
-     struct sudo_conv_reply, if it is not NULL.  SUDO_CONV_REPL_MAX represents
-     the maximum length of the reply buffer (not including the trailing NUL
-     character).  In practical terms, this is the longest password s\bsu\bud\bdo\bo will
-     support.  It is also useful as a maximum value for the m\bme\bem\bms\bse\bet\bt_\b_s\bs()
-     function when clearing passwords filled in by the conversation function.
-
-     The p\bpr\bri\bin\bnt\btf\bf()-style function uses the same underlying mechanism as the
-     c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function but only supports SUDO_CONV_INFO_MSG and
-     SUDO_CONV_ERROR_MSG for the _\bm_\bs_\bg_\b__\bt_\by_\bp_\be parameter.  It can be more
-     convenient than using the c\bco\bon\bnv\bve\ber\brs\bsa\bat\bti\bio\bon\bn() function if no user reply is
-     needed and supports standard p\bpr\bri\bin\bnt\btf\bf() escape sequences.
-
-     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 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
-     implement plugin initialization, cleanup and group lookup.
-
-     struct sudoers_group_plugin {
-        unsigned int version;
-        int (*init)(int version, sudo_printf_t sudo_printf,
-                    char *const argv[]);
-        void (*cleanup)(void);
-        int (*query)(const char *user, const char *group,
-                     const struct passwd *pwd);
-     };
-
-     The sudoers_group_plugin struct has the following fields:
-
-     version
-           The version field should be set to GROUP_API_VERSION.
-
-           This allows s\bsu\bud\bdo\boe\ber\brs\bs to determine the API version the group plugin
-           was built against.
-
-     init
-           int (*init)(int version, sudo_printf_t plugin_printf,
-                       char *const argv[]);
-
-           The i\bin\bni\bit\bt() function is called after _\bs_\bu_\bd_\bo_\be_\br_\bs has been parsed but
-           before any policy checks.  It returns 1 on success, 0 on failure
-           (or if the plugin is not configured), and -1 if a error occurred.
-           If an error occurs, the plugin may call the p\bpl\blu\bug\bgi\bin\bn_\b_p\bpr\bri\bin\bnt\btf\bf()
-           function with SUDO_CONF_ERROR_MSG to present additional error
-           information to the user.
-
-           The function arguments are as follows:
-
-           version
-                 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
-                 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
-                 display informational or error message to the user.  Returns
-                 the number of characters printed on success and -1 on
-                 failure.
-
-           argv  A NULL-terminated array of arguments generated from the
-                 _\bg_\br_\bo_\bu_\bp_\b__\bp_\bl_\bu_\bg_\bi_\bn option in _\bs_\bu_\bd_\bo_\be_\br_\bs.  If no arguments were given,
-                 _\ba_\br_\bg_\bv will be NULL.
-
-     cleanup
-           void (*cleanup)();
-
-           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.
-
-     query
-           int (*query)(const char *user, const char *group,
-                        const struct passwd *pwd);
-
-           The q\bqu\bue\ber\bry\by() function is used to ask the group plugin whether _\bu_\bs_\be_\br
-           is a member of _\bg_\br_\bo_\bu_\bp.
-
-           The function arguments are as follows:
-
-           user  The name of the user being looked up in the external group
-                 database.
-
-           group
-                 The name of the group being queried.
-
-           pwd   The password database entry for _\bu_\bs_\be_\br, if any.  If _\bu_\bs_\be_\br is not
-                 present in the password database, _\bp_\bw_\bd will be NULL.
-
-     _\bG_\br_\bo_\bu_\bp _\bA_\bP_\bI _\bV_\be_\br_\bs_\bi_\bo_\bn _\bM_\ba_\bc_\br_\bo_\bs
-
-     /* Sudoers group plugin version major/minor */
-     #define GROUP_API_VERSION_MAJOR 1
-     #define GROUP_API_VERSION_MINOR 0
-     #define GROUP_API_VERSION ((GROUP_API_VERSION_MAJOR << 16) | \
-                                GROUP_API_VERSION_MINOR)
-     For getters and setters see the _\bP_\bo_\bl_\bi_\bc_\by _\bp_\bl_\bu_\bg_\bi_\bn _\bA_\bP_\bI.
-
-P\bPL\bLU\bUG\bGI\bIN\bN A\bAP\bPI\bI C\bCH\bHA\bAN\bNG\bGE\bEL\bLO\bOG\bG
-     The following revisions have been made to the Sudo Plugin API.
-
-     Version 1.0
-           Initial API version.
-
-     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.
-
-     Version 1.2 (sudo 1.8.5)
-           The Policy and I/O logging plugins' o\bop\bpe\ben\bn() functions are now passed
-           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.
-
-           The init_session Policy plugin function is now passed a pointer to
-           the user environment which can be updated as needed.  This can be
-           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.
-
-     Version 1.4 (sudo 1.8.8)
-           The _\br_\be_\bm_\bo_\bt_\be_\b__\bh_\bo_\bs_\bt entry was added to the settings list.
-
-     Version 1.5 (sudo 1.8.9)
-           The _\bp_\br_\be_\bs_\be_\br_\bv_\be_\b__\bf_\bd_\bs entry was added to the command_info list.
-
-     Version 1.6 (sudo 1.8.11)
-           The behavior when an I/O logging plugin returns an error (-1) has
-           changed.  Previously, the s\bsu\bud\bdo\bo front end took no action when the
-           l\blo\bog\bg_\b_t\btt\bty\byi\bin\bn(), l\blo\bog\bg_\b_t\btt\bty\byo\bou\but\bt(), l\blo\bog\bg_\b_s\bst\btd\bdi\bin\bn(), l\blo\bog\bg_\b_s\bst\btd\bdo\bou\but\bt(), or
-           l\blo\bog\bg_\b_s\bst\btd\bde\ber\brr\br() function returned an error.
-
-           The behavior when an I/O logging plugin returns 0 has changed.
-           Previously, output from the command would be displayed to the
-           terminal even if an output logging function returned 0.
-
-     Version 1.7 (sudo 1.8.12)
-           The _\bp_\bl_\bu_\bg_\bi_\bn_\b__\bp_\ba_\bt_\bh entry was added to the settings list.
-
-           The _\bd_\be_\bb_\bu_\bg_\b__\bf_\bl_\ba_\bg_\bs entry now starts with a debug file path name and
-           may occur multiple times if there are multiple plugin-specific
-           Debug lines in the sudo.conf(4) file.
-
-     Version 1.8 (sudo 1.8.15)
-           The _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bc_\bh_\be_\bc_\bk_\bd_\bi_\br and _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bf_\bo_\bl_\bl_\bo_\bw entries were added to the
-           command_info list.  The default value of _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bc_\bh_\be_\bc_\bk_\bd_\bi_\br was
-           changed to true in sudo 1.8.16.
-
-           The sudo _\bc_\bo_\bn_\bv_\be_\br_\bs_\ba_\bt_\bi_\bo_\bn function now takes a pointer to a struct
-           sudo_conv_callback as its fourth argument.  The sudo_conv_t
-           definition has been updated to match.  The plugin must specify that
-           it supports plugin API version 1.8 or higher to receive a
-           conversation function pointer that supports this argument.
-
-     Version 1.9 (sudo 1.8.16)
-           The _\be_\bx_\be_\bc_\bf_\bd entry was added to the command_info list.
-
-     Version 1.10 (sudo 1.8.19)
-           The _\bu_\bm_\ba_\bs_\bk entry was added to the user_info list.  The _\bi_\bo_\bl_\bo_\bg_\b__\bg_\br_\bo_\bu_\bp,
-           _\bi_\bo_\bl_\bo_\bg_\b__\bm_\bo_\bd_\be, and _\bi_\bo_\bl_\bo_\bg_\b__\bu_\bs_\be_\br entries were added to the command_info
-           list.
-
-     Version 1.11 (sudo 1.8.20)
-           The _\bt_\bi_\bm_\be_\bo_\bu_\bt entry was added to the settings list.
-
-     Version 1.12 (sudo 1.8.21)
-           The change_winsize field was added to the io_plugin struct.
-
-     Version 1.13 (sudo 1.8.26)
-           The log_suspend field was added to the io_plugin struct.
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     sudo.conf(4), sudoers(4), sudo(1m)
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-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
-     https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     s\bsu\bud\bdo\bo is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                    October 24, 2018                    Sudo 1.8.28
diff --git a/doc/sudoers.cat b/doc/sudoers.cat
deleted file mode 100644 (file)
index 9231a21..0000000
+++ /dev/null
@@ -1,2956 +0,0 @@
-SUDOERS(4)                    File Formats Manual                   SUDOERS(4)
-
-N\bNA\bAM\bME\bE
-     s\bsu\bud\bdo\boe\ber\brs\bs - default sudo security policy plugin
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     The s\bsu\bud\bdo\boe\ber\brs\bs policy plugin determines a user's s\bsu\bud\bdo\bo privileges.  It is the
-     default s\bsu\bud\bdo\bo policy plugin.  The policy is driven by the _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs
-     file or, optionally in LDAP.  The policy format is described in detail in
-     the _\bS_\bU_\bD_\bO_\bE_\bR_\bS _\bF_\bI_\bL_\bE _\bF_\bO_\bR_\bM_\bA_\bT section.  For information on storing s\bsu\bud\bdo\boe\ber\brs\bs
-     policy information in LDAP, please see sudoers.ldap(4).
-
-   C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg s\bsu\bud\bdo\bo.\b.c\bco\bon\bnf\bf f\bfo\bor\br s\bsu\bud\bdo\boe\ber\brs\bs
-     s\bsu\bud\bdo\bo consults the sudo.conf(4) file to determine which policy and I/O
-     logging plugins to load.  If no sudo.conf(4) file is present, or if it
-     contains no Plugin lines, s\bsu\bud\bdo\boe\ber\brs\bs will be used for policy decisions and
-     I/O logging.  To explicitly configure sudo.conf(4) to use the s\bsu\bud\bdo\boe\ber\brs\bs
-     plugin, the following configuration can be used.
-
-           Plugin sudoers_policy sudoers.so
-           Plugin sudoers_io sudoers.so
-
-     Starting with s\bsu\bud\bdo\bo 1.8.5, it is possible to specify optional arguments to
-     the s\bsu\bud\bdo\boe\ber\brs\bs plugin in the sudo.conf(4) file.  These arguments, if
-     present, should be listed after the path to the plugin (i.e., after
-     _\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bs_\bo).  Multiple arguments may be specified, separated by white
-     space.  For example:
-
-           Plugin sudoers_policy sudoers.so sudoers_mode=0400
-
-     The following plugin arguments are supported:
-
-     ldap_conf=pathname
-               The _\bl_\bd_\ba_\bp_\b__\bc_\bo_\bn_\bf argument can be used to override the default path
-               to the _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf file.
-
-     ldap_secret=pathname
-               The _\bl_\bd_\ba_\bp_\b__\bs_\be_\bc_\br_\be_\bt argument can be used to override the default
-               path to the _\bl_\bd_\ba_\bp_\b._\bs_\be_\bc_\br_\be_\bt file.
-
-     sudoers_file=pathname
-               The _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bf_\bi_\bl_\be argument can be used to override the default
-               path to the _\bs_\bu_\bd_\bo_\be_\br_\bs file.
-
-     sudoers_uid=uid
-               The _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bu_\bi_\bd argument can be used to override the default
-               owner of the sudoers file.  It should be specified as a numeric
-               user ID.
-
-     sudoers_gid=gid
-               The _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bg_\bi_\bd argument can be used to override the default
-               group of the sudoers file.  It must be specified as a numeric
-               group ID (not a group name).
-
-     sudoers_mode=mode
-               The _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bm_\bo_\bd_\be argument can be used to override the default
-               file mode for the sudoers file.  It should be specified as an
-               octal value.
-
-     For more information on configuring sudo.conf(4), please refer to its
-     manual.
-
-   U\bUs\bse\ber\br A\bAu\but\bth\bhe\ben\bnt\bti\bic\bca\bat\bti\bio\bon\bn
-     The s\bsu\bud\bdo\boe\ber\brs\bs security policy requires that most users authenticate
-     themselves before they can use s\bsu\bud\bdo\bo.  A password is not required if the
-     invoking user is root, if the target user is the same as the invoking
-     user, or if the policy has disabled authentication for the user or
-     command.  Unlike su(1), when s\bsu\bud\bdo\boe\ber\brs\bs requires authentication, it
-     validates the invoking user's credentials, not the target user's (or
-     root's) credentials.  This can be changed via the _\br_\bo_\bo_\bt_\bp_\bw, _\bt_\ba_\br_\bg_\be_\bt_\bp_\bw and
-     _\br_\bu_\bn_\ba_\bs_\bp_\bw flags, described later.
-
-     If a user who is not listed in the policy tries to run a command via
-     s\bsu\bud\bdo\bo, mail is sent to the proper authorities.  The address used for such
-     mail is configurable via the _\bm_\ba_\bi_\bl_\bt_\bo Defaults entry (described later) and
-     defaults to root.
-
-     Note that no mail will be sent if an unauthorized user tries to run s\bsu\bud\bdo\bo
-     with the -\b-l\bl or -\b-v\bv option unless there is an authentication error and
-     either the _\bm_\ba_\bi_\bl_\b__\ba_\bl_\bw_\ba_\by_\bs or _\bm_\ba_\bi_\bl_\b__\bb_\ba_\bd_\bp_\ba_\bs_\bs flags are enabled.  This allows
-     users to determine for themselves whether or not they are allowed to use
-     s\bsu\bud\bdo\bo.  All attempts to run s\bsu\bud\bdo\bo (successful or not) will be logged,
-     regardless of whether or not mail is sent.
-
-     If s\bsu\bud\bdo\bo is run by root and the SUDO_USER environment variable is set, the
-     s\bsu\bud\bdo\boe\ber\brs\bs policy will use this value to determine who the actual user is.
-     This can be used by a user to log commands through sudo even when a root
-     shell has been invoked.  It also allows the -\b-e\be option to remain useful
-     even when invoked via a sudo-run script or program.  Note, however, that
-     the _\bs_\bu_\bd_\bo_\be_\br_\bs file lookup is still done for root, not the user specified by
-     SUDO_USER.
-
-     s\bsu\bud\bdo\boe\ber\brs\bs uses per-user time stamp files for credential caching.  Once a
-     user has been authenticated, a record is written containing the user ID
-     that was used to authenticate, the terminal session ID, the start time of
-     the session leader (or parent process) and a time stamp (using a
-     monotonic clock if one is available).  The user may then use s\bsu\bud\bdo\bo without
-     a password for a short period of time (5 minutes unless overridden by the
-     _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt option).  By default, s\bsu\bud\bdo\boe\ber\brs\bs uses a separate record
-     for each terminal, which means that a user's login sessions are
-     authenticated separately.  The _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\by_\bp_\be option can be used to
-     select the type of time stamp record s\bsu\bud\bdo\boe\ber\brs\bs will use.
-
-   L\bLo\bog\bgg\bgi\bin\bng\bg
-     s\bsu\bud\bdo\boe\ber\brs\bs can log both successful and unsuccessful attempts (as well as
-     errors) to syslog(3), a log file, or both.  By default, s\bsu\bud\bdo\boe\ber\brs\bs will log
-     via syslog(3) but this is changeable via the _\bs_\by_\bs_\bl_\bo_\bg and _\bl_\bo_\bg_\bf_\bi_\bl_\be Defaults
-     settings.  See _\bL_\bO_\bG _\bF_\bO_\bR_\bM_\bA_\bT for a description of the log file format.
-
-     s\bsu\bud\bdo\boe\ber\brs\bs is also capable of running a command in a pseudo-tty and logging
-     all input and/or output.  The standard input, standard output and
-     standard error can be logged even when not associated with a terminal.
-     I/O logging is not on by default but can be enabled using the _\bl_\bo_\bg_\b__\bi_\bn_\bp_\bu_\bt
-     and _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt options as well as the LOG_INPUT and LOG_OUTPUT command
-     tags.  See _\bI_\b/_\bO _\bL_\bO_\bG _\bF_\bI_\bL_\bE_\bS for details on how I/O log files are stored.
-
-   C\bCo\bom\bmm\bma\ban\bnd\bd e\ben\bnv\bvi\bir\bro\bon\bnm\bme\ben\bnt\bt
-     Since environment variables can influence program behavior, s\bsu\bud\bdo\boe\ber\brs\bs
-     provides a means to restrict which variables from the user's environment
-     are inherited by the command to be run.  There are two distinct ways
-     s\bsu\bud\bdo\boe\ber\brs\bs can deal with environment variables.
-
-     By default, the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is enabled.  This causes commands to be
-     executed with a new, minimal environment.  On AIX (and Linux systems
-     without PAM), the environment is initialized with the contents of the
-     _\b/_\be_\bt_\bc_\b/_\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt file.  On BSD systems, if the _\bu_\bs_\be_\b__\bl_\bo_\bg_\bi_\bn_\bc_\bl_\ba_\bs_\bs option is
-     enabled, the environment is initialized based on the _\bp_\ba_\bt_\bh and _\bs_\be_\bt_\be_\bn_\bv
-     settings in _\b/_\be_\bt_\bc_\b/_\bl_\bo_\bg_\bi_\bn_\b._\bc_\bo_\bn_\bf.  The HOME, MAIL, SHELL, LOGNAME and USER
-     environment variables are initialized based on the target user and the
-     SUDO_* variables are set based on the invoking user.  Additional
-     variables, such as DISPLAY, PATH and TERM, are preserved from the
-     invoking user's environment if permitted by the _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk or _\be_\bn_\bv_\b__\bk_\be_\be_\bp
-     options.  This is effectively a whitelist for environment variables.  A
-     few environment variables are treated specially.  If the PATH and TERM
-     variables are not preserved from the user's environment, they will be set
-     to default values.  The LOGNAME and USER are handled as a single entity.
-     If one of them is preserved (or removed) from the user's environment, the
-     other will be as well.  If LOGNAME and USER are to be preserved but only
-     one of them is present in the user's environment, the other will be set
-     to the same value.  This avoids an inconsistent environment where one of
-     the variables describing the user name is set to the invoking user and
-     one is set to the target user.  Environment variables with a value
-     beginning with () are removed unless both the name and value parts are
-     matched by _\be_\bn_\bv_\b__\bk_\be_\be_\bp or _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk, as they may be interpreted as functions
-     by the b\bba\bas\bsh\bh shell.  Prior to version 1.8.11, such variables were always
-     removed.
-
-     If, however, the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is disabled, any variables not
-     explicitly denied by the _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk and _\be_\bn_\bv_\b__\bd_\be_\bl_\be_\bt_\be options are inherited
-     from the invoking process.  In this case, _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk and _\be_\bn_\bv_\b__\bd_\be_\bl_\be_\bt_\be behave
-     like a blacklist.  Prior to version 1.8.21, environment variables with a
-     value beginning with () were always removed.  Beginning with version
-     1.8.21, a pattern in _\be_\bn_\bv_\b__\bd_\be_\bl_\be_\bt_\be is used to match b\bba\bas\bsh\bh shell functions
-     instead.  Since it is not possible to blacklist all potentially dangerous
-     environment variables, use of the default _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt behavior is
-     encouraged.
-
-     Environment variables specified by _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk, _\be_\bn_\bv_\b__\bd_\be_\bl_\be_\bt_\be, or _\be_\bn_\bv_\b__\bk_\be_\be_\bp may
-     include one or more `*' characters which will match zero or more
-     characters.  No other wildcard characters are supported.
-
-     By default, environment variables are matched by name.  However, if the
-     pattern includes an equal sign (`='), both the variables name and value
-     must match.  For example, a b\bba\bas\bsh\bh shell function could be matched as
-     follows:
-
-         env_keep += "BASH_FUNC_my_func%%=()*"
-
-     Without the "=()*" suffix, this would not match, as b\bba\bas\bsh\bh shell functions
-     are not preserved by default.
-
-     The complete list of environment variables that are preserved or removed,
-     as modified by global Defaults parameters in _\bs_\bu_\bd_\bo_\be_\br_\bs, is displayed when
-     s\bsu\bud\bdo\bo is run by root with the -\b-V\bV option.  Please note that the list of
-     environment variables to remove varies based on the operating system s\bsu\bud\bdo\bo
-     is running on.
-
-     Other s\bsu\bud\bdo\boe\ber\brs\bs options may influence the command environment, such as
-     _\ba_\bl_\bw_\ba_\by_\bs_\b__\bs_\be_\bt_\b__\bh_\bo_\bm_\be, _\bs_\be_\bc_\bu_\br_\be_\b__\bp_\ba_\bt_\bh, _\bs_\be_\bt_\b__\bl_\bo_\bg_\bn_\ba_\bm_\be, and _\bs_\be_\bt_\b__\bh_\bo_\bm_\be.
-
-     On systems that support PAM where the p\bpa\bam\bm_\b_e\ben\bnv\bv module is enabled for s\bsu\bud\bdo\bo,
-     variables in the PAM environment may be merged in to the environment.  If
-     a variable in the PAM environment is already present in the user's
-     environment, the value will only be overridden if the variable was not
-     preserved by s\bsu\bud\bdo\boe\ber\brs\bs.  When _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt is enabled, variables preserved
-     from the invoking user's environment by the _\be_\bn_\bv_\b__\bk_\be_\be_\bp list take precedence
-     over those in the PAM environment.  When _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt is disabled, variables
-     present the invoking user's environment take precedence over those in the
-     PAM environment unless they match a pattern in the _\be_\bn_\bv_\b__\bd_\be_\bl_\be_\bt_\be list.
-
-     Note that the dynamic linker on most operating systems will remove
-     variables that can control dynamic linking from the environment of setuid
-     executables, including s\bsu\bud\bdo\bo.  Depending on the operating system this may
-     include _RLD*, DYLD_*, LD_*, LDR_*, LIBPATH, SHLIB_PATH, and others.
-     These type of variables are removed from the environment before s\bsu\bud\bdo\bo even
-     begins execution and, as such, it is not possible for s\bsu\bud\bdo\bo to preserve
-     them.
-
-     As a special case, if s\bsu\bud\bdo\bo's -\b-i\bi option (initial login) is specified,
-     s\bsu\bud\bdo\boe\ber\brs\bs will initialize the environment regardless of the value of
-     _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt.  The DISPLAY, PATH and TERM variables remain unchanged; HOME,
-     MAIL, SHELL, USER, and LOGNAME are set based on the target user.  On AIX
-     (and Linux systems without PAM), the contents of _\b/_\be_\bt_\bc_\b/_\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt are
-     also included.  On BSD systems, if the _\bu_\bs_\be_\b__\bl_\bo_\bg_\bi_\bn_\bc_\bl_\ba_\bs_\bs flag is enabled,
-     the _\bp_\ba_\bt_\bh and _\bs_\be_\bt_\be_\bn_\bv variables in _\b/_\be_\bt_\bc_\b/_\bl_\bo_\bg_\bi_\bn_\b._\bc_\bo_\bn_\bf are also applied.  All
-     other environment variables are removed unless permitted by _\be_\bn_\bv_\b__\bk_\be_\be_\bp or
-     _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk, described above.
-
-     Finally, the _\br_\be_\bs_\bt_\br_\bi_\bc_\bt_\be_\bd_\b__\be_\bn_\bv_\b__\bf_\bi_\bl_\be and _\be_\bn_\bv_\b__\bf_\bi_\bl_\be files are applied, if
-     present.  The variables in _\br_\be_\bs_\bt_\br_\bi_\bc_\bt_\be_\bd_\b__\be_\bn_\bv_\b__\bf_\bi_\bl_\be are applied first and are
-     subject to the same restrictions as the invoking user's environment, as
-     detailed above.  The variables in _\be_\bn_\bv_\b__\bf_\bi_\bl_\be are applied last and are not
-     subject to these restrictions.  In both cases, variables present in the
-     files will only be set to their specified values if they would not
-     conflict with an existing environment variable.
-
-S\bSU\bUD\bDO\bOE\bER\bRS\bS F\bFI\bIL\bLE\bE F\bFO\bOR\bRM\bMA\bAT\bT
-     The _\bs_\bu_\bd_\bo_\be_\br_\bs file is composed of two types of entries: aliases (basically
-     variables) and user specifications (which specify who may run what).
-
-     When multiple entries match for a user, they are applied in order.  Where
-     there are multiple matches, the last match is used (which is not
-     necessarily the most specific match).
-
-     The _\bs_\bu_\bd_\bo_\be_\br_\bs file grammar will be described below in Extended Backus-Naur
-     Form (EBNF).  Don't despair if you are unfamiliar with EBNF; it is fairly
-     simple, and the definitions below are annotated.
-
-   Q\bQu\bui\bic\bck\bk g\bgu\bui\bid\bde\be t\bto\bo E\bEB\bBN\bNF\bF
-     EBNF is a concise and exact way of describing the grammar of a language.
-     Each EBNF definition is made up of _\bp_\br_\bo_\bd_\bu_\bc_\bt_\bi_\bo_\bn _\br_\bu_\bl_\be_\bs.  E.g.,
-
-     symbol ::= definition | alternate1 | alternate2 ...
-
-     Each _\bp_\br_\bo_\bd_\bu_\bc_\bt_\bi_\bo_\bn _\br_\bu_\bl_\be references others and thus makes up a grammar for
-     the language.  EBNF also contains the following operators, which many
-     readers will recognize from regular expressions.  Do not, however,
-     confuse them with "wildcard" characters, which have different meanings.
-
-     ?     Means that the preceding symbol (or group of symbols) is optional.
-           That is, it may appear once or not at all.
-
-     *     Means that the preceding symbol (or group of symbols) may appear
-           zero or more times.
-
-     +     Means that the preceding symbol (or group of symbols) may appear
-           one or more times.
-
-     Parentheses may be used to group symbols together.  For clarity, we will
-     use single quotes ('') to designate what is a verbatim character string
-     (as opposed to a symbol name).
-
-   A\bAl\bli\bia\bas\bse\bes\bs
-     There are four kinds of aliases: User_Alias, Runas_Alias, Host_Alias and
-     Cmnd_Alias.
-
-     Alias ::= 'User_Alias'  User_Alias_Spec (':' User_Alias_Spec)* |
-               'Runas_Alias' Runas_Alias_Spec (':' Runas_Alias_Spec)* |
-               'Host_Alias'  Host_Alias_Spec (':' Host_Alias_Spec)* |
-               'Cmnd_Alias'  Cmnd_Alias_Spec (':' Cmnd_Alias_Spec)*
-
-     User_Alias ::= NAME
-
-     User_Alias_Spec ::= User_Alias '=' User_List
-
-     Runas_Alias ::= NAME
-
-     Runas_Alias_Spec ::= Runas_Alias '=' Runas_List
-
-     Host_Alias ::= NAME
-
-     Host_Alias_Spec ::= Host_Alias '=' Host_List
-
-     Cmnd_Alias ::= NAME
-
-     Cmnd_Alias_Spec ::= Cmnd_Alias '=' Cmnd_List
-
-     NAME ::= [A-Z]([A-Z][0-9]_)*
-
-     Each _\ba_\bl_\bi_\ba_\bs definition is of the form
-
-     Alias_Type NAME = item1, item2, ...
-
-     where _\bA_\bl_\bi_\ba_\bs_\b__\bT_\by_\bp_\be is one of User_Alias, Runas_Alias, Host_Alias, or
-     Cmnd_Alias.  A NAME is a string of uppercase letters, numbers, and
-     underscore characters (`_').  A NAME m\bmu\bus\bst\bt start with an uppercase letter.
-     It is possible to put several alias definitions of the same type on a
-     single line, joined by a colon (`:').  E.g.,
-
-     Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
-
-     It is a syntax error to redefine an existing _\ba_\bl_\bi_\ba_\bs.  It is possible to
-     use the same name for _\ba_\bl_\bi_\ba_\bs_\be_\bs of different types, but this is not
-     recommended.
-
-     The definitions of what constitutes a valid _\ba_\bl_\bi_\ba_\bs member follow.
-
-     User_List ::= User |
-                   User ',' User_List
-
-     User ::= '!'* user name |
-              '!'* #uid |
-              '!'* %group |
-              '!'* %#gid |
-              '!'* +netgroup |
-              '!'* %:nonunix_group |
-              '!'* %:#nonunix_gid |
-              '!'* User_Alias
-
-     A User_List is made up of one or more user names, user IDs (prefixed with
-     `#'), system group names and IDs (prefixed with `%' and `%#'
-     respectively), netgroups (prefixed with `+'), non-Unix group names and
-     IDs (prefixed with `%:' and `%:#' respectively) and User_Aliases. Each
-     list item may be prefixed with zero or more `!' operators.  An odd number
-     of `!' operators negate the value of the item; an even number just cancel
-     each other out.  User netgroups are matched using the user and domain
-     members only; the host member is not used when matching.
-
-     A user name, uid, group, gid, netgroup, nonunix_group or nonunix_gid may
-     be enclosed in double quotes to avoid the need for escaping special
-     characters.  Alternately, special characters may be specified in escaped
-     hex mode, e.g., \x20 for space.  When using double quotes, any prefix
-     characters must be included inside the quotes.
-
-     The actual nonunix_group and nonunix_gid syntax depends on the underlying
-     group provider plugin.  For instance, the QAS AD plugin supports the
-     following formats:
-
-     +\b+\bo\bo  Group in the same domain: "%:Group Name"
-
-     +\b+\bo\bo  Group in any domain: "%:Group Name@FULLY.QUALIFIED.DOMAIN"
-
-     +\b+\bo\bo  Group SID: "%:S-1-2-34-5678901234-5678901234-5678901234-567"
-
-     See _\bG_\bR_\bO_\bU_\bP _\bP_\bR_\bO_\bV_\bI_\bD_\bE_\bR _\bP_\bL_\bU_\bG_\bI_\bN_\bS for more information.
-
-     Note that quotes around group names are optional.  Unquoted strings must
-     use a backslash (`\') to escape spaces and special characters.  See _\bO_\bt_\bh_\be_\br
-     _\bs_\bp_\be_\bc_\bi_\ba_\bl _\bc_\bh_\ba_\br_\ba_\bc_\bt_\be_\br_\bs _\ba_\bn_\bd _\br_\be_\bs_\be_\br_\bv_\be_\bd _\bw_\bo_\br_\bd_\bs for a list of characters that need
-     to be escaped.
-
-     Runas_List ::= Runas_Member |
-                    Runas_Member ',' Runas_List
-
-     Runas_Member ::= '!'* user name |
-                      '!'* #uid |
-                      '!'* %group |
-                      '!'* %#gid |
-                      '!'* %:nonunix_group |
-                      '!'* %:#nonunix_gid |
-                      '!'* +netgroup |
-                      '!'* Runas_Alias
-
-     A Runas_List is similar to a User_List except that instead of
-     User_Aliases it can contain Runas_Aliases.  Note that user names and
-     groups are matched as strings.  In other words, two users (groups) with
-     the same uid (gid) are considered to be distinct.  If you wish to match
-     all user names with the same uid (e.g., root and toor), you can use a uid
-     instead (#0 in the example given).
-
-     Host_List ::= Host |
-                   Host ',' Host_List
-
-     Host ::= '!'* host name |
-              '!'* ip_addr |
-              '!'* network(/netmask)? |
-              '!'* +netgroup |
-              '!'* Host_Alias
-
-     A Host_List is made up of one or more host names, IP addresses, network
-     numbers, netgroups (prefixed with `+') and other aliases.  Again, the
-     value of an item may be negated with the `!' operator.  Host netgroups
-     are matched using the host (both qualified and unqualified) and domain
-     members only; the user member is not used when matching.  If you specify
-     a network number without a netmask, s\bsu\bud\bdo\bo will query each of the local
-     host's network interfaces and, if the network number corresponds to one
-     of the hosts's network interfaces, will use the netmask of that
-     interface.  The netmask may be specified either in standard IP address
-     notation (e.g., 255.255.255.0 or ffff:ffff:ffff:ffff::), or CIDR notation
-     (number of bits, e.g., 24 or 64).  A host name may include shell-style
-     wildcards (see the _\bW_\bi_\bl_\bd_\bc_\ba_\br_\bd_\bs section below), but unless the host name
-     command on your machine returns the fully qualified host name, you'll
-     need to use the _\bf_\bq_\bd_\bn option for wildcards to be useful.  Note that s\bsu\bud\bdo\bo
-     only inspects actual network interfaces; this means that IP address
-     127.0.0.1 (localhost) will never match.  Also, the host name "localhost"
-     will only match if that is the actual host name, which is usually only
-     the case for non-networked systems.
-
-     digest ::= [A-Fa-f0-9]+ |
-                [A-Za-z0-9\+/=]+
-
-     Digest_Spec ::= "sha224" ':' digest |
-                     "sha256" ':' digest |
-                     "sha384" ':' digest |
-                     "sha512" ':' digest
-
-     Cmnd_List ::= Cmnd |
-                   Cmnd ',' Cmnd_List
-
-     command name ::= file name |
-                      file name args |
-                      file name '""'
-
-     Cmnd ::= Digest_Spec? '!'* command name |
-              '!'* directory |
-              '!'* "sudoedit" |
-              '!'* Cmnd_Alias
-
-     A Cmnd_List is a list of one or more command names, directories, and
-     other aliases.  A command name is a fully qualified file name which may
-     include shell-style wildcards (see the _\bW_\bi_\bl_\bd_\bc_\ba_\br_\bd_\bs section below).  A
-     simple file name allows the user to run the command with any arguments
-     they wish.  However, you may also specify command line arguments
-     (including wildcards).  Alternately, you can specify "" to indicate that
-     the command may only be run w\bwi\bit\bth\bho\bou\but\bt command line arguments.  A directory
-     is a fully qualified path name ending in a `/'.  When you specify a
-     directory in a Cmnd_List, the user will be able to run any file within
-     that directory (but not in any sub-directories therein).
-
-     If a Cmnd has associated command line arguments, then the arguments in
-     the Cmnd must match exactly those given by the user on the command line
-     (or match the wildcards if there are any).  Note that the following
-     characters must be escaped with a `\' if they are used in command
-     arguments: `,', `:', `=', `\'.  The built-in command "sudoedit" is used
-     to permit a user to run s\bsu\bud\bdo\bo with the -\b-e\be option (or as s\bsu\bud\bdo\boe\bed\bdi\bit\bt).  It may
-     take command line arguments just as a normal command does.  Note that
-     "sudoedit" is a command built into s\bsu\bud\bdo\bo itself and must be specified in
-     the _\bs_\bu_\bd_\bo_\be_\br_\bs file without a leading path.
-
-     If a command name is prefixed with a Digest_Spec, the command will only
-     match successfully if it can be verified using the specified SHA-2
-     digest.  The following digest formats are supported: sha224, sha256,
-     sha384 and sha512.  The string may be specified in either hex or base64
-     format (base64 is more compact).  There are several utilities capable of
-     generating SHA-2 digests in hex format such as openssl, shasum,
-     sha224sum, sha256sum, sha384sum, sha512sum.
-
-     For example, using openssl:
-
-     $ openssl dgst -sha224 /bin/ls
-     SHA224(/bin/ls)= 118187da8364d490b4a7debbf483004e8f3e053ec954309de2c41a25
-
-     It is also possible to use openssl to generate base64 output:
-
-     $ openssl dgst -binary -sha224 /bin/ls | openssl base64
-     EYGH2oNk1JC0p9679IMATo8+BT7JVDCd4sQaJQ==
-
-     Warning, if the user has write access to the command itself (directly or
-     via a s\bsu\bud\bdo\bo command), it may be possible for the user to replace the
-     command after the digest check has been performed but before the command
-     is executed.  A similar race condition exists on systems that lack the
-     fexecve(2) system call when the directory in which the command is located
-     is writable by the user.  See the description of the _\bf_\bd_\be_\bx_\be_\bc setting for
-     more information on how s\bsu\bud\bdo\bo executes commands that have an associated
-     digest.
-
-     Command digests are only supported by version 1.8.7 or higher.
-
-   D\bDe\bef\bfa\bau\bul\blt\bts\bs
-     Certain configuration options may be changed from their default values at
-     run-time via one or more Default_Entry lines.  These may affect all users
-     on any host, all users on a specific host, a specific user, a specific
-     command, or commands being run as a specific user.  Note that per-command
-     entries may not include command line arguments.  If you need to specify
-     arguments, define a Cmnd_Alias and reference that instead.
-
-     Default_Type ::= 'Defaults' |
-                      'Defaults' '@' Host_List |
-                      'Defaults' ':' User_List |
-                      'Defaults' '!' Cmnd_List |
-                      'Defaults' '>' Runas_List
-
-     Default_Entry ::= Default_Type Parameter_List
-
-     Parameter_List ::= Parameter |
-                        Parameter ',' Parameter_List
-
-     Parameter ::= Parameter '=' Value |
-                   Parameter '+=' Value |
-                   Parameter '-=' Value |
-                   '!'* Parameter
-
-     Parameters may be f\bfl\bla\bag\bgs\bs, i\bin\bnt\bte\beg\bge\ber\br values, s\bst\btr\bri\bin\bng\bgs\bs, or l\bli\bis\bst\bts\bs.  Flags are
-     implicitly boolean and can be turned off via the `!' operator.  Some
-     integer, string and list parameters may also be used in a boolean context
-     to disable them.  Values may be enclosed in double quotes ("") when they
-     contain multiple words.  Special characters may be escaped with a
-     backslash (`\').
-
-     Lists have two additional assignment operators, += and -=.  These
-     operators are used to add to and delete from a list respectively.  It is
-     not an error to use the -= operator to remove an element that does not
-     exist in a list.
-
-     Defaults entries are parsed in the following order: generic, host, user
-     and runas Defaults first, then command defaults.  If there are multiple
-     Defaults settings of the same type, the last matching setting is used.
-     The following Defaults settings are parsed before all others since they
-     may affect subsequent entries: _\bf_\bq_\bd_\bn, _\bg_\br_\bo_\bu_\bp_\b__\bp_\bl_\bu_\bg_\bi_\bn, _\br_\bu_\bn_\ba_\bs_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt,
-     _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bl_\bo_\bc_\ba_\bl_\be.
-
-     See _\bS_\bU_\bD_\bO_\bE_\bR_\bS _\bO_\bP_\bT_\bI_\bO_\bN_\bS for a list of supported Defaults parameters.
-
-   U\bUs\bse\ber\br s\bsp\bpe\bec\bci\bif\bfi\bic\bca\bat\bti\bio\bon\bn
-     User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \
-                   (':' Host_List '=' Cmnd_Spec_List)*
-
-     Cmnd_Spec_List ::= Cmnd_Spec |
-                        Cmnd_Spec ',' Cmnd_Spec_List
-
-     Cmnd_Spec ::= Runas_Spec? Option_Spec* Tag_Spec* Cmnd
-
-     Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
-
-     Option_Spec ::= (SELinux_Spec | Solaris_Priv_Spec | Date_Spec | Timeout_Spec)
-
-     SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')
-
-     Solaris_Priv_Spec ::= ('PRIVS=privset' | 'LIMITPRIVS=privset')
-
-     Date_Spec ::= ('NOTBEFORE=timestamp' | 'NOTAFTER=timestamp')
-
-     Timeout_Spec ::= 'TIMEOUT=timeout'
-
-     Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
-                   'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
-                   'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
-                   'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')
-
-     A u\bus\bse\ber\br s\bsp\bpe\bec\bci\bif\bfi\bic\bca\bat\bti\bio\bon\bn determines which commands a user may run (and as
-     what user) on specified hosts.  By default, commands are run as r\bro\boo\bot\bt, but
-     this can be changed on a per-command basis.
-
-     The basic structure of a user specification is "who where = (as_whom)
-     what".  Let's break that down into its constituent parts:
-
-   R\bRu\bun\bna\bas\bs_\b_S\bSp\bpe\bec\bc
-     A Runas_Spec determines the user and/or the group that a command may be
-     run as.  A fully-specified Runas_Spec consists of two Runas_Lists (as
-     defined above) separated by a colon (`:') and enclosed in a set of
-     parentheses.  The first Runas_List indicates which users the command may
-     be run as via s\bsu\bud\bdo\bo's -\b-u\bu option.  The second defines a list of groups that
-     can be specified via s\bsu\bud\bdo\bo's -\b-g\bg option in addition to any of the target
-     user's groups.  If both Runas_Lists are specified, the command may be run
-     with any combination of users and groups listed in their respective
-     Runas_Lists. If only the first is specified, the command may be run as
-     any user in the list but no -\b-g\bg option may be specified.  If the first
-     Runas_List is empty but the second is specified, the command may be run
-     as the invoking user with the group set to any listed in the Runas_List.
-     If both Runas_Lists are empty, the command may only be run as the
-     invoking user.  If no Runas_Spec is specified the command may be run as
-     r\bro\boo\bot\bt and no group may be specified.
-
-     A Runas_Spec sets the default for the commands that follow it.  What this
-     means is that for the entry:
-
-     dgb     boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
-
-     The user d\bdg\bgb\bb may run _\b/_\bb_\bi_\bn_\b/_\bl_\bs, _\b/_\bb_\bi_\bn_\b/_\bk_\bi_\bl_\bl, and _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bl_\bp_\br_\bm on the host
-     boulder--but only as o\bop\bpe\ber\bra\bat\bto\bor\br.  E.g.,
-
-     $ sudo -u operator /bin/ls
-
-     It is also possible to override a Runas_Spec later on in an entry.  If we
-     modify the entry like so:
-
-     dgb     boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
-
-     Then user d\bdg\bgb\bb is now allowed to run _\b/_\bb_\bi_\bn_\b/_\bl_\bs as o\bop\bpe\ber\bra\bat\bto\bor\br, but _\b/_\bb_\bi_\bn_\b/_\bk_\bi_\bl_\bl
-     and _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bl_\bp_\br_\bm as r\bro\boo\bot\bt.
-
-     We can extend this to allow d\bdg\bgb\bb to run /bin/ls with either the user or
-     group set to o\bop\bpe\ber\bra\bat\bto\bor\br:
-
-     dgb     boulder = (operator : operator) /bin/ls, (root) /bin/kill,\
-             /usr/bin/lprm
-
-     Note that while the group portion of the Runas_Spec permits the user to
-     run as command with that group, it does not force the user to do so.  If
-     no group is specified on the command line, the command will run with the
-     group listed in the target user's password database entry.  The following
-     would all be permitted by the sudoers entry above:
-
-     $ sudo -u operator /bin/ls
-     $ sudo -u operator -g operator /bin/ls
-     $ sudo -g operator /bin/ls
-
-     In the following example, user t\btc\bcm\bm may run commands that access a modem
-     device file with the dialer group.
-
-     tcm     boulder = (:dialer) /usr/bin/tip, /usr/bin/cu,\
-             /usr/local/bin/minicom
-
-     Note that in this example only the group will be set, the command still
-     runs as user t\btc\bcm\bm.  E.g.
-
-     $ sudo -g dialer /usr/bin/cu
-
-     Multiple users and groups may be present in a Runas_Spec, in which case
-     the user may select any combination of users and groups via the -\b-u\bu and -\b-g\bg
-     options.  In this example:
-
-     alan    ALL = (root, bin : operator, system) ALL
-
-     user a\bal\bla\ban\bn may run any command as either user root or bin, optionally
-     setting the group to operator or system.
-
-   O\bOp\bpt\bti\bio\bon\bn_\b_S\bSp\bpe\bec\bc
-     A Cmnd may have zero or more options associated with it.  Options may
-     consist of SELinux roles and/or types, Solaris privileges sets, start
-     and/or end dates and command timeouts.  Once an option is set for a Cmnd,
-     subsequent Cmnds in the Cmnd_Spec_List, inherit that option unless it is
-     overridden by another option.
-
-   S\bSE\bEL\bLi\bin\bnu\bux\bx_\b_S\bSp\bpe\bec\bc
-     On systems with SELinux support, _\bs_\bu_\bd_\bo_\be_\br_\bs file entries may optionally have
-     an SELinux role and/or type associated with a command.  If a role or type
-     is specified with the command it will override any default values
-     specified in _\bs_\bu_\bd_\bo_\be_\br_\bs.  A role or type specified on the command line,
-     however, will supersede the values in _\bs_\bu_\bd_\bo_\be_\br_\bs.
-
-   S\bSo\bol\bla\bar\bri\bis\bs_\b_P\bPr\bri\biv\bv_\b_S\bSp\bpe\bec\bc
-     On Solaris systems, _\bs_\bu_\bd_\bo_\be_\br_\bs file entries may optionally specify Solaris
-     privilege set and/or limit privilege set associated with a command.  If
-     privileges or limit privileges are specified with the command it will
-     override any default values specified in _\bs_\bu_\bd_\bo_\be_\br_\bs.
-
-     A privilege set is a comma-separated list of privilege names.  The
-     ppriv(1) command can be used to list all privileges known to the system.
-     For example:
-
-     $ ppriv -l
-
-     In addition, there are several "special" privilege strings:
-
-     none      the empty set
-
-     all       the set of all privileges
-
-     zone      the set of all privileges available in the current zone
-
-     basic     the default set of privileges normal users are granted at login
-               time
-
-     Privileges can be excluded from a set by prefixing the privilege name
-     with either an `!' or `-' character.
-
-   D\bDa\bat\bte\be_\b_S\bSp\bpe\bec\bc
-     s\bsu\bud\bdo\boe\ber\brs\bs rules can be specified with a start and end date via the
-     NOTBEFORE and NOTAFTER settings.  The time stamp must be specified in
-     _\bG_\be_\bn_\be_\br_\ba_\bl_\bi_\bz_\be_\bd _\bT_\bi_\bm_\be as defined by RFC 4517.  The format is effectively
-     yyyymmddHHMMSSZ where the minutes and seconds are optional.  The `Z'
-     suffix indicates that the time stamp is in Coordinated Universal Time
-     (UTC).  It is also possible to specify a timezone offset from UTC in
-     hours and minutes instead of a `Z'.  For example, `-0500' would
-     correspond to Eastern Standard time in the US.  As an extension, if no
-     `Z' or timezone offset is specified, local time will be used.
-
-     The following are all valid time stamps:
-
-         20170214083000Z
-         2017021408Z
-         20160315220000-0500
-         20151201235900
-
-   T\bTi\bim\bme\beo\bou\but\bt_\b_S\bSp\bpe\bec\bc
-     A command may have a timeout associated with it.  If the timeout expires
-     before the command has exited, the command will be terminated.  The
-     timeout may be specified in combinations of days, hours, minutes and
-     seconds with a single-letter case-insensitive suffix that indicates the
-     unit of time.  For example, a timeout of 7 days, 8 hours, 30 minutes and
-     10 seconds would be written as 7d8h30m10s.  If a number is specified
-     without a unit, seconds are assumed.  Any of the days, minutes, hours or
-     seconds may be omitted.  The order must be from largest to smallest unit
-     and a unit may not be specified more than once.
-
-     The following are all _\bv_\ba_\bl_\bi_\bd timeout values: 7d8h30m10s, 14d, 8h30m, 600s,
-     3600.  The following are _\bi_\bn_\bv_\ba_\bl_\bi_\bd timeout values: 12m2w1d, 30s10m4h,
-     1d2d3h.
-
-     This option is only supported by version 1.8.20 or higher.
-
-   T\bTa\bag\bg_\b_S\bSp\bpe\bec\bc
-     A command may have zero or more tags associated with it.  The following
-     tag values are supported: EXEC, NOEXEC, FOLLOW, NOFOLLOW, LOG_INPUT,
-     NOLOG_INPUT, LOG_OUTPUT, NOLOG_OUTPUT, MAIL, NOMAIL, PASSWD, NOPASSWD,
-     SETENV, and NOSETENV.  Once a tag is set on a Cmnd, subsequent Cmnds in
-     the Cmnd_Spec_List, inherit the tag unless it is overridden by the
-     opposite tag (in other words, PASSWD overrides NOPASSWD and NOEXEC
-     overrides EXEC).
-
-     _\bE_\bX_\bE_\bC and _\bN_\bO_\bE_\bX_\bE_\bC
-
-       If s\bsu\bud\bdo\bo has been compiled with _\bn_\bo_\be_\bx_\be_\bc support and the underlying
-       operating system supports it, the NOEXEC tag can be used to prevent a
-       dynamically-linked executable from running further commands itself.
-
-       In the following example, user a\baa\bar\bro\bon\bn may run _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bm_\bo_\br_\be and
-       _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bv_\bi but shell escapes will be disabled.
-
-       aaron   shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
-
-       See the _\bP_\br_\be_\bv_\be_\bn_\bt_\bi_\bn_\bg _\bs_\bh_\be_\bl_\bl _\be_\bs_\bc_\ba_\bp_\be_\bs section below for more details on how
-       NOEXEC works and whether or not it will work on your system.
-
-     _\bF_\bO_\bL_\bL_\bO_\bW and _\bN_\bO_\bF_\bO_\bL_\bL_\bO_\bW Starting with version 1.8.15, s\bsu\bud\bdo\boe\bed\bdi\bit\bt will not open
-       a file that is a symbolic link unless the _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bf_\bo_\bl_\bl_\bo_\bw option is
-       enabled.  The _\bF_\bO_\bL_\bL_\bO_\bW and _\bN_\bO_\bF_\bO_\bL_\bL_\bO_\bW tags override the value of
-       _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bf_\bo_\bl_\bl_\bo_\bw and can be used to permit (or deny) the editing of
-       symbolic links on a per-command basis.  These tags are only effective
-       for the _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt command and are ignored for all other commands.
-
-     _\bL_\bO_\bG_\b__\bI_\bN_\bP_\bU_\bT and _\bN_\bO_\bL_\bO_\bG_\b__\bI_\bN_\bP_\bU_\bT
-
-       These tags override the value of the _\bl_\bo_\bg_\b__\bi_\bn_\bp_\bu_\bt option on a per-command
-       basis.  For more information, see the description of _\bl_\bo_\bg_\b__\bi_\bn_\bp_\bu_\bt in the
-       _\bS_\bU_\bD_\bO_\bE_\bR_\bS _\bO_\bP_\bT_\bI_\bO_\bN_\bS section below.
-
-     _\bL_\bO_\bG_\b__\bO_\bU_\bT_\bP_\bU_\bT and _\bN_\bO_\bL_\bO_\bG_\b__\bO_\bU_\bT_\bP_\bU_\bT
-
-       These tags override the value of the _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt option on a per-command
-       basis.  For more information, see the description of _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt in the
-       _\bS_\bU_\bD_\bO_\bE_\bR_\bS _\bO_\bP_\bT_\bI_\bO_\bN_\bS section below.
-
-     _\bM_\bA_\bI_\bL and _\bN_\bO_\bM_\bA_\bI_\bL
-
-       These tags provide fine-grained control over whether mail will be sent
-       when a user runs a command by overriding the value of the
-       _\bm_\ba_\bi_\bl_\b__\ba_\bl_\bl_\b__\bc_\bm_\bn_\bd_\bs option on a per-command basis.  They have no effect when
-       s\bsu\bud\bdo\bo is run with the -\b-l\bl or -\b-v\bv options.  A _\bN_\bO_\bM_\bA_\bI_\bL tag will also override
-       the _\bm_\ba_\bi_\bl_\b__\ba_\bl_\bw_\ba_\by_\bs and _\bm_\ba_\bi_\bl_\b__\bn_\bo_\b__\bp_\be_\br_\bm_\bs options.  For more information, see
-       the descriptions of _\bm_\ba_\bi_\bl_\b__\ba_\bl_\bl_\b__\bc_\bm_\bn_\bd_\bs, _\bm_\ba_\bi_\bl_\b__\ba_\bl_\bw_\ba_\by_\bs, and _\bm_\ba_\bi_\bl_\b__\bn_\bo_\b__\bp_\be_\br_\bm_\bs in
-       the _\bS_\bU_\bD_\bO_\bE_\bR_\bS _\bO_\bP_\bT_\bI_\bO_\bN_\bS section below.
-
-     _\bP_\bA_\bS_\bS_\bW_\bD and _\bN_\bO_\bP_\bA_\bS_\bS_\bW_\bD
-
-       By default, s\bsu\bud\bdo\bo requires that a user authenticate him or herself
-       before running a command.  This behavior can be modified via the
-       NOPASSWD tag.  Like a Runas_Spec, the NOPASSWD tag sets a default for
-       the commands that follow it in the Cmnd_Spec_List.  Conversely, the
-       PASSWD tag can be used to reverse things.  For example:
-
-       ray     rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
-
-       would allow the user r\bra\bay\by to run _\b/_\bb_\bi_\bn_\b/_\bk_\bi_\bl_\bl, _\b/_\bb_\bi_\bn_\b/_\bl_\bs, and _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bl_\bp_\br_\bm
-       as r\bro\boo\bot\bt on the machine rushmore without authenticating himself.  If we
-       only want r\bra\bay\by to be able to run _\b/_\bb_\bi_\bn_\b/_\bk_\bi_\bl_\bl without a password the entry
-       would be:
-
-       ray     rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
-
-       Note, however, that the PASSWD tag has no effect on users who are in
-       the group specified by the _\be_\bx_\be_\bm_\bp_\bt_\b__\bg_\br_\bo_\bu_\bp option.
-
-       By default, if the NOPASSWD tag is applied to any of a user's entries
-       for the current host, the user will be able to run "sudo -l" without a
-       password.  Additionally, a user may only run "sudo -v" without a
-       password if all of the user's entries for the current host have the
-       NOPASSWD tag.  This behavior may be overridden via the _\bv_\be_\br_\bi_\bf_\by_\bp_\bw and
-       _\bl_\bi_\bs_\bt_\bp_\bw options.
-
-     _\bS_\bE_\bT_\bE_\bN_\bV and _\bN_\bO_\bS_\bE_\bT_\bE_\bN_\bV
-
-       These tags override the value of the _\bs_\be_\bt_\be_\bn_\bv option on a per-command
-       basis.  Note that if SETENV has been set for a command, the user may
-       disable the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option from the command line via the -\b-E\bE option.
-       Additionally, environment variables set on the command line are not
-       subject to the restrictions imposed by _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk, _\be_\bn_\bv_\b__\bd_\be_\bl_\be_\bt_\be, or
-       _\be_\bn_\bv_\b__\bk_\be_\be_\bp.  As such, only trusted users should be allowed to set
-       variables in this manner.  If the command matched is A\bAL\bLL\bL, the SETENV
-       tag is implied for that command; this default may be overridden by use
-       of the NOSETENV tag.
-
-   W\bWi\bil\bld\bdc\bca\bar\brd\bds\bs
-     s\bsu\bud\bdo\bo allows shell-style _\bw_\bi_\bl_\bd_\bc_\ba_\br_\bd_\bs (aka meta or glob characters) to be
-     used in host names, path names and command line arguments in the _\bs_\bu_\bd_\bo_\be_\br_\bs
-     file.  Wildcard matching is done via the glob(3) and fnmatch(3) functions
-     as specified by IEEE Std 1003.1 ("POSIX.1").
-
-     *         Matches any set of zero or more characters (including white
-               space).
-
-     ?         Matches any single character (including white space).
-
-     [...]     Matches any character in the specified range.
-
-     [!...]    Matches any character _\bn_\bo_\bt in the specified range.
-
-     \x        For any character `x', evaluates to `x'.  This is used to
-               escape special characters such as: `*', `?', `[', and `]'.
-
-     N\bNo\bot\bte\be t\bth\bha\bat\bt t\bth\bhe\bes\bse\be a\bar\bre\be n\bno\bot\bt r\bre\beg\bgu\bul\bla\bar\br e\bex\bxp\bpr\bre\bes\bss\bsi\bio\bon\bns\bs.\b.  Unlike a regular expression
-     there is no way to match one or more characters within a range.
-
-     Character classes may be used if your system's glob(3) and fnmatch(3)
-     functions support them.  However, because the `:' character has special
-     meaning in _\bs_\bu_\bd_\bo_\be_\br_\bs, it must be escaped.  For example:
-
-         /bin/ls [[\:alpha\:]]*
-
-     Would match any file name beginning with a letter.
-
-     Note that a forward slash (`/') will _\bn_\bo_\bt be matched by wildcards used in
-     the file name portion of the command.  This is to make a path like:
-
-         /usr/bin/*
-
-     match _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bw_\bh_\bo but not _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bX_\b1_\b1_\b/_\bx_\bt_\be_\br_\bm.
-
-     When matching the command line arguments, however, a slash _\bd_\bo_\be_\bs get
-     matched by wildcards since command line arguments may contain arbitrary
-     strings and not just path names.
-
-     W\bWi\bil\bld\bdc\bca\bar\brd\bds\bs i\bin\bn c\bco\bom\bmm\bma\ban\bnd\bd l\bli\bin\bne\be a\bar\brg\bgu\bum\bme\ben\bnt\bts\bs s\bsh\bho\bou\bul\bld\bd b\bbe\be u\bus\bse\bed\bd w\bwi\bit\bth\bh c\bca\bar\bre\be.\b.
-     Command line arguments are matched as a single, concatenated string.
-     This mean a wildcard character such as `?' or `*' will match across word
-     boundaries, which may be unexpected.  For example, while a sudoers entry
-     like:
-
-         %operator ALL = /bin/cat /var/log/messages*
-
-     will allow command like:
-
-         $ sudo cat /var/log/messages.1
-
-     It will also allow:
-
-         $ sudo cat /var/log/messages /etc/shadow
-
-     which is probably not what was intended.  In most cases it is better to
-     do command line processing outside of the _\bs_\bu_\bd_\bo_\be_\br_\bs file in a scripting
-     language.
-
-   E\bEx\bxc\bce\bep\bpt\bti\bio\bon\bns\bs t\bto\bo w\bwi\bil\bld\bdc\bca\bar\brd\bd r\bru\bul\ble\bes\bs
-     The following exceptions apply to the above rules:
-
-     ""        If the empty string "" is the only command line argument in the
-               _\bs_\bu_\bd_\bo_\be_\br_\bs file entry it means that command is not allowed to be
-               run with _\ba_\bn_\by arguments.
-
-     sudoedit  Command line arguments to the _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt built-in command should
-               always be path names, so a forward slash (`/') will not be
-               matched by a wildcard.
-
-   I\bIn\bnc\bcl\blu\bud\bdi\bin\bng\bg o\bot\bth\bhe\ber\br f\bfi\bil\ble\bes\bs f\bfr\bro\bom\bm w\bwi\bit\bth\bhi\bin\bn s\bsu\bud\bdo\boe\ber\brs\bs
-     It is possible to include other _\bs_\bu_\bd_\bo_\be_\br_\bs files from within the _\bs_\bu_\bd_\bo_\be_\br_\bs
-     file currently being parsed using the #include and #includedir
-     directives.
-
-     This can be used, for example, to keep a site-wide _\bs_\bu_\bd_\bo_\be_\br_\bs file in
-     addition to a local, per-machine file.  For the sake of this example the
-     site-wide _\bs_\bu_\bd_\bo_\be_\br_\bs file will be _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs and the per-machine one will
-     be _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bl_\bo_\bc_\ba_\bl.  To include _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bl_\bo_\bc_\ba_\bl from within
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs we would use the following line in _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs:
-
-         #include /etc/sudoers.local
-
-     When s\bsu\bud\bdo\bo reaches this line it will suspend processing of the current
-     file (_\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs) and switch to _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bl_\bo_\bc_\ba_\bl.  Upon reaching the
-     end of _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bl_\bo_\bc_\ba_\bl, the rest of _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs will be processed.
-     Files that are included may themselves include other files.  A hard limit
-     of 128 nested include files is enforced to prevent include file loops.
-
-     If the path to the include file is not fully-qualified (does not begin
-     with a `/'), it must be located in the same directory as the sudoers file
-     it was included from.  For example, if _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs contains the line:
-
-         #include sudoers.local
-
-     the file that will be included is _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bl_\bo_\bc_\ba_\bl.
-
-     The file name may also include the %h escape, signifying the short form
-     of the host name.  In other words, if the machine's host name is
-     "xerxes", then
-
-         #include /etc/sudoers.%h
-
-     will cause s\bsu\bud\bdo\bo to include the file _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bx_\be_\br_\bx_\be_\bs.
-
-     The #includedir directive can be used to create a _\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bd directory
-     that the system package manager can drop _\bs_\bu_\bd_\bo_\be_\br_\bs file rules into as part
-     of package installation.  For example, given:
-
-         #includedir /etc/sudoers.d
-
-     s\bsu\bud\bdo\bo will suspend processing of the current file and read each file in
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bd, skipping file names that end in `~' or contain a `.'
-     character to avoid causing problems with package manager or editor
-     temporary/backup files.  Files are parsed in sorted lexical order.  That
-     is, _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bd_\b/_\b0_\b1_\b__\bf_\bi_\br_\bs_\bt will be parsed before
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bd_\b/_\b1_\b0_\b__\bs_\be_\bc_\bo_\bn_\bd.  Be aware that because the sorting is lexical,
-     not numeric, _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bd_\b/_\b1_\b__\bw_\bh_\bo_\bo_\bp_\bs would be loaded _\ba_\bf_\bt_\be_\br
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bd_\b/_\b1_\b0_\b__\bs_\be_\bc_\bo_\bn_\bd.  Using a consistent number of leading zeroes in
-     the file names can be used to avoid such problems.  After parsing the
-     files in the directory, control returns to the file that contained the
-     #includedir directive.
-
-     Note that unlike files included via #include, v\bvi\bis\bsu\bud\bdo\bo will not edit the
-     files in a #includedir directory unless one of them contains a syntax
-     error.  It is still possible to run v\bvi\bis\bsu\bud\bdo\bo with the -\b-f\bf flag to edit the
-     files directly, but this will not catch the redefinition of an _\ba_\bl_\bi_\ba_\bs that
-     is also present in a different file.
-
-   O\bOt\bth\bhe\ber\br s\bsp\bpe\bec\bci\bia\bal\bl c\bch\bha\bar\bra\bac\bct\bte\ber\brs\bs a\ban\bnd\bd r\bre\bes\bse\ber\brv\bve\bed\bd w\bwo\bor\brd\bds\bs
-     The pound sign (`#') is used to indicate a comment (unless it is part of
-     a #include directive or unless it occurs in the context of a user name
-     and is followed by one or more digits, in which case it is treated as a
-     uid).  Both the comment character and any text after it, up to the end of
-     the line, are ignored.
-
-     The reserved word A\bAL\bLL\bL is a built-in _\ba_\bl_\bi_\ba_\bs that always causes a match to
-     succeed.  It can be used wherever one might otherwise use a Cmnd_Alias,
-     User_Alias, Runas_Alias, or Host_Alias.  You should not try to define
-     your own _\ba_\bl_\bi_\ba_\bs called A\bAL\bLL\bL as the built-in alias will be used in
-     preference to your own.  Please note that using A\bAL\bLL\bL can be dangerous
-     since in a command context, it allows the user to run _\ba_\bn_\by command on the
-     system.
-
-     An exclamation point (`!') can be used as a logical _\bn_\bo_\bt operator in a
-     list or _\ba_\bl_\bi_\ba_\bs as well as in front of a Cmnd.  This allows one to exclude
-     certain values.  For the `!' operator to be effective, there must be
-     something for it to exclude.  For example, to match all users except for
-     root one would use:
-
-         ALL,!root
-
-     If the A\bAL\bLL\bL, is omitted, as in:
-
-         !root
-
-     it would explicitly deny root but not match any other users.  This is
-     different from a true "negation" operator.
-
-     Note, however, that using a `!' in conjunction with the built-in A\bAL\bLL\bL
-     alias to allow a user to run "all but a few" commands rarely works as
-     intended (see _\bS_\bE_\bC_\bU_\bR_\bI_\bT_\bY _\bN_\bO_\bT_\bE_\bS below).
-
-     Long lines can be continued with a backslash (`\') as the last character
-     on the line.
-
-     White space between elements in a list as well as special syntactic
-     characters in a _\bU_\bs_\be_\br _\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\ba_\bt_\bi_\bo_\bn (`=', `:', `(', `)') is optional.
-
-     The following characters must be escaped with a backslash (`\') when used
-     as part of a word (e.g., a user name or host name): `!', `=', `:', `,',
-     `(', `)', `\'.
-
-S\bSU\bUD\bDO\bOE\bER\bRS\bS O\bOP\bPT\bTI\bIO\bON\bNS\bS
-     s\bsu\bud\bdo\bo's behavior can be modified by Default_Entry lines, as explained
-     earlier.  A list of all supported Defaults parameters, grouped by type,
-     are listed below.
-
-     B\bBo\boo\bol\ble\bea\ban\bn F\bFl\bla\bag\bgs\bs:
-
-     always_query_group_plugin
-                       If a _\bg_\br_\bo_\bu_\bp_\b__\bp_\bl_\bu_\bg_\bi_\bn is configured, use it to resolve
-                       groups of the form %group as long as there is not also
-                       a system group of the same name.  Normally, only groups
-                       of the form %:group are passed to the _\bg_\br_\bo_\bu_\bp_\b__\bp_\bl_\bu_\bg_\bi_\bn.
-                       This flag is _\bo_\bf_\bf by default.
-
-     always_set_home   If enabled, s\bsu\bud\bdo\bo will set the HOME environment variable
-                       to the home directory of the target user (which is root
-                       unless the -\b-u\bu option is used).  This effectively means
-                       that the -\b-H\bH option is always implied.  Note that by
-                       default, HOME will be set to the home directory of the
-                       target user when the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is enabled, so
-                       _\ba_\bl_\bw_\ba_\by_\bs_\b__\bs_\be_\bt_\b__\bh_\bo_\bm_\be only has an effect for configurations
-                       where either _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt is disabled or HOME is present
-                       in the _\be_\bn_\bv_\b__\bk_\be_\be_\bp list.  This flag is _\bo_\bf_\bf by default.
-
-     authenticate      If set, users must authenticate themselves via a
-                       password (or other means of authentication) before they
-                       may run commands.  This default may be overridden via
-                       the PASSWD and NOPASSWD tags.  This flag is _\bo_\bn by
-                       default.
-
-     case_insensitive_group
-                       If enabled, group names in _\bs_\bu_\bd_\bo_\be_\br_\bs will be matched in a
-                       case insensitive manner.  This may be necessary when
-                       users are stored in LDAP or AD.  This flag is _\bo_\bn by
-                       default.
-
-     case_insensitive_user
-                       If enabled, user names in _\bs_\bu_\bd_\bo_\be_\br_\bs will be matched in a
-                       case insensitive manner.  This may be necessary when
-                       groups are stored in LDAP or AD.  This flag is _\bo_\bn by
-                       default.
-
-     closefrom_override
-                       If set, the user may use s\bsu\bud\bdo\bo's -\b-C\bC option which
-                       overrides the default starting point at which s\bsu\bud\bdo\bo
-                       begins closing open file descriptors.  This flag is _\bo_\bf_\bf
-                       by default.
-
-     compress_io       If set, and s\bsu\bud\bdo\bo is configured to log a command's input
-                       or output, the I/O logs will be compressed using z\bzl\bli\bib\bb.
-                       This flag is _\bo_\bn by default when s\bsu\bud\bdo\bo is compiled with
-                       z\bzl\bli\bib\bb support.
-
-     exec_background   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 the _\be_\bx_\be_\bc_\b__\bb_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd flag 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 flag), 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, macOS 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 macOS).
-                       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.  This flag
-                       is _\bo_\bf_\bf by default.
-
-                       This setting is only supported by version 1.8.7 or
-                       higher.  It has no effect unless I/O logging is enabled
-                       or the _\bu_\bs_\be_\b__\bp_\bt_\by flag is enabled.
-
-     env_editor        If set, v\bvi\bis\bsu\bud\bdo\bo will use the value of the SUDO_EDITOR,
-                       VISUAL or EDITOR environment variables before falling
-                       back on the default editor list.  Note that v\bvi\bis\bsu\bud\bdo\bo is
-                       typically run as root so this option may allow a user
-                       with v\bvi\bis\bsu\bud\bdo\bo privileges to run arbitrary commands as
-                       root without logging.  An alternative is to place a
-                       colon-separated list of "safe" editors int the _\be_\bd_\bi_\bt_\bo_\br
-                       variable.  v\bvi\bis\bsu\bud\bdo\bo will then only use SUDO_EDITOR,
-                       VISUAL or EDITOR if they match a value specified in
-                       _\be_\bd_\bi_\bt_\bo_\br.  If the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt flag is enabled, the
-                       SUDO_EDITOR, VISUAL and/or EDITOR environment variables
-                       must be present in the _\be_\bn_\bv_\b__\bk_\be_\be_\bp list for the _\be_\bn_\bv_\b__\be_\bd_\bi_\bt_\bo_\br
-                       flag to function when v\bvi\bis\bsu\bud\bdo\bo is invoked via s\bsu\bud\bdo\bo.  This
-                       flag is _\bo_\bn by default.
-
-     env_reset         If set, s\bsu\bud\bdo\bo will run the command in a minimal
-                       environment containing the TERM, PATH, HOME, MAIL,
-                       SHELL, LOGNAME, USER and SUDO_* variables.  Any
-                       variables in the caller's environment or in the file
-                       specified by the _\br_\be_\bs_\bt_\br_\bi_\bc_\bt_\be_\bd_\b__\be_\bn_\bv_\b__\bf_\bi_\bl_\be option that match
-                       the env_keep and env_check lists are then added,
-                       followed by any variables present in the file specified
-                       by the _\be_\bn_\bv_\b__\bf_\bi_\bl_\be option (if any).  The contents of the
-                       env_keep and env_check lists, as modified by global
-                       Defaults parameters in _\bs_\bu_\bd_\bo_\be_\br_\bs, are displayed when s\bsu\bud\bdo\bo
-                       is run by root with the -\b-V\bV option.  If the _\bs_\be_\bc_\bu_\br_\be_\b__\bp_\ba_\bt_\bh
-                       option is set, its value will be used for the PATH
-                       environment variable.  This flag is _\bo_\bn by default.
-
-     fast_glob         Normally, s\bsu\bud\bdo\bo uses the glob(3) function to do shell-
-                       style globbing when matching path names.  However,
-                       since it accesses the file system, glob(3) can take a
-                       long time to complete for some patterns, especially
-                       when the pattern references a network file system that
-                       is mounted on demand (auto mounted).  The _\bf_\ba_\bs_\bt_\b__\bg_\bl_\bo_\bb
-                       option causes s\bsu\bud\bdo\bo to use the fnmatch(3) function,
-                       which does not access the file system to do its
-                       matching.  The disadvantage of _\bf_\ba_\bs_\bt_\b__\bg_\bl_\bo_\bb is that it is
-                       unable to match relative path names such as _\b._\b/_\bl_\bs or
-                       _\b._\b._\b/_\bb_\bi_\bn_\b/_\bl_\bs.  This has security implications when path
-                       names that include globbing characters are used with
-                       the negation operator, `!', as such rules can be
-                       trivially bypassed.  As such, this option should not be
-                       used when the _\bs_\bu_\bd_\bo_\be_\br_\bs file contains rules that contain
-                       negated path names which include globbing characters.
-                       This flag is _\bo_\bf_\bf by default.
-
-     fqdn              Set this flag if you want to put fully qualified host
-                       names in the _\bs_\bu_\bd_\bo_\be_\br_\bs file when the local host name (as
-                       returned by the hostname command) does not contain the
-                       domain name.  In other words, instead of myhost you
-                       would use myhost.mydomain.edu.  You may still use the
-                       short form if you wish (and even mix the two).  This
-                       option is only effective when the "canonical" host
-                       name, as returned by the g\bge\bet\bta\bad\bdd\bdr\bri\bin\bnf\bfo\bo() or
-                       g\bge\bet\bth\bho\bos\bst\btb\bby\byn\bna\bam\bme\be() function, is a fully-qualified domain
-                       name.  This is usually the case when the system is
-                       configured to use DNS for host name resolution.
-
-                       If the system is configured to use the _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs file
-                       in preference to DNS, the "canonical" host name may not
-                       be fully-qualified.  The order that sources are queried
-                       for host name resolution is usually specified in the
-                       _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf, _\b/_\be_\bt_\bc_\b/_\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf, _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\b._\bc_\bo_\bn_\bf,
-                       or, in some cases, _\b/_\be_\bt_\bc_\b/_\br_\be_\bs_\bo_\bl_\bv_\b._\bc_\bo_\bn_\bf file.  In the
-                       _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs file, the first host name of the entry is
-                       considered to be the "canonical" name; subsequent names
-                       are aliases that are not used by s\bsu\bud\bdo\boe\ber\brs\bs.  For example,
-                       the following hosts file line for the machine "xyzzy"
-                       has the fully-qualified domain name as the "canonical"
-                       host name, and the short version as an alias.
-
-                             192.168.1.1 xyzzy.sudo.ws xyzzy
-
-                       If the machine's hosts file entry is not formatted
-                       properly, the _\bf_\bq_\bd_\bn option will not be effective if it
-                       is queried before DNS.
-
-                       Beware that when using DNS for host name resolution,
-                       turning on _\bf_\bq_\bd_\bn requires s\bsu\bud\bdo\boe\ber\brs\bs to make DNS lookups
-                       which renders s\bsu\bud\bdo\bo unusable if DNS stops working (for
-                       example if the machine is disconnected from the
-                       network).  Also note that just like with the hosts
-                       file, you must use the "canonical" name as DNS knows
-                       it.  That is, you may not use a host alias (CNAME
-                       entry) due to performance issues and the fact that
-                       there is no way to get all aliases from DNS.
-
-                       This flag is _\bo_\bf_\bf by default.
-
-     ignore_audit_errors
-                       Allow commands to be run even if s\bsu\bud\bdo\boe\ber\brs\bs cannot write
-                       to the audit log.  If enabled, an audit log write
-                       failure is not treated as a fatal error.  If disabled,
-                       a command may only be run after the audit event is
-                       successfully written.  This flag is only effective on
-                       systems for which s\bsu\bud\bdo\boe\ber\brs\bs supports audit logging,
-                       including FreeBSD, Linux, macOS and Solaris.  This flag
-                       is _\bo_\bn by default.
-
-     ignore_dot        If set, s\bsu\bud\bdo\bo will ignore "." or "" (both denoting
-                       current directory) in the PATH environment variable;
-                       the PATH itself is not modified.  This flag is _\bo_\bf_\bf by
-                       default.
-
-     ignore_iolog_errors
-                       Allow commands to be run even if s\bsu\bud\bdo\boe\ber\brs\bs cannot write
-                       to the I/O log.  If enabled, an I/O log write failure
-                       is not treated as a fatal error.  If disabled, the
-                       command will be terminated if the I/O log cannot be
-                       written to.  This flag is _\bo_\bf_\bf by default.
-
-     ignore_logfile_errors
-                       Allow commands to be run even if s\bsu\bud\bdo\boe\ber\brs\bs cannot write
-                       to the log file.  If enabled, a log file write failure
-                       is not treated as a fatal error.  If disabled, a
-                       command may only be run after the log file entry is
-                       successfully written.  This flag only has an effect
-                       when s\bsu\bud\bdo\boe\ber\brs\bs is configured to use file-based logging
-                       via the _\bl_\bo_\bg_\bf_\bi_\bl_\be option.  This flag is _\bo_\bn by default.
-
-     ignore_local_sudoers
-                       If set via LDAP, parsing of _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs will be
-                       skipped.  This is intended for Enterprises that wish to
-                       prevent the usage of local sudoers files so that only
-                       LDAP is used.  This thwarts the efforts of rogue
-                       operators who would attempt to add roles to
-                       _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs.  When this option is present,
-                       _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs does not even need to exist.  Since this
-                       option tells s\bsu\bud\bdo\bo how to behave when no specific LDAP
-                       entries have been matched, this sudoOption is only
-                       meaningful for the cn=defaults section.  This flag is
-                       _\bo_\bf_\bf by default.
-
-     ignore_unknown_defaults
-                       If set, s\bsu\bud\bdo\bo will not produce a warning if it
-                       encounters an unknown Defaults entry in the _\bs_\bu_\bd_\bo_\be_\br_\bs
-                       file or an unknown sudoOption in LDAP.  This flag is
-                       _\bo_\bf_\bf by default.
-
-     insults           If set, s\bsu\bud\bdo\bo will insult users when they enter an
-                       incorrect password.  This flag is _\bo_\bf_\bf by default.
-
-     log_host          If set, the host name will be logged in the (non-
-                       syslog) s\bsu\bud\bdo\bo log file.  This flag is _\bo_\bf_\bf by default.
-
-     log_input         If set, s\bsu\bud\bdo\bo will run the command in a pseudo-tty and
-                       log all user input.  If the standard input is not
-                       connected to the user's tty, due to I/O redirection or
-                       because the command is part of a pipeline, that input
-                       is also captured and stored in a separate log file.
-                       Anything sent to the standard input will be consumed,
-                       regardless of whether or not the command run via s\bsu\bud\bdo\bo
-                       is actually reading the standard input.  This may have
-                       unexpected results when using s\bsu\bud\bdo\bo in a shell script
-                       that expects to process the standard input.  For more
-                       information about I/O logging, see the _\bI_\b/_\bO _\bL_\bO_\bG _\bF_\bI_\bL_\bE_\bS
-                       section.  This flag is _\bo_\bf_\bf by default.
-
-     log_output        If set, s\bsu\bud\bdo\bo will run the command in a pseudo-tty and
-                       log all output that is sent to the screen, similar to
-                       the script(1) command.  For more information about I/O
-                       logging, see the _\bI_\b/_\bO _\bL_\bO_\bG _\bF_\bI_\bL_\bE_\bS section.  This flag is
-                       _\bo_\bf_\bf by default.
-
-     log_year          If set, the four-digit year will be logged in the (non-
-                       syslog) s\bsu\bud\bdo\bo log file.  This flag is _\bo_\bf_\bf by default.
-
-     long_otp_prompt   When validating with a One Time Password (OTP) scheme
-                       such as S\bS/\b/K\bKe\bey\by or O\bOP\bPI\bIE\bE, a two-line prompt is used to
-                       make it easier to cut and paste the challenge to a
-                       local window.  It's not as pretty as the default but
-                       some people find it more convenient.  This flag is _\bo_\bf_\bf
-                       by default.
-
-     mail_all_cmnds    Send mail to the _\bm_\ba_\bi_\bl_\bt_\bo user every time a user attempts
-                       to run a command via s\bsu\bud\bdo\bo (this includes s\bsu\bud\bdo\boe\bed\bdi\bit\bt).  No
-                       mail will be sent if the user runs s\bsu\bud\bdo\bo with the -\b-l\bl or
-                       -\b-v\bv option unless there is an authentication error and
-                       the _\bm_\ba_\bi_\bl_\b__\bb_\ba_\bd_\bp_\ba_\bs_\bs flag is also set.  This flag is _\bo_\bf_\bf by
-                       default.
-
-     mail_always       Send mail to the _\bm_\ba_\bi_\bl_\bt_\bo user every time a user runs
-                       s\bsu\bud\bdo\bo.  This flag is _\bo_\bf_\bf by default.
-
-     mail_badpass      Send mail to the _\bm_\ba_\bi_\bl_\bt_\bo user if the user running s\bsu\bud\bdo\bo
-                       does not enter the correct password.  If the command
-                       the user is attempting to run is not permitted by
-                       s\bsu\bud\bdo\boe\ber\brs\bs and one of the _\bm_\ba_\bi_\bl_\b__\ba_\bl_\bl_\b__\bc_\bm_\bn_\bd_\bs, _\bm_\ba_\bi_\bl_\b__\ba_\bl_\bw_\ba_\by_\bs,
-                       _\bm_\ba_\bi_\bl_\b__\bn_\bo_\b__\bh_\bo_\bs_\bt, _\bm_\ba_\bi_\bl_\b__\bn_\bo_\b__\bp_\be_\br_\bm_\bs or _\bm_\ba_\bi_\bl_\b__\bn_\bo_\b__\bu_\bs_\be_\br flags are
-                       set, this flag will have no effect.  This flag is _\bo_\bf_\bf
-                       by default.
-
-     mail_no_host      If set, mail will be sent to the _\bm_\ba_\bi_\bl_\bt_\bo user if the
-                       invoking user exists in the _\bs_\bu_\bd_\bo_\be_\br_\bs file, but is not
-                       allowed to run commands on the current host.  This flag
-                       is _\bo_\bf_\bf by default.
-
-     mail_no_perms     If set, mail will be sent to the _\bm_\ba_\bi_\bl_\bt_\bo user if the
-                       invoking user is allowed to use s\bsu\bud\bdo\bo but the command
-                       they are trying is not listed in their _\bs_\bu_\bd_\bo_\be_\br_\bs file
-                       entry or is explicitly denied.  This flag is _\bo_\bf_\bf by
-                       default.
-
-     mail_no_user      If set, mail will be sent to the _\bm_\ba_\bi_\bl_\bt_\bo user if the
-                       invoking user is not in the _\bs_\bu_\bd_\bo_\be_\br_\bs file.  This flag is
-                       _\bo_\bn by default.
-
-     match_group_by_gid
-                       By default, s\bsu\bud\bdo\boe\ber\brs\bs will look up each group the user is
-                       a member of by group ID to determine the group name
-                       (this is only done once).  The resulting list of the
-                       user's group names is used when matching groups listed
-                       in the _\bs_\bu_\bd_\bo_\be_\br_\bs file.  This works well on systems where
-                       the number of groups listed in the _\bs_\bu_\bd_\bo_\be_\br_\bs file is
-                       larger than the number of groups a typical user belongs
-                       to.  On systems where group lookups are slow, where
-                       users may belong to a large number of groups, and where
-                       the number of groups listed in the _\bs_\bu_\bd_\bo_\be_\br_\bs file is
-                       relatively small, it may be prohibitively expensive and
-                       running commands via s\bsu\bud\bdo\bo may take longer than normal.
-                       On such systems it may be faster to use the
-                       _\bm_\ba_\bt_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp_\b__\bb_\by_\b__\bg_\bi_\bd flag to avoid resolving the user's
-                       group IDs to group names.  In this case, s\bsu\bud\bdo\boe\ber\brs\bs must
-                       look up any group name listed in the _\bs_\bu_\bd_\bo_\be_\br_\bs file and
-                       use the group ID instead of the group name when
-                       determining whether the user is a member of the group.
-
-                       Note that if _\bm_\ba_\bt_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp_\b__\bb_\by_\b__\bg_\bi_\bd is enabled, group
-                       database lookups performed by s\bsu\bud\bdo\boe\ber\brs\bs will be keyed by
-                       group name as opposed to group ID.  On systems where
-                       there are multiple sources for the group database, it
-                       is possible to have conflicting group names or group
-                       IDs in the local _\b/_\be_\bt_\bc_\b/_\bg_\br_\bo_\bu_\bp file and the remote group
-                       database.  On such systems, enabling or disabling
-                       _\bm_\ba_\bt_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp_\b__\bb_\by_\b__\bg_\bi_\bd can be used to choose whether group
-                       database queries are performed by name (enabled) or ID
-                       (disabled), which may aid in working around group entry
-                       conflicts.
-
-                       The _\bm_\ba_\bt_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp_\b__\bb_\by_\b__\bg_\bi_\bd flag has no effect when _\bs_\bu_\bd_\bo_\be_\br_\bs
-                       data is stored in LDAP.  This flag is _\bo_\bf_\bf by default.
-
-                       This setting is only supported by version 1.8.18 or
-                       higher.
-
-     netgroup_tuple    If set, netgroup lookups will be performed using the
-                       full netgroup tuple: host name, user name and domain
-                       (if one is set).  Historically, s\bsu\bud\bdo\bo only matched the
-                       user name and domain for netgroups used in a User_List
-                       and only matched the host name and domain for netgroups
-                       used in a Host_List.  This flag is _\bo_\bf_\bf by default.
-
-     noexec            If set, all commands run via s\bsu\bud\bdo\bo will behave as if the
-                       NOEXEC tag has been set, unless overridden by an EXEC
-                       tag.  See the description of _\bE_\bX_\bE_\bC _\ba_\bn_\bd _\bN_\bO_\bE_\bX_\bE_\bC above as
-                       well as the _\bP_\br_\be_\bv_\be_\bn_\bt_\bi_\bn_\bg _\bs_\bh_\be_\bl_\bl _\be_\bs_\bc_\ba_\bp_\be_\bs section at the end
-                       of this manual.  This flag is _\bo_\bf_\bf by default.
-
-     pam_acct_mgmt     On systems that use PAM for authentication, s\bsu\bud\bdo\bo will
-                       perform PAM account validation for the invoking user by
-                       default.  The actual checks performed depend on which
-                       PAM modules are configured.  If enabled, account
-                       validation will be performed regardless of whether or
-                       not a password is required.  This flag is _\bo_\bn by
-                       default.
-
-                       This setting is only supported by version 1.8.28 or
-                       higher.
-
-     pam_session       On systems that use PAM for authentication, s\bsu\bud\bdo\bo will
-                       create a new PAM session for the command to be run in.
-                       Disabling _\bp_\ba_\bm_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn may be needed on older PAM
-                       implementations or on operating systems where opening a
-                       PAM session changes the utmp or wtmp files.  If PAM
-                       session support is disabled, resource limits may not be
-                       updated for the command being run.  If _\bp_\ba_\bm_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn,
-                       _\bp_\ba_\bm_\b__\bs_\be_\bt_\bc_\br_\be_\bd, and _\bu_\bs_\be_\b__\bp_\bt_\by are disabled and I/O logging
-                       has not been configured, s\bsu\bud\bdo\bo will execute the command
-                       directly instead of running it as a child process.
-                       This flag is _\bo_\bn by default.
-
-                       This setting is only supported by version 1.8.7 or
-                       higher.
-
-     pam_setcred       On systems that use PAM for authentication, s\bsu\bud\bdo\bo will
-                       attempt to establish credentials for the target user by
-                       default, if supported by the underlying authentication
-                       system.  One example of a credential is a Kerberos
-                       ticket.  If _\bp_\ba_\bm_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn, _\bp_\ba_\bm_\b__\bs_\be_\bt_\bc_\br_\be_\bd, and _\bu_\bs_\be_\b__\bp_\bt_\by are
-                       disabled and I/O logging has not been configured, s\bsu\bud\bdo\bo
-                       will execute the command directly instead of running it
-                       as a child process.  This flag is _\bo_\bn by default.
-
-                       This setting is only supported by version 1.8.8 or
-                       higher.
-
-     passprompt_override
-                       If set, the prompt specified by _\bp_\ba_\bs_\bs_\bp_\br_\bo_\bm_\bp_\bt or the
-                       SUDO_PROMPT environment variable will always be used
-                       and will replace the prompt provided by a PAM module or
-                       other authentication method.  This flag is _\bo_\bf_\bf by
-                       default.
-
-     path_info         Normally, s\bsu\bud\bdo\bo will tell the user when a command could
-                       not be found in their PATH environment variable.  Some
-                       sites may wish to disable this as it could be used to
-                       gather information on the location of executables that
-                       the normal user does not have access to.  The
-                       disadvantage is that if the executable is simply not in
-                       the user's PATH, s\bsu\bud\bdo\bo will tell the user that they are
-                       not allowed to run it, which can be confusing.  This
-                       flag is _\bo_\bn by default.
-
-     preserve_groups   By default, s\bsu\bud\bdo\bo will initialize the group vector to
-                       the list of groups the target user is in.  When
-                       _\bp_\br_\be_\bs_\be_\br_\bv_\be_\b__\bg_\br_\bo_\bu_\bp_\bs is set, the user's existing group
-                       vector is left unaltered.  The real and effective group
-                       IDs, however, are still set to match the target user.
-                       This flag is _\bo_\bf_\bf by default.
-
-     pwfeedback        By default, s\bsu\bud\bdo\bo reads the password like most other
-                       Unix programs, by turning off echo until the user hits
-                       the return (or enter) key.  Some users become confused
-                       by this as it appears to them that s\bsu\bud\bdo\bo has hung at
-                       this point.  When _\bp_\bw_\bf_\be_\be_\bd_\bb_\ba_\bc_\bk is set, s\bsu\bud\bdo\bo will provide
-                       visual feedback when the user presses a key.  Note that
-                       this does have a security impact as an onlooker may be
-                       able to determine the length of the password being
-                       entered.  This flag is _\bo_\bf_\bf by default.
-
-     requiretty        If set, s\bsu\bud\bdo\bo will only run when the user is logged in
-                       to a real tty.  When this flag is set, s\bsu\bud\bdo\bo can only be
-                       run from a login session and not via other means such
-                       as cron(1m) or cgi-bin scripts.  This flag is _\bo_\bf_\bf by
-                       default.
-
-     root_sudo         If set, root is allowed to run s\bsu\bud\bdo\bo too.  Disabling
-                       this prevents users from "chaining" s\bsu\bud\bdo\bo commands to
-                       get a root shell by doing something like "sudo sudo
-                       /bin/sh".  Note, however, that turning off _\br_\bo_\bo_\bt_\b__\bs_\bu_\bd_\bo
-                       will also prevent root from running s\bsu\bud\bdo\boe\bed\bdi\bit\bt.
-                       Disabling _\br_\bo_\bo_\bt_\b__\bs_\bu_\bd_\bo provides no real additional
-                       security; it exists purely for historical reasons.
-                       This flag is _\bo_\bn by default.
-
-     rootpw            If set, s\bsu\bud\bdo\bo will prompt for the root password instead
-                       of the password of the invoking user when running a
-                       command or editing a file.  This flag is _\bo_\bf_\bf by
-                       default.
-
-     runaspw           If set, s\bsu\bud\bdo\bo will prompt for the password of the user
-                       defined by the _\br_\bu_\bn_\ba_\bs_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt option (defaults to root)
-                       instead of the password of the invoking user when
-                       running a command or editing a file.  This flag is _\bo_\bf_\bf
-                       by default.
-
-     set_home          If enabled and s\bsu\bud\bdo\bo is invoked with the -\b-s\bs option the
-                       HOME environment variable will be set to the home
-                       directory of the target user (which is root unless the
-                       -\b-u\bu option is used).  This effectively makes the -\b-s\bs
-                       option imply -\b-H\bH.  Note that HOME is already set when
-                       the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is enabled, so _\bs_\be_\bt_\b__\bh_\bo_\bm_\be is only
-                       effective for configurations where either _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt is
-                       disabled or HOME is present in the _\be_\bn_\bv_\b__\bk_\be_\be_\bp list.  This
-                       flag is _\bo_\bf_\bf by default.
-
-     set_logname       Normally, s\bsu\bud\bdo\bo will set the LOGNAME and USER
-                       environment variables to the name of the target user
-                       (usually root unless the -\b-u\bu option is given).  However,
-                       since some programs (including the RCS revision control
-                       system) use LOGNAME to determine the real identity of
-                       the user, it may be desirable to change this behavior.
-                       This can be done by negating the set_logname option.
-                       Note that _\bs_\be_\bt_\b__\bl_\bo_\bg_\bn_\ba_\bm_\be will have no effect if the
-                       _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option has not been disabled and the _\be_\bn_\bv_\b__\bk_\be_\be_\bp
-                       list contains LOGNAME or USER.  This flag is _\bo_\bn by
-                       default.
-
-     set_utmp          When enabled, s\bsu\bud\bdo\bo will create an entry in the utmp (or
-                       utmpx) file when a pseudo-tty is allocated.  A pseudo-
-                       tty is allocated by s\bsu\bud\bdo\bo when the _\bl_\bo_\bg_\b__\bi_\bn_\bp_\bu_\bt, _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt
-                       or _\bu_\bs_\be_\b__\bp_\bt_\by flags are enabled.  By default, the new
-                       entry will be a copy of the user's existing utmp entry
-                       (if any), with the tty, time, type and pid fields
-                       updated.  This flag is _\bo_\bn by default.
-
-     setenv            Allow the user to disable the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option from the
-                       command line via the -\b-E\bE option.  Additionally,
-                       environment variables set via the command line are not
-                       subject to the restrictions imposed by _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk,
-                       _\be_\bn_\bv_\b__\bd_\be_\bl_\be_\bt_\be, or _\be_\bn_\bv_\b__\bk_\be_\be_\bp.  As such, only trusted users
-                       should be allowed to set variables in this manner.
-                       This flag is _\bo_\bf_\bf by default.
-
-     shell_noargs      If set and s\bsu\bud\bdo\bo is invoked with no arguments it acts as
-                       if the -\b-s\bs option had been given.  That is, it runs a
-                       shell as root (the shell is determined by the SHELL
-                       environment variable if it is set, falling back on the
-                       shell listed in the invoking user's /etc/passwd entry
-                       if not).  This flag is _\bo_\bf_\bf by default.
-
-     stay_setuid       Normally, when s\bsu\bud\bdo\bo executes a command the real and
-                       effective UIDs are set to the target user (root by
-                       default).  This option changes that behavior such that
-                       the real UID is left as the invoking user's UID.  In
-                       other words, this makes s\bsu\bud\bdo\bo act as a setuid wrapper.
-                       This can be useful on systems that disable some
-                       potentially dangerous functionality when a program is
-                       run setuid.  This option is only effective on systems
-                       that support either the setreuid(2) or setresuid(2)
-                       system call.  This flag is _\bo_\bf_\bf by default.
-
-     sudoedit_checkdir
-                       If set, s\bsu\bud\bdo\boe\bed\bdi\bit\bt will check all directory components of
-                       the path to be edited for writability by the invoking
-                       user.  Symbolic links will not be followed in writable
-                       directories and s\bsu\bud\bdo\boe\bed\bdi\bit\bt will refuse to edit a file
-                       located in a writable directory.  These restrictions
-                       are not enforced when s\bsu\bud\bdo\boe\bed\bdi\bit\bt is run by root.  On some
-                       systems, if all directory components of the path to be
-                       edited are not readable by the target user, s\bsu\bud\bdo\boe\bed\bdi\bit\bt
-                       will be unable to edit the file.  This flag is _\bo_\bn by
-                       default.
-
-                       This setting was first introduced in version 1.8.15 but
-                       initially suffered from a race condition.  The check
-                       for symbolic links in writable intermediate directories
-                       was added in version 1.8.16.
-
-     sudoedit_follow   By default, s\bsu\bud\bdo\boe\bed\bdi\bit\bt will not follow symbolic links
-                       when opening files.  The _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bf_\bo_\bl_\bl_\bo_\bw option can be
-                       enabled to allow s\bsu\bud\bdo\boe\bed\bdi\bit\bt to open symbolic links.  It
-                       may be overridden on a per-command basis by the _\bF_\bO_\bL_\bL_\bO_\bW
-                       and _\bN_\bO_\bF_\bO_\bL_\bL_\bO_\bW tags.  This flag is _\bo_\bf_\bf by default.
-
-                       This setting is only supported by version 1.8.15 or
-                       higher.
-
-     syslog_pid        When logging via syslog(3), include the process ID in
-                       the log entry.  This flag is _\bo_\bf_\bf by default.
-
-                       This setting is only supported by version 1.8.21 or
-                       higher.
-
-     targetpw          If set, s\bsu\bud\bdo\bo will prompt for the password of the user
-                       specified by the -\b-u\bu option (defaults to root) instead
-                       of the password of the invoking user when running a
-                       command or editing a file.  Note that this flag
-                       precludes the use of a uid not listed in the passwd
-                       database as an argument to the -\b-u\bu option.  This flag is
-                       _\bo_\bf_\bf by default.
-
-     tty_tickets       If set, users must authenticate on a per-tty basis.
-                       With this flag enabled, s\bsu\bud\bdo\bo will use a separate record
-                       in the time stamp file for each terminal.  If disabled,
-                       a single record is used for all login sessions.
-
-                       This option has been superseded by the _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\by_\bp_\be
-                       option.
-
-     umask_override    If set, s\bsu\bud\bdo\bo will set the umask as specified in the
-                       _\bs_\bu_\bd_\bo_\be_\br_\bs file without modification.  This makes it
-                       possible to specify a umask in the _\bs_\bu_\bd_\bo_\be_\br_\bs file that is
-                       more permissive than the user's own umask and matches
-                       historical behavior.  If _\bu_\bm_\ba_\bs_\bk_\b__\bo_\bv_\be_\br_\br_\bi_\bd_\be is not set,
-                       s\bsu\bud\bdo\bo will set the umask to be the union of the user's
-                       umask and what is specified in _\bs_\bu_\bd_\bo_\be_\br_\bs.  This flag is
-                       _\bo_\bf_\bf by default.
-
-     use_loginclass    If set, s\bsu\bud\bdo\bo will apply the defaults specified for the
-                       target user's login class if one exists.  Only
-                       available if s\bsu\bud\bdo\bo is configured with the
-                       --with-logincap option.  This flag is _\bo_\bf_\bf by default.
-
-     use_netgroups     If set, netgroups (prefixed with `+'), may be used in
-                       place of a user or host.  For LDAP-based sudoers,
-                       netgroup support requires an expensive sub-string match
-                       on the server unless the N\bNE\bET\bTG\bGR\bRO\bOU\bUP\bP_\b_B\bBA\bAS\bSE\bE directive is
-                       present in the _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf file.  If netgroups are
-                       not needed, this option can be disabled to reduce the
-                       load on the LDAP server.  This flag is _\bo_\bn by default.
-
-     use_pty           If set, and s\bsu\bud\bdo\bo is running in a terminal, the command
-                       will be run in a pseudo-pty (even if no I/O logging is
-                       being done).  If the s\bsu\bud\bdo\bo process is not attached to a
-                       terminal, _\bu_\bs_\be_\b__\bp_\bt_\by has no effect.
-
-                       A malicious program run under s\bsu\bud\bdo\bo may be capable of
-                       injecting commands into the user's terminal or running
-                       a background process that retains access to the user's
-                       terminal device even after the main program has
-                       finished executing.  By running the command in a
-                       separate pseudo-pty, this attack is no longer possible.
-                       This flag is _\bo_\bf_\bf by default.
-
-     user_command_timeouts
-                       If set, the user may specify a timeout on the command
-                       line.  If the timeout expires before the command has
-                       exited, the command will be terminated.  If a timeout
-                       is specified both in the _\bs_\bu_\bd_\bo_\be_\br_\bs file and on the
-                       command line, the smaller of the two timeouts will be
-                       used.  See the Timeout_Spec section for a description
-                       of the timeout syntax.  This flag is _\bo_\bf_\bf by default.
-
-                       This setting is only supported by version 1.8.20 or
-                       higher.
-
-     utmp_runas        If set, s\bsu\bud\bdo\bo will store the name of the runas user when
-                       updating the utmp (or utmpx) file.  By default, s\bsu\bud\bdo\bo
-                       stores the name of the invoking user.  This flag is _\bo_\bf_\bf
-                       by default.
-
-     visiblepw         By default, s\bsu\bud\bdo\bo will refuse to run if the user must
-                       enter a password but it is not possible to disable echo
-                       on the terminal.  If the _\bv_\bi_\bs_\bi_\bb_\bl_\be_\bp_\bw flag is set, s\bsu\bud\bdo\bo
-                       will prompt for a password even when it would be
-                       visible on the screen.  This makes it possible to run
-                       things like "ssh somehost sudo ls" since by default,
-                       ssh(1) does not allocate a tty when running a command.
-                       This flag is _\bo_\bf_\bf by default.
-
-     I\bIn\bnt\bte\beg\bge\ber\brs\bs:
-
-     closefrom         Before it executes a command, s\bsu\bud\bdo\bo will close all open
-                       file descriptors other than standard input, standard
-                       output and standard error (ie: file descriptors 0-2).
-                       The _\bc_\bl_\bo_\bs_\be_\bf_\br_\bo_\bm option can be used to specify a different
-                       file descriptor at which to start closing.  The default
-                       is 3.
-
-     command_timeout   The maximum amount of time a command is allowed to run
-                       before it is terminated.  See the Timeout_Spec section
-                       for a description of the timeout syntax.
-
-                       This setting is only supported by version 1.8.20 or
-                       higher.
-
-     maxseq            The maximum sequence number that will be substituted
-                       for the "%{seq}" escape in the I/O log file (see the
-                       _\bi_\bo_\bl_\bo_\bg_\b__\bd_\bi_\br description below for more information).
-                       While the value substituted for "%{seq}" is in base 36,
-                       _\bm_\ba_\bx_\bs_\be_\bq itself should be expressed in decimal.  Values
-                       larger than 2176782336 (which corresponds to the base
-                       36 sequence number "ZZZZZZ") will be silently truncated
-                       to 2176782336.  The default value is 2176782336.
-
-                       Once the local sequence number reaches the value of
-                       _\bm_\ba_\bx_\bs_\be_\bq, it will "roll over" to zero, after which
-                       s\bsu\bud\bdo\boe\ber\brs\bs will truncate and re-use any existing I/O log
-                       path names.
-
-                       This setting is only supported by version 1.8.7 or
-                       higher.
-
-     passwd_tries      The number of tries a user gets to enter his/her
-                       password before s\bsu\bud\bdo\bo logs the failure and exits.  The
-                       default is 3.
-
-     syslog_maxlen     On many systems, syslog(3) has a relatively small log
-                       buffer.  IETF RFC 5424 states that syslog servers must
-                       support messages of at least 480 bytes and should
-                       support messages up to 2048 bytes.  By default, s\bsu\bud\bdo\boe\ber\brs\bs
-                       creates log messages up to 980 bytes which corresponds
-                       to the historic BSD syslog implementation which used a
-                       1024 byte buffer to store the message, date, hostname
-                       and program name.  To prevent syslog messages from
-                       being truncated, s\bsu\bud\bdo\boe\ber\brs\bs will split up log messages
-                       that are larger than _\bs_\by_\bs_\bl_\bo_\bg_\b__\bm_\ba_\bx_\bl_\be_\bn bytes.  When a
-                       message is split, additional parts will include the
-                       string "(command continued)" after the user name and
-                       before the continued command line arguments.
-
-                       This setting is only supported by version 1.8.19 or
-                       higher.
-
-     I\bIn\bnt\bte\beg\bge\ber\brs\bs t\bth\bha\bat\bt c\bca\ban\bn b\bbe\be u\bus\bse\bed\bd i\bin\bn a\ba b\bbo\boo\bol\ble\bea\ban\bn c\bco\bon\bnt\bte\bex\bxt\bt:
-
-     loglinelen        Number of characters per line for the file log.  This
-                       value is used to decide when to wrap lines for nicer
-                       log files.  This has no effect on the syslog log file,
-                       only the file log.  The default is 80 (use 0 or negate
-                       the option to disable word wrap).
-
-     passwd_timeout    Number of minutes before the s\bsu\bud\bdo\bo password prompt times
-                       out, or 0 for no timeout.  The timeout may include a
-                       fractional component if minute granularity is
-                       insufficient, for example 2.5.  The default is 5.
-
-     timestamp_timeout
-                       Number of minutes that can elapse before s\bsu\bud\bdo\bo will ask
-                       for a passwd again.  The timeout may include a
-                       fractional component if minute granularity is
-                       insufficient, for example 2.5.  The default is 5.  Set
-                       this to 0 to always prompt for a password.  If set to a
-                       value less than 0 the user's time stamp will not expire
-                       until the system is rebooted.  This can be used to
-                       allow users to create or delete their own time stamps
-                       via "sudo -v" and "sudo -k" respectively.
-
-     umask             Umask to use when running the command.  Negate this
-                       option or set it to 0777 to preserve the user's umask.
-                       The actual umask that is used will be the union of the
-                       user's umask and the value of the _\bu_\bm_\ba_\bs_\bk option, which
-                       defaults to 0022.  This guarantees that s\bsu\bud\bdo\bo never
-                       lowers the umask when running a command.  Note: on
-                       systems that use PAM, the default PAM configuration may
-                       specify its own umask which will override the value set
-                       in _\bs_\bu_\bd_\bo_\be_\br_\bs.
-
-     S\bSt\btr\bri\bin\bng\bgs\bs:
-
-     authfail_message  Message that is displayed after a user fails to
-                       authenticate.  The message may include the `%d' escape
-                       which will expand to the number of failed password
-                       attempts.  If set, it overrides the default message, %d
-                       incorrect password attempt(s).
-
-     badpass_message   Message that is displayed if a user enters an incorrect
-                       password.  The default is Sorry, try again. unless
-                       insults are enabled.
-
-     editor            A colon (`:') separated list of editors path names used
-                       by s\bsu\bud\bdo\boe\bed\bdi\bit\bt and v\bvi\bis\bsu\bud\bdo\bo.  For s\bsu\bud\bdo\boe\bed\bdi\bit\bt, this list is
-                       used to find an editor when none of the SUDO_EDITOR,
-                       VISUAL or EDITOR environment variables are set to an
-                       editor that exists and is executable.  For v\bvi\bis\bsu\bud\bdo\bo, it
-                       is used as a white list of allowed editors; v\bvi\bis\bsu\bud\bdo\bo will
-                       choose the editor that matches the user's SUDO_EDITOR,
-                       VISUAL or EDITOR environment variable if possible, or
-                       the first editor in the list that exists and is
-                       executable if not.  Unless invoked as s\bsu\bud\bdo\boe\bed\bdi\bit\bt, s\bsu\bud\bdo\bo
-                       does not preserve the SUDO_EDITOR, VISUAL or EDITOR
-                       environment variables unless they are present in the
-                       _\be_\bn_\bv_\b__\bk_\be_\be_\bp list or the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is disabled.  The
-                       default is _\bv_\bi.
-
-     iolog_dir         The top-level directory to use when constructing the
-                       path name for the input/output log directory.  Only
-                       used if the _\bl_\bo_\bg_\b__\bi_\bn_\bp_\bu_\bt or _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt options are enabled
-                       or when the LOG_INPUT or LOG_OUTPUT tags are present
-                       for a command.  The session sequence number, if any, is
-                       stored in the directory.  The default is
-                       _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo.
-
-                       The following percent (`%') escape sequences are
-                       supported:
-
-                       %{seq}
-                             expanded to a monotonically increasing base-36
-                             sequence number, such as 0100A5, where every two
-                             digits are used to form a new directory, e.g.,
-                             _\b0_\b1_\b/_\b0_\b0_\b/_\bA_\b5
-
-                       %{user}
-                             expanded to the invoking user's login name
-
-                       %{group}
-                             expanded to the name of the invoking user's real
-                             group ID
-
-                       %{runas_user}
-                             expanded to the login name of the user the
-                             command will be run as (e.g., root)
-
-                       %{runas_group}
-                             expanded to the group name of the user the
-                             command will be run as (e.g., wheel)
-
-                       %{hostname}
-                             expanded to the local host name without the
-                             domain name
-
-                       %{command}
-                             expanded to the base name of the command being
-                             run
-
-                       In addition, any escape sequences supported by the
-                       system's strftime(3) function will be expanded.
-
-                       To include a literal `%' character, the string `%%'
-                       should be used.
-
-     iolog_file        The path name, relative to _\bi_\bo_\bl_\bo_\bg_\b__\bd_\bi_\br, in which to store
-                       input/output logs when the _\bl_\bo_\bg_\b__\bi_\bn_\bp_\bu_\bt or _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt
-                       options are enabled or when the LOG_INPUT or LOG_OUTPUT
-                       tags are present for a command.  Note that _\bi_\bo_\bl_\bo_\bg_\b__\bf_\bi_\bl_\be
-                       may contain directory components.  The default is
-                       "%{seq}".
-
-                       See the _\bi_\bo_\bl_\bo_\bg_\b__\bd_\bi_\br option above for a list of supported
-                       percent (`%') escape sequences.
-
-                       In addition to the escape sequences, path names that
-                       end in six or more Xs will have the Xs replaced with a
-                       unique combination of digits and letters, similar to
-                       the mktemp(3) function.
-
-                       If the path created by concatenating _\bi_\bo_\bl_\bo_\bg_\b__\bd_\bi_\br and
-                       _\bi_\bo_\bl_\bo_\bg_\b__\bf_\bi_\bl_\be already exists, the existing I/O log file
-                       will be truncated and overwritten unless _\bi_\bo_\bl_\bo_\bg_\b__\bf_\bi_\bl_\be
-                       ends in six or more Xs.
-
-     iolog_flush       If set, s\bsu\bud\bdo\bo will flush I/O log data to disk after each
-                       write instead of buffering it.  This makes it possible
-                       to view the logs in real-time as the program is
-                       executing but may significantly reduce the
-                       effectiveness of I/O log compression.  This flag is _\bo_\bf_\bf
-                       by default.
-
-                       This setting is only supported by version 1.8.20 or
-                       higher.
-
-     iolog_group       The group name to look up when setting the group ID on
-                       new I/O log files and directories.  If _\bi_\bo_\bl_\bo_\bg_\b__\bg_\br_\bo_\bu_\bp is
-                       not set, the primary group ID of the user specified by
-                       _\bi_\bo_\bl_\bo_\bg_\b__\bu_\bs_\be_\br is used.  If neither _\bi_\bo_\bl_\bo_\bg_\b__\bg_\br_\bo_\bu_\bp nor
-                       _\bi_\bo_\bl_\bo_\bg_\b__\bu_\bs_\be_\br are set, I/O log files and directories are
-                       created with group ID 0.
-
-                       This setting is only supported by version 1.8.19 or
-                       higher.
-
-     iolog_mode        The file mode to use when creating I/O log files.  Mode
-                       bits for read and write permissions for owner, group or
-                       other are honored, everything else is ignored.  The
-                       file permissions will always include the owner read and
-                       write bits, even if they are not present in the
-                       specified mode.  When creating I/O log directories,
-                       search (execute) bits are added to match the read and
-                       write bits specified by _\bi_\bo_\bl_\bo_\bg_\b__\bm_\bo_\bd_\be.  Defaults to 0600
-                       (read and write by user only).
-
-                       This setting is only supported by version 1.8.19 or
-                       higher.
-
-     iolog_user        The user name to look up when setting the user and
-                       group IDs on new I/O log files and directories.  If
-                       _\bi_\bo_\bl_\bo_\bg_\b__\bg_\br_\bo_\bu_\bp is set, it will be used instead of the
-                       user's primary group ID.  By default, I/O log files and
-                       directories are created with user and group ID 0.
-
-                       This setting can be useful when the I/O logs are stored
-                       on a Network File System (NFS) share.  Having a
-                       dedicated user own the I/O log files means that s\bsu\bud\bdo\boe\ber\brs\bs
-                       does not write to the log files as user ID 0, which is
-                       usually not permitted by NFS.
-
-                       This setting is only supported by version 1.8.19 or
-                       higher.
-
-     lecture_status_dir
-                       The directory in which s\bsu\bud\bdo\bo stores per-user lecture
-                       status files.  Once a user has received the lecture, a
-                       zero-length file is created in this directory so that
-                       s\bsu\bud\bdo\bo will not lecture the user again.  This directory
-                       should _\bn_\bo_\bt be cleared when the system reboots.  The
-                       default is _\b/_\bv_\ba_\br_\b/_\ba_\bd_\bm_\b/_\bs_\bu_\bd_\bo_\b/_\bl_\be_\bc_\bt_\bu_\br_\be_\bd.
-
-     limitprivs        The default Solaris limit privileges to use when
-                       constructing a new privilege set for a command.  This
-                       bounds all privileges of the executing process.  The
-                       default limit privileges may be overridden on a per-
-                       command basis in _\bs_\bu_\bd_\bo_\be_\br_\bs.  This option is only
-                       available if s\bsu\bud\bdo\boe\ber\brs\bs is built on Solaris 10 or higher.
-
-     mailsub           Subject of the mail sent to the _\bm_\ba_\bi_\bl_\bt_\bo user.  The
-                       escape %h will expand to the host name of the machine.
-                       Default is "*** SECURITY information for %h ***".
-
-     noexec_file       As of s\bsu\bud\bdo\bo version 1.8.1 this option is no longer
-                       supported.  The path to the noexec file should now be
-                       set in the sudo.conf(4) file.
-
-     pam_login_service
-                       On systems that use PAM for authentication, this is the
-                       service name used when the -\b-i\bi option is specified.  The
-                       default value is "sudo".  See the description of
-                       _\bp_\ba_\bm_\b__\bs_\be_\br_\bv_\bi_\bc_\be for more information.
-
-                       This setting is only supported by version 1.8.8 or
-                       higher.
-
-     pam_service       On systems that use PAM for authentication, the service
-                       name specifies the PAM policy to apply.  This usually
-                       corresponds to an entry in the _\bp_\ba_\bm_\b._\bc_\bo_\bn_\bf file or a file
-                       in the _\b/_\be_\bt_\bc_\b/_\bp_\ba_\bm_\b._\bd directory.  The default value is
-                       "sudo".
-
-                       This setting is only supported by version 1.8.8 or
-                       higher.
-
-     passprompt        The default prompt to use when asking for a password;
-                       can be overridden via the -\b-p\bp option or the SUDO_PROMPT
-                       environment variable.  The following percent (`%')
-                       escape sequences are supported:
-
-                       %H    expanded to the local host name including the
-                             domain name (only if the machine's host name is
-                             fully qualified or the _\bf_\bq_\bd_\bn option is set)
-
-                       %h    expanded to the local host name without the
-                             domain name
-
-                       %p    expanded to the user whose password is being
-                             asked for (respects the _\br_\bo_\bo_\bt_\bp_\bw, _\bt_\ba_\br_\bg_\be_\bt_\bp_\bw and
-                             _\br_\bu_\bn_\ba_\bs_\bp_\bw flags in _\bs_\bu_\bd_\bo_\be_\br_\bs)
-
-                       %U    expanded to the login name of the user the
-                             command will be run as (defaults to root)
-
-                       %u    expanded to the invoking user's login name
-
-                       %%    two consecutive % characters are collapsed into a
-                             single % character
-
-                       On systems that use PAM for authentication, _\bp_\ba_\bs_\bs_\bp_\br_\bo_\bm_\bp_\bt
-                       will only be used if the prompt provided by the PAM
-                       module matches the string "Password: " or "username's
-                       Password: ".  This ensures that the _\bp_\ba_\bs_\bs_\bp_\br_\bo_\bm_\bp_\bt setting
-                       does not interfere with challenge-response style
-                       authentication.  The _\bp_\ba_\bs_\bs_\bp_\br_\bo_\bm_\bp_\bt_\b__\bo_\bv_\be_\br_\br_\bi_\bd_\be flag can be
-                       used to change this behavior.
-
-                       The default value is "Password: ".
-
-     privs             The default Solaris privileges to use when constructing
-                       a new privilege set for a command.  This is passed to
-                       the executing process via the inherited privilege set,
-                       but is bounded by the limit privileges.  If the _\bp_\br_\bi_\bv_\bs
-                       option is specified but the _\bl_\bi_\bm_\bi_\bt_\bp_\br_\bi_\bv_\bs option is not,
-                       the limit privileges of the executing process is set to
-                       _\bp_\br_\bi_\bv_\bs.  The default privileges may be overridden on a
-                       per-command basis in _\bs_\bu_\bd_\bo_\be_\br_\bs.  This option is only
-                       available if s\bsu\bud\bdo\boe\ber\brs\bs is built on Solaris 10 or higher.
-
-     role              The default SELinux role to use when constructing a new
-                       security context to run the command.  The default role
-                       may be overridden on a per-command basis in the _\bs_\bu_\bd_\bo_\be_\br_\bs
-                       file or via command line options.  This option is only
-                       available when s\bsu\bud\bdo\bo is built with SELinux support.
-
-     runas_default     The default user to run commands as if the -\b-u\bu option is
-                       not specified on the command line.  This defaults to
-                       root.
-
-     sudoers_locale    Locale to use when parsing the sudoers file, logging
-                       commands, and sending email.  Note that changing the
-                       locale may affect how sudoers is interpreted.  Defaults
-                       to "C".
-
-     timestamp_type    s\bsu\bud\bdo\boe\ber\brs\bs uses per-user time stamp files for credential
-                       caching.  The _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\by_\bp_\be option can be used to
-                       specify the type of time stamp record used.  It has the
-                       following possible values:
-
-                       global  A single time stamp record is used for all of a
-                               user's login sessions, regardless of the
-                               terminal or parent process ID.  An additional
-                               record is used to serialize password prompts
-                               when s\bsu\bud\bdo\bo is used multiple times in a pipeline,
-                               but this does not affect authentication.
-
-                       ppid    A single time stamp record is used for all
-                               processes with the same parent process ID
-                               (usually the shell).  Commands run from the
-                               same shell (or other common parent process)
-                               will not require a password for
-                               _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt minutes (5 by default).
-                               Commands run via s\bsu\bud\bdo\bo with a different parent
-                               process ID, for example from a shell script,
-                               will be authenticated separately.
-
-                       tty     One time stamp record is used for each
-                               terminal, which means that a user's login
-                               sessions are authenticated separately.  If no
-                               terminal is present, the behavior is the same
-                               as _\bp_\bp_\bi_\bd.  Commands run from the same terminal
-                               will not require a password for
-                               _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt minutes (5 by default).
-
-                       kernel  The time stamp is stored in the kernel as an
-                               attribute of the terminal device.  If no
-                               terminal is present, the behavior is the same
-                               as _\bp_\bp_\bi_\bd.  Negative _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt values are
-                               not supported and positive values are limited
-                               to a maximum of 60 minutes.  This is currently
-                               only supported on OpenBSD.
-
-                       The default value is _\bt_\bt_\by.
-
-                       This setting is only supported by version 1.8.21 or
-                       higher.
-
-     timestampdir      The directory in which s\bsu\bud\bdo\bo stores its time stamp
-                       files.  This directory should be cleared when the
-                       system reboots.  The default is _\b/_\bv_\ba_\br_\b/_\br_\bu_\bn_\b/_\bs_\bu_\bd_\bo_\b/_\bt_\bs.
-
-     timestampowner    The owner of the lecture status directory, time stamp
-                       directory and all files stored therein.  The default is
-                       root.
-
-     type              The default SELinux type to use when constructing a new
-                       security context to run the command.  The default type
-                       may be overridden on a per-command basis in the _\bs_\bu_\bd_\bo_\be_\br_\bs
-                       file or via command line options.  This option is only
-                       available when s\bsu\bud\bdo\bo is built with SELinux support.
-
-     S\bSt\btr\bri\bin\bng\bgs\bs t\bth\bha\bat\bt c\bca\ban\bn b\bbe\be u\bus\bse\bed\bd i\bin\bn a\ba b\bbo\boo\bol\ble\bea\ban\bn c\bco\bon\bnt\bte\bex\bxt\bt:
-
-     env_file      The _\be_\bn_\bv_\b__\bf_\bi_\bl_\be option specifies the fully qualified path to a
-                   file containing variables to be set in the environment of
-                   the program being run.  Entries in this file should either
-                   be of the form "VARIABLE=value" or "export VARIABLE=value".
-                   The value may optionally be surrounded by single or double
-                   quotes.  Variables in this file are only added if the
-                   variable does not already exist in the environment.  This
-                   file is considered to be part of the security policy, its
-                   contents are not subject to other s\bsu\bud\bdo\bo environment
-                   restrictions such as _\be_\bn_\bv_\b__\bk_\be_\be_\bp and _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk.
-
-     exempt_group  Users in this group are exempt from password and PATH
-                   requirements.  The group name specified should not include
-                   a % prefix.  This is not set by default.
-
-     fdexec        Determines whether s\bsu\bud\bdo\bo will execute a command by its path
-                   or by an open file descriptor.  It has the following
-                   possible values:
-
-                   always  Always execute by file descriptor.
-
-                   never   Never execute by file descriptor.
-
-                   digest_only
-                           Only execute by file descriptor if the command has
-                           an associated digest in the _\bs_\bu_\bd_\bo_\be_\br_\bs file.
-
-                   The default value is _\bd_\bi_\bg_\be_\bs_\bt_\b__\bo_\bn_\bl_\by.  This avoids a time of
-                   check versus time of use race condition when the command is
-                   located in a directory writable by the invoking user.
-
-                   Note that _\bf_\bd_\be_\bx_\be_\bc will change the first element of the
-                   argument vector for scripts ($0 in the shell) due to the
-                   way the kernel runs script interpreters.  Instead of being
-                   a normal path, it will refer to a file descriptor.  For
-                   example, _\b/_\bd_\be_\bv_\b/_\bf_\bd_\b/_\b4 on Solaris and _\b/_\bp_\br_\bo_\bc_\b/_\bs_\be_\bl_\bf_\b/_\bf_\bd_\b/_\b4 on Linux.
-                   A workaround is to use the SUDO_COMMAND environment
-                   variable instead.
-
-                   The _\bf_\bd_\be_\bx_\be_\bc setting is only used when the command is matched
-                   by path name.  It has no effect if the command is matched
-                   by the built-in A\bAL\bLL\bL alias.
-
-                   This setting is only supported by version 1.8.20 or higher.
-                   If the operating system does not support the fexecve(2)
-                   system call, this setting has no effect.
-
-     group_plugin  A string containing a s\bsu\bud\bdo\boe\ber\brs\bs group plugin with optional
-                   arguments.  The string should consist of the plugin path,
-                   either fully-qualified or relative to the
-                   _\b/_\bu_\bs_\br_\b/_\bl_\bo_\bc_\ba_\bl_\b/_\bl_\bi_\bb_\be_\bx_\be_\bc_\b/_\bs_\bu_\bd_\bo directory, followed by any
-                   configuration arguments the plugin requires.  These
-                   arguments (if any) will be passed to the plugin's
-                   initialization function.  If arguments are present, the
-                   string must be enclosed in double quotes ("").
-
-                   For more information see _\bG_\bR_\bO_\bU_\bP _\bP_\bR_\bO_\bV_\bI_\bD_\bE_\bR _\bP_\bL_\bU_\bG_\bI_\bN_\bS.
-
-     lecture       This option controls when a short lecture will be printed
-                   along with the password prompt.  It has the following
-                   possible values:
-
-                   always  Always lecture the user.
-
-                   never   Never lecture the user.
-
-                   once    Only lecture the user the first time they run s\bsu\bud\bdo\bo.
-
-                   If no value is specified, a value of _\bo_\bn_\bc_\be is implied.
-                   Negating the option results in a value of _\bn_\be_\bv_\be_\br being used.
-                   The default value is _\bo_\bn_\bc_\be.
-
-     lecture_file  Path to a file containing an alternate s\bsu\bud\bdo\bo lecture that
-                   will be used in place of the standard lecture if the named
-                   file exists.  By default, s\bsu\bud\bdo\bo uses a built-in lecture.
-
-     listpw        This option controls when a password will be required when
-                   a user runs s\bsu\bud\bdo\bo with the -\b-l\bl option.  It has the following
-                   possible values:
-
-                   all       All the user's _\bs_\bu_\bd_\bo_\be_\br_\bs file entries for the
-                             current host must have the NOPASSWD flag set to
-                             avoid entering a password.
-
-                   always    The user must always enter a password to use the
-                             -\b-l\bl option.
-
-                   any       At least one of the user's _\bs_\bu_\bd_\bo_\be_\br_\bs file entries
-                             for the current host must have the NOPASSWD flag
-                             set to avoid entering a password.
-
-                   never     The user need never enter a password to use the
-                             -\b-l\bl option.
-
-                   If no value is specified, a value of _\ba_\bn_\by is implied.
-                   Negating the option results in a value of _\bn_\be_\bv_\be_\br being used.
-                   The default value is _\ba_\bn_\by.
-
-     logfile       Path to the s\bsu\bud\bdo\bo log file (not the syslog log file).
-                   Setting a path turns on logging to a file; negating this
-                   option turns it off.  By default, s\bsu\bud\bdo\bo logs via syslog.
-
-     mailerflags   Flags to use when invoking mailer.  Defaults to -\b-t\bt.
-
-     mailerpath    Path to mail program used to send warning mail.  Defaults
-                   to the path to sendmail found at configure time.
-
-     mailfrom      Address to use for the "from" address when sending warning
-                   and error mail.  The address should be enclosed in double
-                   quotes ("") to protect against s\bsu\bud\bdo\bo interpreting the @
-                   sign.  Defaults to the name of the user running s\bsu\bud\bdo\bo.
-
-     mailto        Address to send warning and error mail to.  The address
-                   should be enclosed in double quotes ("") to protect against
-                   s\bsu\bud\bdo\bo interpreting the @ sign.  Defaults to root.
-
-     restricted_env_file
-                   The _\br_\be_\bs_\bt_\br_\bi_\bc_\bt_\be_\bd_\b__\be_\bn_\bv_\b__\bf_\bi_\bl_\be option specifies the fully
-                   qualified path to a file containing variables to be set in
-                   the environment of the program being run.  Entries in this
-                   file should either be of the form "VARIABLE=value" or
-                   "export VARIABLE=value".  The value may optionally be
-                   surrounded by single or double quotes.  Variables in this
-                   file are only added if the variable does not already exist
-                   in the environment.  Unlike _\be_\bn_\bv_\b__\bf_\bi_\bl_\be, the file's contents
-                   are not trusted and are processed in a manner similar to
-                   that of the invoking user's environment.  If _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt is
-                   enabled, variables in the file will only be added if they
-                   are matched by either the _\be_\bn_\bv_\b__\bc_\bh_\be_\bc_\bk or _\be_\bn_\bv_\b__\bk_\be_\be_\bp list.  If
-                   _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt is disabled, variables in the file are added as
-                   long as they are not matched by the _\be_\bn_\bv_\b__\bd_\be_\bl_\be_\bt_\be list.  In
-                   either case, the contents of _\br_\be_\bs_\bt_\br_\bi_\bc_\bt_\be_\bd_\b__\be_\bn_\bv_\b__\bf_\bi_\bl_\be are
-                   processed before the contents of _\be_\bn_\bv_\b__\bf_\bi_\bl_\be.
-
-     secure_path   If set, s\bsu\bud\bdo\bo will use this value in place of the user's
-                   PATH environment variable.  This option can be used to
-                   reset the PATH to a known good value that contains
-                   directories for system administrator commands such as
-                   _\b/_\bu_\bs_\br_\b/_\bs_\bb_\bi_\bn.
-
-                   Users in the group specified by the _\be_\bx_\be_\bm_\bp_\bt_\b__\bg_\br_\bo_\bu_\bp option are
-                   not affected by _\bs_\be_\bc_\bu_\br_\be_\b__\bp_\ba_\bt_\bh.  This option is not set by
-                   default.
-
-     syslog        Syslog facility if syslog is being used for logging (negate
-                   to disable syslog logging).  Defaults to auth.
-
-                   The following syslog facilities are supported: a\bau\but\bth\bhp\bpr\bri\biv\bv (if
-                   your OS supports it), a\bau\but\bth\bh, d\bda\bae\bem\bmo\bon\bn, u\bus\bse\ber\br, l\blo\boc\bca\bal\bl0\b0, l\blo\boc\bca\bal\bl1\b1,
-                   l\blo\boc\bca\bal\bl2\b2, l\blo\boc\bca\bal\bl3\b3, l\blo\boc\bca\bal\bl4\b4, l\blo\boc\bca\bal\bl5\b5, l\blo\boc\bca\bal\bl6\b6, and l\blo\boc\bca\bal\bl7\b7.
-
-     syslog_badpri
-                   Syslog priority to use when the user is not allowed to run
-                   a command or when authentication is unsuccessful.  Defaults
-                   to alert.
-
-                   The following syslog priorities are supported: a\bal\ble\ber\brt\bt, c\bcr\bri\bit\bt,
-                   d\bde\beb\bbu\bug\bg, e\bem\bme\ber\brg\bg, e\ber\brr\br, i\bin\bnf\bfo\bo, n\bno\bot\bti\bic\bce\be, w\bwa\bar\brn\bni\bin\bng\bg, and n\bno\bon\bne\be.
-                   Negating the option or setting it to a value of n\bno\bon\bne\be will
-                   disable logging of unsuccessful commands.
-
-     syslog_goodpri
-                   Syslog priority to use when the user is allowed to run a
-                   command and authentication is successful.  Defaults to
-                   notice.
-
-                   See _\bs_\by_\bs_\bl_\bo_\bg_\b__\bb_\ba_\bd_\bp_\br_\bi for the list of supported syslog
-                   priorities.  Negating the option or setting it to a value
-                   of n\bno\bon\bne\be will disable logging of successful commands.
-
-     verifypw      This option controls when a password will be required when
-                   a user runs s\bsu\bud\bdo\bo with the -\b-v\bv option.  It has the following
-                   possible values:
-
-                   all     All the user's _\bs_\bu_\bd_\bo_\be_\br_\bs file entries for the current
-                           host must have the NOPASSWD flag set to avoid
-                           entering a password.
-
-                   always  The user must always enter a password to use the -\b-v\bv
-                           option.
-
-                   any     At least one of the user's _\bs_\bu_\bd_\bo_\be_\br_\bs file entries for
-                           the current host must have the NOPASSWD flag set to
-                           avoid entering a password.
-
-                   never   The user need never enter a password to use the -\b-v\bv
-                           option.
-
-                   If no value is specified, a value of _\ba_\bl_\bl is implied.
-                   Negating the option results in a value of _\bn_\be_\bv_\be_\br being used.
-                   The default value is _\ba_\bl_\bl.
-
-     L\bLi\bis\bst\bts\bs t\bth\bha\bat\bt c\bca\ban\bn b\bbe\be u\bus\bse\bed\bd i\bin\bn a\ba b\bbo\boo\bol\ble\bea\ban\bn c\bco\bon\bnt\bte\bex\bxt\bt:
-
-     env_check         Environment variables to be removed from the user's
-                       environment unless they are considered "safe".  For all
-                       variables except TZ, "safe" means that the variable's
-                       value does not contain any `%' or `/' characters.  This
-                       can be used to guard against printf-style format
-                       vulnerabilities in poorly-written programs.  The TZ
-                       variable is considered unsafe if any of the following
-                       are true:
-
-                       +\b+\bo\bo  It consists of a fully-qualified path name,
-                          optionally prefixed with a colon (`:'), that does
-                          not match the location of the _\bz_\bo_\bn_\be_\bi_\bn_\bf_\bo directory.
-
-                       +\b+\bo\bo  It contains a _\b._\b. path element.
-
-                       +\b+\bo\bo  It contains white space or non-printable characters.
-
-                       +\b+\bo\bo  It is longer than the value of PATH_MAX.
-
-                       The argument may be a double-quoted, space-separated
-                       list or a single value without double-quotes.  The list
-                       can be replaced, added to, deleted from, or disabled by
-                       using the =, +=, -=, and ! operators respectively.
-                       Regardless of whether the env_reset option is enabled
-                       or disabled, variables specified by env_check will be
-                       preserved in the environment if they pass the
-                       aforementioned check.  The global list of environment
-                       variables to check is displayed when s\bsu\bud\bdo\bo is run by
-                       root with the -\b-V\bV option.
-
-     env_delete        Environment variables to be removed from the user's
-                       environment when the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is not in effect.
-                       The argument may be a double-quoted, space-separated
-                       list or a single value without double-quotes.  The list
-                       can be replaced, added to, deleted from, or disabled by
-                       using the =, +=, -=, and ! operators respectively.  The
-                       global list of environment variables to remove is
-                       displayed when s\bsu\bud\bdo\bo is run by root with the -\b-V\bV option.
-                       Note that many operating systems will remove
-                       potentially dangerous variables from the environment of
-                       any setuid process (such as s\bsu\bud\bdo\bo).
-
-     env_keep          Environment variables to be preserved in the user's
-                       environment when the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is in effect.
-                       This allows fine-grained control over the environment
-                       s\bsu\bud\bdo\bo-spawned processes will receive.  The argument may
-                       be a double-quoted, space-separated list or a single
-                       value without double-quotes.  The list can be replaced,
-                       added to, deleted from, or disabled by using the =, +=,
-                       -=, and ! operators respectively.  The global list of
-                       variables to keep is displayed when s\bsu\bud\bdo\bo is run by root
-                       with the -\b-V\bV option.
-
-G\bGR\bRO\bOU\bUP\bP P\bPR\bRO\bOV\bVI\bID\bDE\bER\bR P\bPL\bLU\bUG\bGI\bIN\bNS\bS
-     The s\bsu\bud\bdo\boe\ber\brs\bs plugin supports its own plugin interface to allow non-Unix
-     group lookups which can query a group source other than the standard Unix
-     group database.  This can be used to implement support for the
-     nonunix_group syntax described earlier.
-
-     Group provider plugins are specified via the _\bg_\br_\bo_\bu_\bp_\b__\bp_\bl_\bu_\bg_\bi_\bn Defaults
-     setting.  The argument to _\bg_\br_\bo_\bu_\bp_\b__\bp_\bl_\bu_\bg_\bi_\bn should consist of the plugin path,
-     either fully-qualified or relative to the _\b/_\bu_\bs_\br_\b/_\bl_\bo_\bc_\ba_\bl_\b/_\bl_\bi_\bb_\be_\bx_\be_\bc_\b/_\bs_\bu_\bd_\bo
-     directory, followed by any configuration options the plugin requires.
-     These options (if specified) will be passed to the plugin's
-     initialization function.  If options are present, the string must be
-     enclosed in double quotes ("").
-
-     The following group provider plugins are installed by default:
-
-     group_file
-               The _\bg_\br_\bo_\bu_\bp_\b__\bf_\bi_\bl_\be plugin supports an alternate group file that
-               uses the same syntax as the _\b/_\be_\bt_\bc_\b/_\bg_\br_\bo_\bu_\bp file.  The path to the
-               group file should be specified as an option to the plugin.  For
-               example, if the group file to be used is _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b-_\bg_\br_\bo_\bu_\bp:
-
-               Defaults group_plugin="group_file.so /etc/sudo-group"
-
-     system_group
-               The _\bs_\by_\bs_\bt_\be_\bm_\b__\bg_\br_\bo_\bu_\bp plugin supports group lookups via the standard
-               C library functions g\bge\bet\btg\bgr\brn\bna\bam\bm() and g\bge\bet\btg\bgr\bri\bid\bd().  This plugin can
-               be used in instances where the user belongs to groups not
-               present in the user's supplemental group vector.  This plugin
-               takes no options:
-
-               Defaults group_plugin=system_group.so
-
-     The group provider plugin API is described in detail in sudo_plugin(4).
-
-L\bLO\bOG\bG F\bFO\bOR\bRM\bMA\bAT\bT
-     s\bsu\bud\bdo\boe\ber\brs\bs can log events using either syslog(3) or a simple log file.  The
-     log format is almost identical in both cases.
-
-   A\bAc\bcc\bce\bep\bpt\bte\bed\bd c\bco\bom\bmm\bma\ban\bnd\bd l\blo\bog\bg e\ben\bnt\btr\bri\bie\bes\bs
-     Commands that sudo runs are logged using the following format (split into
-     multiple lines for readability):
-
-         date hostname progname: username : TTY=ttyname ; PWD=cwd ; \
-             USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \
-             ENV=env_vars COMMAND=command
-
-     Where the fields are as follows:
-
-     date          The date the command was run.  Typically, this is in the
-                   format "MMM, DD, HH:MM:SS".  If logging via syslog(3), the
-                   actual date format is controlled by the syslog daemon.  If
-                   logging to a file and the _\bl_\bo_\bg_\b__\by_\be_\ba_\br option is enabled, the
-                   date will also include the year.
-
-     hostname      The name of the host s\bsu\bud\bdo\bo was run on.  This field is only
-                   present when logging via syslog(3).
-
-     progname      The name of the program, usually _\bs_\bu_\bd_\bo or _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt.  This
-                   field is only present when logging via syslog(3).
-
-     username      The login name of the user who ran s\bsu\bud\bdo\bo.
-
-     ttyname       The short name of the terminal (e.g., "console", "tty01",
-                   or "pts/0") s\bsu\bud\bdo\bo was run on, or "unknown" if there was no
-                   terminal present.
-
-     cwd           The current working directory that s\bsu\bud\bdo\bo was run in.
-
-     runasuser     The user the command was run as.
-
-     runasgroup    The group the command was run as if one was specified on
-                   the command line.
-
-     logid         An I/O log identifier that can be used to replay the
-                   command's output.  This is only present when the _\bl_\bo_\bg_\b__\bi_\bn_\bp_\bu_\bt
-                   or _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt option is enabled.
-
-     env_vars      A list of environment variables specified on the command
-                   line, if specified.
-
-     command       The actual command that was executed.
-
-     Messages are logged using the locale specified by _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bl_\bo_\bc_\ba_\bl_\be, which
-     defaults to the "C" locale.
-
-   D\bDe\ben\bni\bie\bed\bd c\bco\bom\bmm\bma\ban\bnd\bd l\blo\bog\bg e\ben\bnt\btr\bri\bie\bes\bs
-     If the user is not allowed to run the command, the reason for the denial
-     will follow the user name.  Possible reasons include:
-
-     user NOT in sudoers
-        The user is not listed in the _\bs_\bu_\bd_\bo_\be_\br_\bs file.
-
-     user NOT authorized on host
-        The user is listed in the _\bs_\bu_\bd_\bo_\be_\br_\bs file but is not allowed to run
-        commands on the host.
-
-     command not allowed
-        The user is listed in the _\bs_\bu_\bd_\bo_\be_\br_\bs file for the host but they are not
-        allowed to run the specified command.
-
-     3 incorrect password attempts
-        The user failed to enter their password after 3 tries.  The actual
-        number of tries will vary based on the number of failed attempts and
-        the value of the _\bp_\ba_\bs_\bs_\bw_\bd_\b__\bt_\br_\bi_\be_\bs option.
-
-     a password is required
-        s\bsu\bud\bdo\bo's -\b-n\bn option was specified but a password was required.
-
-     sorry, you are not allowed to set the following environment variables
-        The user specified environment variables on the command line that were
-        not allowed by _\bs_\bu_\bd_\bo_\be_\br_\bs.
-
-   E\bEr\brr\bro\bor\br l\blo\bog\bg e\ben\bnt\btr\bri\bie\bes\bs
-     If an error occurs, s\bsu\bud\bdo\boe\ber\brs\bs will log a message and, in most cases, send a
-     message to the administrator via email.  Possible errors include:
-
-     parse error in /etc/sudoers near line N
-        s\bsu\bud\bdo\boe\ber\brs\bs encountered an error when parsing the specified file.  In some
-        cases, the actual error may be one line above or below the line number
-        listed, depending on the type of error.
-
-     problem with defaults entries
-        The _\bs_\bu_\bd_\bo_\be_\br_\bs file contains one or more unknown Defaults settings.  This
-        does not prevent s\bsu\bud\bdo\bo from running, but the _\bs_\bu_\bd_\bo_\be_\br_\bs file should be
-        checked using v\bvi\bis\bsu\bud\bdo\bo.
-
-     timestamp owner (username): No such user
-        The time stamp directory owner, as specified by the _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\bo_\bw_\bn_\be_\br
-        setting, could not be found in the password database.
-
-     unable to open/read /etc/sudoers
-        The _\bs_\bu_\bd_\bo_\be_\br_\bs file could not be opened for reading.  This can happen
-        when the _\bs_\bu_\bd_\bo_\be_\br_\bs file is located on a remote file system that maps
-        user ID 0 to a different value.  Normally, s\bsu\bud\bdo\boe\ber\brs\bs tries to open the
-        _\bs_\bu_\bd_\bo_\be_\br_\bs file using group permissions to avoid this problem.  Consider
-        either changing the ownership of _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs or adding an argument
-        like "sudoers_uid=N" (where `N' is the user ID that owns the _\bs_\bu_\bd_\bo_\be_\br_\bs
-        file) to the end of the s\bsu\bud\bdo\boe\ber\brs\bs Plugin line in the sudo.conf(4) file.
-
-     unable to stat /etc/sudoers
-        The _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs file is missing.
-
-     /etc/sudoers is not a regular file
-        The _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs file exists but is not a regular file or symbolic
-        link.
-
-     /etc/sudoers is owned by uid N, should be 0
-        The _\bs_\bu_\bd_\bo_\be_\br_\bs file has the wrong owner.  If you wish to change the
-        _\bs_\bu_\bd_\bo_\be_\br_\bs file owner, please add "sudoers_uid=N" (where `N' is the user
-        ID that owns the _\bs_\bu_\bd_\bo_\be_\br_\bs file) to the s\bsu\bud\bdo\boe\ber\brs\bs Plugin line in the
-        sudo.conf(4) file.
-
-     /etc/sudoers is world writable
-        The permissions on the _\bs_\bu_\bd_\bo_\be_\br_\bs file allow all users to write to it.
-        The _\bs_\bu_\bd_\bo_\be_\br_\bs file must not be world-writable, the default file mode is
-        0440 (readable by owner and group, writable by none).  The default
-        mode may be changed via the "sudoers_mode" option to the s\bsu\bud\bdo\boe\ber\brs\bs
-        Plugin line in the sudo.conf(4) file.
-
-     /etc/sudoers is owned by gid N, should be 1
-        The _\bs_\bu_\bd_\bo_\be_\br_\bs file has the wrong group ownership.  If you wish to change
-        the _\bs_\bu_\bd_\bo_\be_\br_\bs file group ownership, please add "sudoers_gid=N" (where
-        `N' is the group ID that owns the _\bs_\bu_\bd_\bo_\be_\br_\bs file) to the s\bsu\bud\bdo\boe\ber\brs\bs Plugin
-        line in the sudo.conf(4) file.
-
-     unable to open /var/run/sudo/ts/username
-        s\bsu\bud\bdo\boe\ber\brs\bs was unable to read or create the user's time stamp file.  This
-        can happen when _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\bo_\bw_\bn_\be_\br is set to a user other than root and
-        the mode on _\b/_\bv_\ba_\br_\b/_\br_\bu_\bn_\b/_\bs_\bu_\bd_\bo is not searchable by group or other.  The
-        default mode for _\b/_\bv_\ba_\br_\b/_\br_\bu_\bn_\b/_\bs_\bu_\bd_\bo is 0711.
-
-     unable to write to /var/run/sudo/ts/username
-        s\bsu\bud\bdo\boe\ber\brs\bs was unable to write to the user's time stamp file.
-
-     /var/run/sudo/ts is owned by uid X, should be Y
-        The time stamp directory is owned by a user other than _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\bo_\bw_\bn_\be_\br.
-        This can occur when the value of _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\bo_\bw_\bn_\be_\br has been changed.
-        s\bsu\bud\bdo\boe\ber\brs\bs will ignore the time stamp directory until the owner is
-        corrected.
-
-     /var/run/sudo/ts is group writable
-        The time stamp directory is group-writable; it should be writable only
-        by _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\bo_\bw_\bn_\be_\br.  The default mode for the time stamp directory is
-        0700.  s\bsu\bud\bdo\boe\ber\brs\bs will ignore the time stamp directory until the mode is
-        corrected.
-
-   N\bNo\bot\bte\bes\bs o\bon\bn l\blo\bog\bgg\bgi\bin\bng\bg v\bvi\bia\ba s\bsy\bys\bsl\blo\bog\bg
-     By default, s\bsu\bud\bdo\boe\ber\brs\bs logs messages via syslog(3).  The _\bd_\ba_\bt_\be, _\bh_\bo_\bs_\bt_\bn_\ba_\bm_\be, and
-     _\bp_\br_\bo_\bg_\bn_\ba_\bm_\be fields are added by the system's s\bsy\bys\bsl\blo\bog\bg() function, not s\bsu\bud\bdo\boe\ber\brs\bs
-     itself.  As such, they may vary in format on different systems.
-
-     The maximum size of syslog messages varies from system to system.  The
-     _\bs_\by_\bs_\bl_\bo_\bg_\b__\bm_\ba_\bx_\bl_\be_\bn setting can be used to change the maximum syslog message
-     size from the default value of 980 bytes.  For more information, see the
-     description of _\bs_\by_\bs_\bl_\bo_\bg_\b__\bm_\ba_\bx_\bl_\be_\bn.
-
-   N\bNo\bot\bte\bes\bs o\bon\bn l\blo\bog\bgg\bgi\bin\bng\bg t\bto\bo a\ba f\bfi\bil\ble\be
-     If the _\bl_\bo_\bg_\bf_\bi_\bl_\be option is set, s\bsu\bud\bdo\boe\ber\brs\bs will log to a local file, such as
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo.  When logging to a file, s\bsu\bud\bdo\boe\ber\brs\bs uses a format similar to
-     syslog(3), with a few important differences:
-
-     1.   The _\bp_\br_\bo_\bg_\bn_\ba_\bm_\be and _\bh_\bo_\bs_\bt_\bn_\ba_\bm_\be fields are not present.
-
-     2.   If the _\bl_\bo_\bg_\b__\by_\be_\ba_\br option is enabled, the date will also include the
-          year.
-
-     3.   Lines that are longer than _\bl_\bo_\bg_\bl_\bi_\bn_\be_\bl_\be_\bn characters (80 by default) are
-          word-wrapped and continued on the next line with a four character
-          indent.  This makes entries easier to read for a human being, but
-          makes it more difficult to use grep(1) on the log files.  If the
-          _\bl_\bo_\bg_\bl_\bi_\bn_\be_\bl_\be_\bn option is set to 0 (or negated with a `!'), word wrap
-          will be disabled.
-
-I\bI/\b/O\bO L\bLO\bOG\bG F\bFI\bIL\bLE\bES\bS
-     When I/O logging is enabled, s\bsu\bud\bdo\bo will run the command in a pseudo-tty
-     and log all user input and/or output, depending on which options are
-     enabled.  I/O is logged to the directory specified by the _\bi_\bo_\bl_\bo_\bg_\b__\bd_\bi_\br
-     option (_\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo by default) using a unique session ID that is
-     included in the s\bsu\bud\bdo\bo log line, prefixed with "TSID=".  The _\bi_\bo_\bl_\bo_\bg_\b__\bf_\bi_\bl_\be
-     option may be used to control the format of the session ID.
-
-     Each I/O log is stored in a separate directory that contains the
-     following files:
-
-     _\bl_\bo_\bg       a text file containing the time the command was run, the name
-               of the user who ran s\bsu\bud\bdo\bo, the name of the target user, the name
-               of the target group (optional), the terminal that s\bsu\bud\bdo\bo was run
-               from, the number of rows and columns of the terminal, the
-               working directory the command was run from and the path name of
-               the command itself (with arguments if present)
-
-     _\bt_\bi_\bm_\bi_\bn_\bg    a log of the amount of time between, and the number of bytes
-               in, each I/O log entry (used for session playback)
-
-     _\bt_\bt_\by_\bi_\bn     input from the user's tty (what the user types)
-
-     _\bs_\bt_\bd_\bi_\bn     input from a pipe or file
-
-     _\bt_\bt_\by_\bo_\bu_\bt    output from the pseudo-tty (what the command writes to the
-               screen)
-
-     _\bs_\bt_\bd_\bo_\bu_\bt    standard output to a pipe or redirected to a file
-
-     _\bs_\bt_\bd_\be_\br_\br    standard error to a pipe or redirected to a file
-
-     All files other than _\bl_\bo_\bg are compressed in gzip format unless the
-     _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\b__\bi_\bo flag has been disabled.  Due to buffering, it is not normally
-     possible to display the I/O logs in real-time as the program is executing
-     The I/O log data will not be complete until the program run by s\bsu\bud\bdo\bo has
-     exited or has been terminated by a signal.  The _\bi_\bo_\bl_\bo_\bg_\b__\bf_\bl_\bu_\bs_\bh flag can be
-     used to disable buffering, in which case I/O log data is written to disk
-     as soon as it is available.  The output portion of an I/O log file can be
-     viewed with the sudoreplay(1m) utility, which can also be used to list or
-     search the available logs.
-
-     Note that user input may contain sensitive information such as passwords
-     (even if they are not echoed to the screen), which will be stored in the
-     log file unencrypted.  In most cases, logging the command output via
-     _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt or LOG_OUTPUT is all that is required.
-
-     Since each session's I/O logs are stored in a separate directory,
-     traditional log rotation utilities cannot be used to limit the number of
-     I/O logs.  The simplest way to limit the number of I/O is by setting the
-     _\bm_\ba_\bx_\bs_\be_\bq option to the maximum number of logs you wish to store.  Once the
-     I/O log sequence number reaches _\bm_\ba_\bx_\bs_\be_\bq, it will be reset to zero and
-     s\bsu\bud\bdo\boe\ber\brs\bs will truncate and re-use any existing I/O logs.
-
-F\bFI\bIL\bLE\bES\bS
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf            Sudo front end configuration
-
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs              List of who can run what
-
-     _\b/_\be_\bt_\bc_\b/_\bg_\br_\bo_\bu_\bp                Local groups file
-
-     _\b/_\be_\bt_\bc_\b/_\bn_\be_\bt_\bg_\br_\bo_\bu_\bp             List of network groups
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo          I/O log files
-
-     _\b/_\bv_\ba_\br_\b/_\br_\bu_\bn_\b/_\bs_\bu_\bd_\bo_\b/_\bt_\bs          Directory containing time stamps for the
-                               s\bsu\bud\bdo\boe\ber\brs\bs security policy
-
-     _\b/_\bv_\ba_\br_\b/_\ba_\bd_\bm_\b/_\bs_\bu_\bd_\bo_\b/_\bl_\be_\bc_\bt_\bu_\br_\be_\bd    Directory containing lecture status files for
-                               the s\bsu\bud\bdo\boe\ber\brs\bs security policy
-
-     _\b/_\be_\bt_\bc_\b/_\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt          Initial environment for -\b-i\bi mode on AIX and
-                               Linux systems
-
-E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
-     Below are example _\bs_\bu_\bd_\bo_\be_\br_\bs file entries.  Admittedly, some of these are a
-     bit contrived.  First, we allow a few environment variables to pass and
-     then define our _\ba_\bl_\bi_\ba_\bs_\be_\bs:
-
-     # Run X applications through sudo; HOME is used to find the
-     # .Xauthority file.  Note that other programs use HOME to find
-     # configuration files and this may lead to privilege escalation!
-     Defaults env_keep += "DISPLAY HOME"
-
-     # User alias specification
-     User_Alias      FULLTIMERS = millert, mikef, dowdy
-     User_Alias      PARTTIMERS = bostley, jwfox, crawl
-     User_Alias      WEBMASTERS = will, wendy, wim
-
-     # Runas alias specification
-     Runas_Alias     OP = root, operator
-     Runas_Alias     DB = oracle, sybase
-     Runas_Alias     ADMINGRP = adm, oper
-
-     # Host alias specification
-     Host_Alias      SPARC = bigtime, eclipse, moet, anchor :\
-                     SGI = grolsch, dandelion, black :\
-                     ALPHA = widget, thalamus, foobar :\
-                     HPPA = boa, nag, python
-     Host_Alias      CUNETS = 128.138.0.0/255.255.0.0
-     Host_Alias      CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
-     Host_Alias      SERVERS = master, mail, www, ns
-     Host_Alias      CDROM = orion, perseus, hercules
-
-     # Cmnd alias specification
-     Cmnd_Alias      DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\
-                             /usr/sbin/restore, /usr/sbin/rrestore,\
-                             sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== \
-                             /home/operator/bin/start_backups
-     Cmnd_Alias      KILL = /usr/bin/kill
-     Cmnd_Alias      PRINTING = /usr/sbin/lpc, /usr/bin/lprm
-     Cmnd_Alias      SHUTDOWN = /usr/sbin/shutdown
-     Cmnd_Alias      HALT = /usr/sbin/halt
-     Cmnd_Alias      REBOOT = /usr/sbin/reboot
-     Cmnd_Alias      SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\
-                              /usr/local/bin/tcsh, /usr/bin/rsh,\
-                              /usr/local/bin/zsh
-     Cmnd_Alias      SU = /usr/bin/su
-     Cmnd_Alias      PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
-
-     Here we override some of the compiled in default values.  We want s\bsu\bud\bdo\bo to
-     log via syslog(3) using the _\ba_\bu_\bt_\bh facility in all cases.  We don't want to
-     subject the full time staff to the s\bsu\bud\bdo\bo lecture, user m\bmi\bil\bll\ble\ber\brt\bt need not
-     give a password, and we don't want to reset the LOGNAME or USER
-     environment variables when running commands as root.  Additionally, on
-     the machines in the _\bS_\bE_\bR_\bV_\bE_\bR_\bS Host_Alias, we keep an additional local log
-     file and make sure we log the year in each log line since the log entries
-     will be kept around for several years.  Lastly, we disable shell escapes
-     for the commands in the PAGERS Cmnd_Alias (_\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bm_\bo_\br_\be, _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bp_\bg and
-     _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bl_\be_\bs_\bs).  Note that this will not effectively constrain users with
-     s\bsu\bud\bdo\bo A\bAL\bLL\bL privileges.
-
-     # Override built-in defaults
-     Defaults                syslog=auth
-     Defaults>root           !set_logname
-     Defaults:FULLTIMERS     !lecture
-     Defaults:millert        !authenticate
-     Defaults@SERVERS        log_year, logfile=/var/log/sudo.log
-     Defaults!PAGERS         noexec
-
-     The _\bU_\bs_\be_\br _\bs_\bp_\be_\bc_\bi_\bf_\bi_\bc_\ba_\bt_\bi_\bo_\bn is the part that actually determines who may run
-     what.
-
-     root            ALL = (ALL) ALL
-     %wheel          ALL = (ALL) ALL
-
-     We let r\bro\boo\bot\bt and any user in group w\bwh\bhe\bee\bel\bl run any command on any host as
-     any user.
-
-     FULLTIMERS      ALL = NOPASSWD: ALL
-
-     Full time sysadmins (m\bmi\bil\bll\ble\ber\brt\bt, m\bmi\bik\bke\bef\bf, and d\bdo\bow\bwd\bdy\by) may run any command on
-     any host without authenticating themselves.
-
-     PARTTIMERS      ALL = ALL
-
-     Part time sysadmins b\bbo\bos\bst\btl\ble\bey\by, j\bjw\bwf\bfo\box\bx, and c\bcr\bra\baw\bwl\bl) may run any command on any
-     host but they must authenticate themselves first (since the entry lacks
-     the NOPASSWD tag).
-
-     jack            CSNETS = ALL
-
-     The user j\bja\bac\bck\bk may run any command on the machines in the _\bC_\bS_\bN_\bE_\bT_\bS alias
-     (the networks 128.138.243.0, 128.138.204.0, and 128.138.242.0).  Of those
-     networks, only 128.138.204.0 has an explicit netmask (in CIDR notation)
-     indicating it is a class C network.  For the other networks in _\bC_\bS_\bN_\bE_\bT_\bS,
-     the local machine's netmask will be used during matching.
-
-     lisa            CUNETS = ALL
-
-     The user l\bli\bis\bsa\ba may run any command on any host in the _\bC_\bU_\bN_\bE_\bT_\bS alias (the
-     class B network 128.138.0.0).
-
-     operator        ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\
-                     sudoedit /etc/printcap, /usr/oper/bin/
-
-     The o\bop\bpe\ber\bra\bat\bto\bor\br user may run commands limited to simple maintenance.  Here,
-     those are commands related to backups, killing processes, the printing
-     system, shutting down the system, and any commands in the directory
-     _\b/_\bu_\bs_\br_\b/_\bo_\bp_\be_\br_\b/_\bb_\bi_\bn_\b/.  Note that one command in the DUMPS Cmnd_Alias includes a
-     sha224 digest, _\b/_\bh_\bo_\bm_\be_\b/_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\bb_\bi_\bn_\b/_\bs_\bt_\ba_\br_\bt_\b__\bb_\ba_\bc_\bk_\bu_\bp_\bs.  This is because the
-     directory containing the script is writable by the operator user.  If the
-     script is modified (resulting in a digest mismatch) it will no longer be
-     possible to run it via s\bsu\bud\bdo\bo.
-
-     joe             ALL = /usr/bin/su operator
-
-     The user j\bjo\boe\be may only su(1) to operator.
-
-     pete            HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd *root*
-
-     %opers          ALL = (: ADMINGRP) /usr/sbin/
-
-     Users in the o\bop\bpe\ber\brs\bs group may run commands in _\b/_\bu_\bs_\br_\b/_\bs_\bb_\bi_\bn_\b/ as themselves
-     with any group in the _\bA_\bD_\bM_\bI_\bN_\bG_\bR_\bP Runas_Alias (the a\bad\bdm\bm and o\bop\bpe\ber\br groups).
-
-     The user p\bpe\bet\bte\be is allowed to change anyone's password except for root on
-     the _\bH_\bP_\bP_\bA machines.  Because command line arguments are matched as a
-     single, concatenated string, the `*' wildcard will match _\bm_\bu_\bl_\bt_\bi_\bp_\bl_\be words.
-     This example assumes that passwd(1) does not take multiple user names on
-     the command line.  Note that on GNU systems, options to passwd(1) may be
-     specified after the user argument.  As a result, this rule will also
-     allow:
-
-         passwd username --expire
-
-     which may not be desirable.
-
-     bob             SPARC = (OP) ALL : SGI = (OP) ALL
-
-     The user b\bbo\bob\bb may run anything on the _\bS_\bP_\bA_\bR_\bC and _\bS_\bG_\bI machines as any user
-     listed in the _\bO_\bP Runas_Alias (r\bro\boo\bot\bt and o\bop\bpe\ber\bra\bat\bto\bor\br.)
-
-     jim             +biglab = ALL
-
-     The user j\bji\bim\bm may run any command on machines in the _\bb_\bi_\bg_\bl_\ba_\bb netgroup.
-     s\bsu\bud\bdo\bo knows that "biglab" is a netgroup due to the `+' prefix.
-
-     +secretaries    ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
-
-     Users in the s\bse\bec\bcr\bre\bet\bta\bar\bri\bie\bes\bs netgroup need to help manage the printers as
-     well as add and remove users, so they are allowed to run those commands
-     on all machines.
-
-     fred            ALL = (DB) NOPASSWD: ALL
-
-     The user f\bfr\bre\bed\bd can run commands as any user in the _\bD_\bB Runas_Alias (o\bor\bra\bac\bcl\ble\be
-     or s\bsy\byb\bba\bas\bse\be) without giving a password.
-
-     john            ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*
-
-     On the _\bA_\bL_\bP_\bH_\bA machines, user j\bjo\boh\bhn\bn may su to anyone except root but he is
-     not allowed to specify any options to the su(1) command.
-
-     jen             ALL, !SERVERS = ALL
-
-     The user j\bje\ben\bn may run any command on any machine except for those in the
-     _\bS_\bE_\bR_\bV_\bE_\bR_\bS Host_Alias (master, mail, www and ns).
-
-     jill            SERVERS = /usr/bin/, !SU, !SHELLS
-
-     For any machine in the _\bS_\bE_\bR_\bV_\bE_\bR_\bS Host_Alias, j\bji\bil\bll\bl may run any commands in
-     the directory _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/ except for those commands belonging to the _\bS_\bU and
-     _\bS_\bH_\bE_\bL_\bL_\bS Cmnd_Aliases.  While not specifically mentioned in the rule, the
-     commands in the _\bP_\bA_\bG_\bE_\bR_\bS Cmnd_Alias all reside in _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn and have the
-     _\bn_\bo_\be_\bx_\be_\bc option set.
-
-     steve           CSNETS = (operator) /usr/local/op_commands/
-
-     The user s\bst\bte\bev\bve\be may run any command in the directory
-     /usr/local/op_commands/ but only as user operator.
-
-     matt            valkyrie = KILL
-
-     On his personal workstation, valkyrie, m\bma\bat\btt\bt needs to be able to kill hung
-     processes.
-
-     WEBMASTERS      www = (www) ALL, (root) /usr/bin/su www
-
-     On the host www, any user in the _\bW_\bE_\bB_\bM_\bA_\bS_\bT_\bE_\bR_\bS User_Alias (will, wendy, and
-     wim), may run any command as user www (which owns the web pages) or
-     simply su(1) to www.
-
-     ALL             CDROM = NOPASSWD: /sbin/umount /CDROM,\
-                     /sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM
-
-     Any user may mount or unmount a CD-ROM on the machines in the CDROM
-     Host_Alias (orion, perseus, hercules) without entering a password.  This
-     is a bit tedious for users to type, so it is a prime candidate for
-     encapsulating in a shell script.
-
-S\bSE\bEC\bCU\bUR\bRI\bIT\bTY\bY N\bNO\bOT\bTE\bES\bS
-   L\bLi\bim\bmi\bit\bta\bat\bti\bio\bon\bns\bs o\bof\bf t\bth\bhe\be `\b`!\b!'\b' o\bop\bpe\ber\bra\bat\bto\bor\br
-     It is generally not effective to "subtract" commands from A\bAL\bLL\bL using the
-     `!' operator.  A user can trivially circumvent this by copying the
-     desired command to a different name and then executing that.  For
-     example:
-
-     bill    ALL = ALL, !SU, !SHELLS
-
-     Doesn't really prevent b\bbi\bil\bll\bl from running the commands listed in _\bS_\bU or
-     _\bS_\bH_\bE_\bL_\bL_\bS since he can simply copy those commands to a different name, or
-     use a shell escape from an editor or other program.  Therefore, these
-     kind of restrictions should be considered advisory at best (and
-     reinforced by policy).
-
-     In general, if a user has sudo A\bAL\bLL\bL there is nothing to prevent them from
-     creating their own program that gives them a root shell (or making their
-     own copy of a shell) regardless of any `!' elements in the user
-     specification.
-
-   S\bSe\bec\bcu\bur\bri\bit\bty\by i\bim\bmp\bpl\bli\bic\bca\bat\bti\bio\bon\bns\bs o\bof\bf _\bf_\ba_\bs_\bt_\b__\bg_\bl_\bo_\bb
-     If the _\bf_\ba_\bs_\bt_\b__\bg_\bl_\bo_\bb option is in use, it is not possible to reliably negate
-     commands where the path name includes globbing (aka wildcard) characters.
-     This is because the C library's fnmatch(3) function cannot resolve
-     relative paths.  While this is typically only an inconvenience for rules
-     that grant privileges, it can result in a security issue for rules that
-     subtract or revoke privileges.
-
-     For example, given the following _\bs_\bu_\bd_\bo_\be_\br_\bs file entry:
-
-     john    ALL = /usr/bin/passwd [a-zA-Z0-9]*, /usr/bin/chsh [a-zA-Z0-9]*,\
-                   /usr/bin/chfn [a-zA-Z0-9]*, !/usr/bin/* root
-
-     User j\bjo\boh\bhn\bn can still run /usr/bin/passwd root if _\bf_\ba_\bs_\bt_\b__\bg_\bl_\bo_\bb is enabled by
-     changing to _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn and running ./passwd root instead.
-
-   P\bPr\bre\bev\bve\ben\bnt\bti\bin\bng\bg s\bsh\bhe\bel\bll\bl e\bes\bsc\bca\bap\bpe\bes\bs
-     Once s\bsu\bud\bdo\bo executes a program, that program is free to do whatever it
-     pleases, including run other programs.  This can be a security issue
-     since it is not uncommon for a program to allow shell escapes, which lets
-     a user bypass s\bsu\bud\bdo\bo's access control and logging.  Common programs that
-     permit shell escapes include shells (obviously), editors, paginators,
-     mail and terminal programs.
-
-     There are two basic approaches to this problem:
-
-     restrict  Avoid giving users access to commands that allow the user to
-               run arbitrary commands.  Many editors have a restricted mode
-               where shell escapes are disabled, though s\bsu\bud\bdo\boe\bed\bdi\bit\bt is a better
-               solution to running editors via s\bsu\bud\bdo\bo.  Due to the large number
-               of programs that offer shell escapes, restricting users to the
-               set of programs that do not is often unworkable.
-
-     noexec    Many systems that support shared libraries have the ability to
-               override default library functions by pointing an environment
-               variable (usually LD_PRELOAD) to an alternate shared library.
-               On such systems, s\bsu\bud\bdo\bo's _\bn_\bo_\be_\bx_\be_\bc functionality can be used to
-               prevent a program run by s\bsu\bud\bdo\bo from executing any other
-               programs.  Note, however, that this applies only to native
-               dynamically-linked executables.  Statically-linked executables
-               and foreign executables running under binary emulation are not
-               affected.
-
-               The _\bn_\bo_\be_\bx_\be_\bc feature is known to work on SunOS, Solaris, *BSD,
-               Linux, IRIX, Tru64 UNIX, macOS, HP-UX 11.x and AIX 5.3 and
-               above.  It should be supported on most operating systems that
-               support the LD_PRELOAD environment variable.  Check your
-               operating system's manual pages for the dynamic linker (usually
-               ld.so, ld.so.1, dyld, dld.sl, rld, or loader) to see if
-               LD_PRELOAD is supported.
-
-               On Solaris 10 and higher, _\bn_\bo_\be_\bx_\be_\bc uses Solaris privileges
-               instead of the LD_PRELOAD environment variable.
-
-               To enable _\bn_\bo_\be_\bx_\be_\bc for a command, use the NOEXEC tag as
-               documented in the User Specification section above.  Here is
-               that example again:
-
-               aaron   shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
-
-               This allows user a\baa\bar\bro\bon\bn to run _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bm_\bo_\br_\be and _\b/_\bu_\bs_\br_\b/_\bb_\bi_\bn_\b/_\bv_\bi
-               with _\bn_\bo_\be_\bx_\be_\bc enabled.  This will prevent those two commands from
-               executing other commands (such as a shell).  If you are unsure
-               whether or not your system is capable of supporting _\bn_\bo_\be_\bx_\be_\bc you
-               can always just try it out and check whether shell escapes work
-               when _\bn_\bo_\be_\bx_\be_\bc is enabled.
-
-     Note that restricting shell escapes is not a panacea.  Programs running
-     as root are still capable of many potentially hazardous operations (such
-     as changing or overwriting files) that could lead to unintended privilege
-     escalation.  In the specific case of an editor, a safer approach is to
-     give the user permission to run s\bsu\bud\bdo\boe\bed\bdi\bit\bt (see below).
-
-   S\bSe\bec\bcu\bur\bre\be e\bed\bdi\bit\bti\bin\bng\bg
-     The s\bsu\bud\bdo\boe\ber\brs\bs plugin includes s\bsu\bud\bdo\boe\bed\bdi\bit\bt support which allows users to
-     securely edit files with the editor of their choice.  As s\bsu\bud\bdo\boe\bed\bdi\bit\bt is a
-     built-in command, it must be specified in the _\bs_\bu_\bd_\bo_\be_\br_\bs file without a
-     leading path.  However, it may take command line arguments just as a
-     normal command does.  Wildcards used in _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt command line arguments
-     are expected to be path names, so a forward slash (`/') will not be
-     matched by a wildcard.
-
-     Unlike other s\bsu\bud\bdo\bo commands, the editor is run with the permissions of the
-     invoking user and with the environment unmodified.  More information may
-     be found in the description of the -\b-e\be option in sudo(1m).
-
-     For example, to allow user operator to edit the "message of the day"
-     file:
-
-           operator        sudoedit /etc/motd
-
-     The operator user then runs s\bsu\bud\bdo\boe\bed\bdi\bit\bt as follows:
-
-           $ sudoedit /etc/motd
-
-     The editor will run as the operator user, not root, on a temporary copy
-     of _\b/_\be_\bt_\bc_\b/_\bm_\bo_\bt_\bd.  After the file has been edited, _\b/_\be_\bt_\bc_\b/_\bm_\bo_\bt_\bd will be updated
-     with the contents of the temporary copy.
-
-     Users should _\bn_\be_\bv_\be_\br be granted s\bsu\bud\bdo\boe\bed\bdi\bit\bt permission to edit a file that
-     resides in a directory the user has write access to, either directly or
-     via a wildcard.  If the user has write access to the directory it is
-     possible to replace the legitimate file with a link to another file,
-     allowing the editing of arbitrary files.  To prevent this, starting with
-     version 1.8.16, symbolic links will not be followed in writable
-     directories and s\bsu\bud\bdo\boe\bed\bdi\bit\bt will refuse to edit a file located in a writable
-     directory unless the _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bc_\bh_\be_\bc_\bk_\bd_\bi_\br option has been disabled or the
-     invoking user is root.  Additionally, in version 1.8.15 and higher,
-     s\bsu\bud\bdo\boe\bed\bdi\bit\bt will refuse to open a symbolic link unless either the
-     _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt_\b__\bf_\bo_\bl_\bl_\bo_\bw option is enabled or the _\bs_\bu_\bd_\bo_\be_\bd_\bi_\bt command is prefixed
-     with the FOLLOW tag in the _\bs_\bu_\bd_\bo_\be_\br_\bs file.
-
-   T\bTi\bim\bme\be s\bst\bta\bam\bmp\bp f\bfi\bil\ble\be c\bch\bhe\bec\bck\bks\bs
-     s\bsu\bud\bdo\boe\ber\brs\bs will check the ownership of its time stamp directory
-     (_\b/_\bv_\ba_\br_\b/_\br_\bu_\bn_\b/_\bs_\bu_\bd_\bo_\b/_\bt_\bs by default) and ignore the directory's contents if it
-     is not owned by root or if it is writable by a user other than root.
-     Older versions of s\bsu\bud\bdo\bo stored time stamp files in _\b/_\bt_\bm_\bp; this is no longer
-     recommended as it may be possible for a user to create the time stamp
-     themselves on systems that allow unprivileged users to change the
-     ownership of files they create.
-
-     While the time stamp directory _\bs_\bh_\bo_\bu_\bl_\bd be cleared at reboot time, not all
-     systems contain a _\b/_\br_\bu_\bn or _\b/_\bv_\ba_\br_\b/_\br_\bu_\bn directory.  To avoid potential
-     problems, s\bsu\bud\bdo\boe\ber\brs\bs will ignore time stamp files that date from before the
-     machine booted on systems where the boot time is available.
-
-     Some systems with graphical desktop environments allow unprivileged users
-     to change the system clock.  Since s\bsu\bud\bdo\boe\ber\brs\bs relies on the system clock for
-     time stamp validation, it may be possible on such systems for a user to
-     run s\bsu\bud\bdo\bo for longer than _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt by setting the clock back.  To
-     combat this, s\bsu\bud\bdo\boe\ber\brs\bs uses a monotonic clock (which never moves backwards)
-     for its time stamps if the system supports it.
-
-     s\bsu\bud\bdo\boe\ber\brs\bs will not honor time stamps set far in the future.  Time stamps
-     with a date greater than current_time + 2 * TIMEOUT will be ignored and
-     s\bsu\bud\bdo\boe\ber\brs\bs will log and complain.
-
-     If the _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\by_\bp_\be option is set to "tty", the time stamp record
-     includes the device number of the terminal the user authenticated with.
-     This provides per-terminal granularity but time stamp records may still
-     outlive the user's session.
-
-     Unless the _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\by_\bp_\be option is set to "global", the time stamp
-     record also includes the session ID of the process that last
-     authenticated.  This prevents processes in different terminal sessions
-     from using the same time stamp record.  On systems where a process's
-     start time can be queried, the start time of the session leader is
-     recorded in the time stamp record.  If no terminal is present or the
-     _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\by_\bp_\be option is set to "ppid", the start time of the parent
-     process is used instead.  In most cases this will prevent a time stamp
-     record from being re-used without the user entering a password when
-     logging out and back in again.
-
-D\bDE\bEB\bBU\bUG\bGG\bGI\bIN\bNG\bG
-     Versions 1.8.4 and higher of the s\bsu\bud\bdo\boe\ber\brs\bs plugin support a flexible
-     debugging framework that can help track down what the plugin is doing
-     internally if there is a problem.  This can be configured in the
-     sudo.conf(4) file.
-
-     The s\bsu\bud\bdo\boe\ber\brs\bs plugin uses the same debug flag format as the s\bsu\bud\bdo\bo front-end:
-     _\bs_\bu_\bb_\bs_\by_\bs_\bt_\be_\bm@_\bp_\br_\bi_\bo_\br_\bi_\bt_\by.
-
-     The priorities used by s\bsu\bud\bdo\boe\ber\brs\bs, in order of decreasing severity, 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.  Each priority,
-     when specified, also includes all priorities higher than it.  For
-     example, a priority of _\bn_\bo_\bt_\bi_\bc_\be would include debug messages logged at
-     _\bn_\bo_\bt_\bi_\bc_\be and higher.
-
-     The following subsystems are used by the s\bsu\bud\bdo\boe\ber\brs\bs plugin:
-
-     _\ba_\bl_\bi_\ba_\bs     User_Alias, Runas_Alias, Host_Alias and Cmnd_Alias processing
-
-     _\ba_\bl_\bl       matches every subsystem
-
-     _\ba_\bu_\bd_\bi_\bt     BSM and Linux audit code
-
-     _\ba_\bu_\bt_\bh      user authentication
-
-     _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bs  _\bs_\bu_\bd_\bo_\be_\br_\bs file _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bs settings
-
-     _\be_\bn_\bv       environment handling
-
-     _\bl_\bd_\ba_\bp      LDAP-based sudoers
-
-     _\bl_\bo_\bg_\bg_\bi_\bn_\bg   logging support
-
-     _\bm_\ba_\bt_\bc_\bh     matching of users, groups, hosts and netgroups in the _\bs_\bu_\bd_\bo_\be_\br_\bs
-               file
-
-     _\bn_\be_\bt_\bi_\bf     network interface handling
-
-     _\bn_\bs_\bs       network service switch handling in s\bsu\bud\bdo\boe\ber\brs\bs
-
-     _\bp_\ba_\br_\bs_\be_\br    _\bs_\bu_\bd_\bo_\be_\br_\bs file parsing
-
-     _\bp_\be_\br_\bm_\bs     permission setting
-
-     _\bp_\bl_\bu_\bg_\bi_\bn    The equivalent of _\bm_\ba_\bi_\bn for the plugin.
-
-     _\bp_\bt_\by       pseudo-tty related code
-
-     _\br_\bb_\bt_\br_\be_\be    redblack tree internals
-
-     _\bs_\bs_\bs_\bd      SSSD-based sudoers
-
-     _\bu_\bt_\bi_\bl      utility functions
-     For example:
-
-     Debug sudo /var/log/sudo_debug match@info,nss@info
-
-     For more information, see the sudo.conf(4) manual.
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     ssh(1), su(1), fnmatch(3), glob(3), mktemp(3), strftime(3), sudo.conf(4),
-     sudo_plugin(4), sudoers.ldap(4), sudoers_timestamp(4), sudo(1m), visudo(1m)
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-C\bCA\bAV\bVE\bEA\bAT\bTS\bS
-     The _\bs_\bu_\bd_\bo_\be_\br_\bs file should a\bal\blw\bwa\bay\bys\bs be edited by the v\bvi\bis\bsu\bud\bdo\bo command which
-     locks the file and does grammatical checking.  It is imperative that the
-     _\bs_\bu_\bd_\bo_\be_\br_\bs file be free of syntax errors since s\bsu\bud\bdo\bo will not run with a
-     syntactically incorrect _\bs_\bu_\bd_\bo_\be_\br_\bs file.
-
-     When using netgroups of machines (as opposed to users), if you store
-     fully qualified host name in the netgroup (as is usually the case), you
-     either need to have the machine's host name be fully qualified as
-     returned by the hostname command or use the _\bf_\bq_\bd_\bn option in _\bs_\bu_\bd_\bo_\be_\br_\bs.
-
-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
-     https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     s\bsu\bud\bdo\bo is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                      June 20, 2019                     Sudo 1.8.28
diff --git a/doc/sudoers.ldap.cat b/doc/sudoers.ldap.cat
deleted file mode 100644 (file)
index c538f88..0000000
+++ /dev/null
@@ -1,1033 +0,0 @@
-SUDOERS.LDAP(4)               File Formats Manual              SUDOERS.LDAP(4)
-
-N\bNA\bAM\bME\bE
-     s\bsu\bud\bdo\boe\ber\brs\bs.\b.l\bld\bda\bap\bp - sudo LDAP configuration
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     In addition to the standard _\bs_\bu_\bd_\bo_\be_\br_\bs file, s\bsu\bud\bdo\bo may be configured via
-     LDAP.  This can be especially useful for synchronizing _\bs_\bu_\bd_\bo_\be_\br_\bs in a
-     large, distributed environment.
-
-     Using LDAP for _\bs_\bu_\bd_\bo_\be_\br_\bs has several benefits:
-
-     +\b+\bo\bo  s\bsu\bud\bdo\bo no longer needs to read _\bs_\bu_\bd_\bo_\be_\br_\bs in its entirety.  When LDAP is
-        used, there are only two or three LDAP queries per invocation.  This
-        makes it especially fast and particularly usable in LDAP environments.
-
-     +\b+\bo\bo  s\bsu\bud\bdo\bo no longer exits if there is a typo in _\bs_\bu_\bd_\bo_\be_\br_\bs.  It is not
-        possible to load LDAP data into the server that does not conform to
-        the sudoers schema, so proper syntax is guaranteed.  It is still
-        possible to have typos in a user or host name, but this will not
-        prevent s\bsu\bud\bdo\bo from running.
-
-     +\b+\bo\bo  It is possible to specify per-entry options that override the global
-        default options.  _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs only supports default options and
-        limited options associated with user/host/commands/aliases.  The
-        syntax is complicated and can be difficult for users to understand.
-        Placing the options directly in the entry is more natural.
-
-     +\b+\bo\bo  The v\bvi\bis\bsu\bud\bdo\bo program is no longer needed.  v\bvi\bis\bsu\bud\bdo\bo provides locking and
-        syntax checking of the _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs file.  Since LDAP updates are
-        atomic, locking is no longer necessary.  Because syntax is checked
-        when the data is inserted into LDAP, there is no need for a
-        specialized tool to check syntax.
-
-   S\bSU\bUD\bDO\bOe\ber\brs\bs L\bLD\bDA\bAP\bP c\bco\bon\bnt\bta\bai\bin\bne\ber\br
-     The _\bs_\bu_\bd_\bo_\be_\br_\bs configuration is contained in the ou=SUDOers LDAP container.
-
-     Sudo first looks for the cn=defaults entry in the SUDOers container.  If
-     found, the multi-valued sudoOption attribute is parsed in the same manner
-     as a global Defaults line in _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs.  In the following example, the
-     SSH_AUTH_SOCK variable will be preserved in the environment for all
-     users.
-
-         dn: cn=defaults,ou=SUDOers,dc=my-domain,dc=com
-         objectClass: top
-         objectClass: sudoRole
-         cn: defaults
-         description: Default sudoOption's go here
-         sudoOption: env_keep+=SSH_AUTH_SOCK
-
-     The equivalent of a sudoer in LDAP is a sudoRole.  It consists of the
-     following attributes:
-
-     s\bsu\bud\bdo\boU\bUs\bse\ber\br
-           A user name, user ID (prefixed with `#'), Unix group name or ID
-           (prefixed with `%' or `%#' respectively), user netgroup (prefixed
-           with `+'), or non-Unix group name or ID (prefixed with `%:' or
-           `%:#' respectively).  User netgroups are matched using the user and
-           domain members only; the host member is not used when matching.
-           Non-Unix group support is only available when an appropriate
-           _\bg_\br_\bo_\bu_\bp_\b__\bp_\bl_\bu_\bg_\bi_\bn is defined in the global _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bs sudoRole object.
-
-     s\bsu\bud\bdo\boH\bHo\bos\bst\bt
-           A host name, IP address, IP network, or host netgroup (prefixed
-           with a `+').  The special value ALL will match any host.  Host
-           netgroups are matched using the host (both qualified and
-           unqualified) and domain members only; the user member is not used
-           when matching.  If a sudoHost entry is preceded by an exclamation
-           point, `!', and the entry matches, the sudoRole in which it resides
-           will be ignored.  Negated sudoHost entries are only supported by
-           version 1.8.18 or higher.
-
-     s\bsu\bud\bdo\boC\bCo\bom\bmm\bma\ban\bnd\bd
-           A fully-qualified Unix command name with optional command line
-           arguments, potentially including globbing characters (aka wild
-           cards).  If a command name is preceded by an exclamation point,
-           `!', the user will be prohibited from running that command.
-
-           The built-in command "sudoedit" is used to permit a user to run
-           s\bsu\bud\bdo\bo with the -\b-e\be option (or as s\bsu\bud\bdo\boe\bed\bdi\bit\bt).  It may take command line
-           arguments just as a normal command does.  Note that "sudoedit" is a
-           command built into s\bsu\bud\bdo\bo itself and must be specified in without a
-           leading path.
-
-           The special value ALL will match any command.
-
-           If a command name is prefixed with a SHA-2 digest, it will only be
-           allowed if the digest matches.  This may be useful in situations
-           where the user invoking s\bsu\bud\bdo\bo has write access to the command or its
-           parent directory.  The following digest formats are supported:
-           sha224, sha256, sha384 and sha512.  The digest name must be
-           followed by a colon (`:') and then the actual digest, in either hex
-           or base64 format.  For example, given the following value for
-           sudoCommand:
-
-               sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ /bin/ls
-
-           The user may only run _\b/_\bb_\bi_\bn_\b/_\bl_\bs if its sha224 digest matches the
-           specified value.  Command digests are only supported by version
-           1.8.7 or higher.
-
-     s\bsu\bud\bdo\boO\bOp\bpt\bti\bio\bon\bn
-           Identical in function to the global options described above, but
-           specific to the sudoRole in which it resides.
-
-     s\bsu\bud\bdo\boR\bRu\bun\bnA\bAs\bsU\bUs\bse\ber\br
-           A user name or uid (prefixed with `#') that commands may be run as
-           or a Unix group (prefixed with a `%') or user netgroup (prefixed
-           with a `+') that contains a list of users that commands may be run
-           as.  The special value ALL will match any user.  If a sudoRunAsUser
-           entry is preceded by an exclamation point, `!', and the entry
-           matches, the sudoRole in which it resides will be ignored.  If
-           sudoRunAsUser is specified but empty, it will match the invoking
-           user.  If neither sudoRunAsUser nor sudoRunAsGroup are present, the
-           value of the _\br_\bu_\bn_\ba_\bs_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt sudoOption is used (defaults to root).
-
-           The sudoRunAsUser attribute is only available in s\bsu\bud\bdo\bo versions
-           1.7.0 and higher.  Older versions of s\bsu\bud\bdo\bo use the sudoRunAs
-           attribute instead.  Negated sudoRunAsUser entries are only
-           supported by version 1.8.26 or higher.
-
-     s\bsu\bud\bdo\boR\bRu\bun\bnA\bAs\bsG\bGr\bro\bou\bup\bp
-           A Unix group or gid (prefixed with `#') that commands may be run
-           as.  The special value ALL will match any group.  If a
-           sudoRunAsGroup entry is preceded by an exclamation point, `!', and
-           the entry matches, the sudoRole in which it resides will be
-           ignored.
-
-           The sudoRunAsGroup attribute is only available in s\bsu\bud\bdo\bo versions
-           1.7.0 and higher.  Negated sudoRunAsGroup entries are only
-           supported by version 1.8.26 or higher.
-
-     s\bsu\bud\bdo\boN\bNo\bot\btB\bBe\bef\bfo\bor\bre\be
-           A timestamp in the form yyyymmddHHMMSSZ that can be used to provide
-           a start date/time for when the sudoRole will be valid.  If multiple
-           sudoNotBefore entries are present, the earliest is used.  Note that
-           timestamps must be in Coordinated Universal Time (UTC), not the
-           local timezone.  The minute and seconds portions are optional, but
-           some LDAP servers require that they be present (contrary to the
-           RFC).
-
-           The sudoNotBefore attribute is only available in s\bsu\bud\bdo\bo versions
-           1.7.5 and higher and must be explicitly enabled via the
-           S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_T\bTI\bIM\bME\bED\bD option in _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf.
-
-     s\bsu\bud\bdo\boN\bNo\bot\btA\bAf\bft\bte\ber\br
-           A timestamp in the form yyyymmddHHMMSSZ that indicates an
-           expiration date/time, after which the sudoRole will no longer be
-           valid.  If multiple sudoNotAfter entries are present, the last one
-           is used.  Note that timestamps must be in Coordinated Universal
-           Time (UTC), not the local timezone.  The minute and seconds
-           portions are optional, but some LDAP servers require that they be
-           present (contrary to the RFC).
-
-           The sudoNotAfter attribute is only available in s\bsu\bud\bdo\bo versions 1.7.5
-           and higher and must be explicitly enabled via the S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_T\bTI\bIM\bME\bED\bD
-           option in _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf.
-
-     s\bsu\bud\bdo\boO\bOr\brd\bde\ber\br
-           The sudoRole entries retrieved from the LDAP directory have no
-           inherent order.  The sudoOrder attribute is an integer (or floating
-           point value for LDAP servers that support it) that is used to sort
-           the matching entries.  This allows LDAP-based sudoers entries to
-           more closely mimic the behavior of the sudoers file, where the
-           order of the entries influences the result.  If multiple entries
-           match, the entry with the highest sudoOrder attribute is chosen.
-           This corresponds to the "last match" behavior of the sudoers file.
-           If the sudoOrder attribute is not present, a value of 0 is assumed.
-
-           The sudoOrder attribute is only available in s\bsu\bud\bdo\bo versions 1.7.5
-           and higher.
-
-     Each attribute listed above should contain a single value, but there may
-     be multiple instances of each attribute type.  A sudoRole must contain at
-     least one sudoUser, sudoHost and sudoCommand.
-
-     The following example allows users in group wheel to run any command on
-     any host via s\bsu\bud\bdo\bo:
-
-         dn: cn=%wheel,ou=SUDOers,dc=my-domain,dc=com
-         objectClass: top
-         objectClass: sudoRole
-         cn: %wheel
-         sudoUser: %wheel
-         sudoHost: ALL
-         sudoCommand: ALL
-
-   A\bAn\bna\bat\bto\bom\bmy\by o\bof\bf L\bLD\bDA\bAP\bP s\bsu\bud\bdo\boe\ber\brs\bs l\blo\boo\bok\bku\bup\bp
-     When looking up a sudoer using LDAP there are only two or three LDAP
-     queries per invocation.  The first query is to parse the global options.
-     The second is to match against the user's name and the groups that the
-     user belongs to.  (The special ALL tag is matched in this query too.)  If
-     no match is returned for the user's name and groups, a third query
-     returns all entries containing user netgroups and other non-Unix groups
-     and checks to see if the user belongs to any of them.
-
-     If timed entries are enabled with the S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_T\bTI\bIM\bME\bED\bD configuration
-     directive, the LDAP queries include a sub-filter that limits retrieval to
-     entries that satisfy the time constraints, if any.
-
-     If the N\bNE\bET\bTG\bGR\bRO\bOU\bUP\bP_\b_B\bBA\bAS\bSE\bE configuration directive is present (see _\bC_\bo_\bn_\bf_\bi_\bg_\bu_\br_\bi_\bn_\bg
-     _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf below), queries are performed to determine the list of
-     netgroups the user belongs to before the sudoers query.  This makes it
-     possible to include netgroups in the sudoers query string in the same
-     manner as Unix groups.  The third query mentioned above is not performed
-     unless a group provider plugin is also configured.  The actual LDAP
-     queries performed by s\bsu\bud\bdo\bo are as follows:
-
-     1.   Match all nisNetgroup records with a nisNetgroupTriple containing
-          the user, host and NIS domain.  The query will match
-          nisNetgroupTriple entries with either the short or long form of the
-          host name or no host name specified in the tuple.  If the NIS domain
-          is set, the query will match only match entries that include the
-          domain or for which there is no domain present.  If the NIS domain
-          is _\bn_\bo_\bt set, a wildcard is used to match any domain name but be aware
-          that the NIS schema used by some LDAP servers may not support wild
-          cards for nisNetgroupTriple.
-
-     2.   Repeated queries are performed to find any nested nisNetgroup
-          records with a memberNisNetgroup entry that refers to an already-
-          matched record.
-
-     For sites with a large number of netgroups, using N\bNE\bET\bTG\bGR\bRO\bOU\bUP\bP_\b_B\bBA\bAS\bSE\bE can
-     significantly speed up s\bsu\bud\bdo\bo's execution time.
-
-   D\bDi\bif\bff\bfe\ber\bre\ben\bnc\bce\bes\bs b\bbe\bet\btw\bwe\bee\ben\bn L\bLD\bDA\bAP\bP a\ban\bnd\bd n\bno\bon\bn-\b-L\bLD\bDA\bAP\bP s\bsu\bud\bdo\boe\ber\brs\bs
-     One of the major differences between LDAP and file-based _\bs_\bu_\bd_\bo_\be_\br_\bs is that
-     in LDAP, s\bsu\bud\bdo\bo-specific Aliases are not supported.
-
-     For the most part, there is little need for s\bsu\bud\bdo\bo-specific Aliases.  Unix
-     groups, non-Unix groups (via the _\bg_\br_\bo_\bu_\bp_\b__\bp_\bl_\bu_\bg_\bi_\bn) or user netgroups can be
-     used in place of User_Aliases and Runas_Aliases.  Host netgroups can be
-     used in place of Host_Aliases.  Since groups and netgroups can also be
-     stored in LDAP there is no real need for s\bsu\bud\bdo\bo-specific aliases.
-
-     There are also some subtle differences in the way sudoers is handled once
-     in LDAP.  Probably the biggest is that according to the RFC, LDAP
-     ordering is arbitrary and you cannot expect that Attributes and Entries
-     are returned in any specific order.
-
-     The order in which different entries are applied can be controlled using
-     the sudoOrder attribute, but there is no way to guarantee the order of
-     attributes within a specific entry.  If there are conflicting command
-     rules in an entry, the negative takes precedence.  This is called
-     paranoid behavior (not necessarily the most specific match).
-
-     Here is an example:
-
-         # /etc/sudoers:
-         # Allow all commands except shell
-         johnny  ALL=(root) ALL,!/bin/sh
-         # Always allows all commands because ALL is matched last
-         puddles ALL=(root) !/bin/sh,ALL
-
-         # LDAP equivalent of johnny
-         # Allows all commands except shell
-         dn: cn=role1,ou=Sudoers,dc=my-domain,dc=com
-         objectClass: sudoRole
-         objectClass: top
-         cn: role1
-         sudoUser: johnny
-         sudoHost: ALL
-         sudoCommand: ALL
-         sudoCommand: !/bin/sh
-
-         # LDAP equivalent of puddles
-         # Notice that even though ALL comes last, it still behaves like
-         # role1 since the LDAP code assumes the more paranoid configuration
-         dn: cn=role2,ou=Sudoers,dc=my-domain,dc=com
-         objectClass: sudoRole
-         objectClass: top
-         cn: role2
-         sudoUser: puddles
-         sudoHost: ALL
-         sudoCommand: !/bin/sh
-         sudoCommand: ALL
-
-     Another difference is that it is not possible to use negation in a
-     sudoUser, sudoRunAsUser or sudoRunAsGroup attribute.  For example, the
-     following attributes do not behave the way one might expect.
-
-         # does not match all but joe
-         # rather, does not match anyone
-         sudoUser: !joe
-
-         # does not match all but joe
-         # rather, matches everyone including Joe
-         sudoUser: ALL
-         sudoUser: !joe
-
-   C\bCo\bon\bnv\bve\ber\brt\bti\bin\bng\bg b\bbe\bet\btw\bwe\bee\ben\bn f\bfi\bil\ble\be-\b-b\bba\bas\bse\bed\bd a\ban\bnd\bd L\bLD\bDA\bAP\bP s\bsu\bud\bdo\boe\ber\brs\bs
-     The cvtsudoers(1) utility can be used to convert between file-based and
-     LDAP _\bs_\bu_\bd_\bo_\be_\br_\bs.  However, there are features in the file-based sudoers that
-     have no equivalent in LDAP-based sudoers (and vice versa).  These cannot
-     be converted automatically.
-
-     For example, a Cmnd_Alias in a _\bs_\bu_\bd_\bo_\be_\br_\bs file may be converted to a
-     sudoRole that contains multiple commands.  Multiple users and/or groups
-     may be assigned to the sudoRole.
-
-     Also, host, user, runas and command-based Defaults entries are not
-     supported.  However, a sudoRole may contain one or more sudoOption
-     attributes which can often serve the same purpose.
-
-     Consider the following _\bs_\bu_\bd_\bo_\be_\br_\bs lines:
-
-         Cmnd_Alias PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
-         Defaults!PAGERS noexec
-         alice, bob ALL = ALL
-
-     In this example, alice and bob are allowed to run all commands, but the
-     commands listed in PAGERS will have the noexec flag set, preventing shell
-     escapes.
-
-     When converting this to LDAP, two sudoRole objects can be used:
-
-         dn: cn=PAGERS,ou=SUDOers,dc=my-domain,dc=com
-         objectClass: top
-         objectClass: sudoRole
-         cn: PAGERS
-         sudoUser: alice
-         sudoUser: bob
-         sudoHost: ALL
-         sudoCommand: /usr/bin/more
-         sudoCommand: /usr/bin/pg
-         sudoCommand: /usr/bin/less
-         sudoOption: noexec
-         sudoOrder: 900
-
-         dn: cn=ADMINS,ou=SUDOers,dc=my-domain,dc=com
-         objectClass: top
-         objectClass: sudoRole
-         cn: ADMINS
-         sudoUser: alice
-         sudoUser: bob
-         sudoHost: ALL
-         sudoCommand: ALL
-         sudoOrder: 100
-
-     In the LDAP version, the sudoOrder attribute is used to guarantee that
-     the PAGERS sudoRole with _\bn_\bo_\be_\bx_\be_\bc has precedence.  Unlike the _\bs_\bu_\bd_\bo_\be_\br_\bs
-     version, the LDAP version requires that all users for whom the
-     restriction should apply be assigned to the PAGERS sudoRole.  Using a
-     Unix group or netgroup in PAGERS rather than listing each user would make
-     this easier to maintain.
-
-     Per-user Defaults entries can be emulated by using one or more sudoOption
-     attributes in a sudoRole.  Consider the following _\bs_\bu_\bd_\bo_\be_\br_\bs lines:
-
-         User_Alias ADMINS = john, sally
-         Defaults:ADMINS !authenticate
-         ADMINS ALL = (ALL:ALL) ALL
-
-     In this example, john and sally are allowed to run any command as any
-     user or group.
-
-     When converting this to LDAP, we can use a Unix group instead of the
-     User_Alias.
-
-         dn: cn=admins,ou=SUDOers,dc=my-domain,dc=com
-         objectClass: top
-         objectClass: sudoRole
-         cn: admins
-         sudoUser: %admin
-         sudoHost: ALL
-         sudoRunAsUser: ALL
-         sudoRunAsGroup: ALL
-         sudoCommand: ALL
-         sudoOption: !authenticate
-
-     This assumes that users john and sally are members of the "admins" Unix
-     group.
-
-   S\bSu\bud\bdo\boe\ber\brs\bs s\bsc\bch\bhe\bem\bma\ba
-     In order to use s\bsu\bud\bdo\bo's LDAP support, the s\bsu\bud\bdo\bo schema must be installed on
-     your LDAP server.  In addition, be sure to index the sudoUser attribute.
-
-     The s\bsu\bud\bdo\bo distribution includes versions of the s\bsu\bud\bdo\boe\ber\brs\bs schema for
-     multiple LDAP servers:
-
-     _\bs_\bc_\bh_\be_\bm_\ba_\b._\bO_\bp_\be_\bn_\bL_\bD_\bA_\bP
-           OpenLDAP slapd and OpenBSD ldapd
-
-     _\bs_\bc_\bh_\be_\bm_\ba_\b._\bo_\bl_\bc_\bS_\bu_\bd_\bo
-           OpenLDAP slapd 2.3 and higher when on-line configuration is enabled
-
-     _\bs_\bc_\bh_\be_\bm_\ba_\b._\bi_\bP_\bl_\ba_\bn_\be_\bt
-           Netscape-derived servers such as the iPlanet, Oracle, and 389
-           Directory Servers
-
-     _\bs_\bc_\bh_\be_\bm_\ba_\b._\bA_\bc_\bt_\bi_\bv_\be_\bD_\bi_\br_\be_\bc_\bt_\bo_\br_\by
-           Microsoft Active Directory
-
-     The schema in OpenLDAP format is also included in the _\bE_\bX_\bA_\bM_\bP_\bL_\bE_\bS section.
-
-   C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg l\bld\bda\bap\bp.\b.c\bco\bon\bnf\bf
-     Sudo reads the _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf file for LDAP-specific configuration.
-     Typically, this file is shared between different LDAP-aware clients.  As
-     such, most of the settings are not s\bsu\bud\bdo\bo-specific. Note that s\bsu\bud\bdo\bo parses
-     _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf itself and may support options that differ from those
-     described in the system's ldap.conf(4) manual.  The path to _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf may
-     be overridden via the _\bl_\bd_\ba_\bp_\b__\bc_\bo_\bn_\bf plugin argument in sudo.conf(4).
-
-     Also note that on systems using the OpenLDAP libraries, default values
-     specified in _\b/_\be_\bt_\bc_\b/_\bo_\bp_\be_\bn_\bl_\bd_\ba_\bp_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf or the user's _\b._\bl_\bd_\ba_\bp_\br_\bc files are not
-     used.
-
-     Only those options explicitly listed in _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf as being supported
-     by s\bsu\bud\bdo\bo are honored.  Configuration options are listed below in upper
-     case but are parsed in a case-independent manner.
-
-     Lines beginning with a pound sign (`#') are ignored.  Leading white space
-     is removed from the beginning of lines.
-
-     B\bBI\bIN\bND\bD_\b_T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT _\bs_\be_\bc_\bo_\bn_\bd_\bs
-           The B\bBI\bIN\bND\bD_\b_T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT parameter specifies the amount of time, in
-           seconds, to wait while trying to connect to an LDAP server.  If
-           multiple U\bUR\bRI\bIs or H\bHO\bOS\bST\bTs are specified, this is the amount of time to
-           wait before trying the next one in the list.
-
-     B\bBI\bIN\bND\bDD\bDN\bN _\bD_\bN
-           The B\bBI\bIN\bND\bDD\bDN\bN parameter specifies the identity, in the form of a
-           Distinguished Name (DN), to use when performing LDAP operations.
-           If not specified, LDAP operations are performed with an anonymous
-           identity.  By default, most LDAP servers will allow anonymous
-           access.
-
-     B\bBI\bIN\bND\bDP\bPW\bW _\bs_\be_\bc_\br_\be_\bt
-           The B\bBI\bIN\bND\bDP\bPW\bW parameter specifies the password to use when performing
-           LDAP operations.  This is typically used in conjunction with the
-           B\bBI\bIN\bND\bDD\bDN\bN parameter.  The _\bs_\be_\bc_\br_\be_\bt may be a plain text password or a
-           base64-encoded string with a "base64:" prefix.  For example:
-
-               BINDPW base64:dGVzdA==
-
-           If a plain text password is used, it should be a simple string
-           without quotes.  Plain text passwords may not include the comment
-           character (`#') and the escaping of special characters with a
-           backslash (`\') is not supported.
-
-     D\bDE\bER\bRE\bEF\bF _\bn_\be_\bv_\be_\br_\b/_\bs_\be_\ba_\br_\bc_\bh_\bi_\bn_\bg_\b/_\bf_\bi_\bn_\bd_\bi_\bn_\bg_\b/_\ba_\bl_\bw_\ba_\by_\bs
-           How alias dereferencing is to be performed when searching.  See the
-           ldap.conf(4) manual for a full description of this option.
-
-     H\bHO\bOS\bST\bT _\bn_\ba_\bm_\be_\b[_\b:_\bp_\bo_\br_\bt_\b] _\b._\b._\b.
-           If no U\bUR\bRI\bI is specified (see below), the H\bHO\bOS\bST\bT parameter specifies a
-           white space-delimited list of LDAP servers to connect to.  Each
-           host may include an optional _\bp_\bo_\br_\bt separated by a colon (`:').  The
-           H\bHO\bOS\bST\bT parameter is deprecated in favor of the U\bUR\bRI\bI specification and
-           is included for backwards compatibility only.
-
-     K\bKR\bRB\bB5\b5_\b_C\bCC\bCN\bNA\bAM\bME\bE _\bf_\bi_\bl_\be _\bn_\ba_\bm_\be
-           The path to the Kerberos 5 credential cache to use when
-           authenticating with the remote server.  This option is only
-           relevant when using SASL authentication (see below).
-
-     L\bLD\bDA\bAP\bP_\b_V\bVE\bER\bRS\bSI\bIO\bON\bN _\bn_\bu_\bm_\bb_\be_\br
-           The version of the LDAP protocol to use when connecting to the
-           server.  The default value is protocol version 3.
-
-     N\bNE\bET\bTG\bGR\bRO\bOU\bUP\bP_\b_B\bBA\bAS\bSE\bE _\bb_\ba_\bs_\be
-           The base DN to use when performing LDAP netgroup queries.
-           Typically this is of the form ou=netgroup,dc=my-domain,dc=com for
-           the domain my-domain.com.  Multiple N\bNE\bET\bTG\bGR\bRO\bOU\bUP\bP_\b_B\bBA\bAS\bSE\bE lines may be
-           specified, in which case they are queried in the order specified.
-
-           This option can be used to query a user's netgroups directly via
-           LDAP which is usually faster than fetching every sudoRole object
-           containing a sudoUser that begins with a `+' prefix.  The NIS
-           schema used by some LDAP servers need a modification to support
-           querying the nisNetgroup object by its nisNetgroupTriple member.
-           OpenLDAP's s\bsl\bla\bap\bpd\bd requires the following change to the
-           nisNetgroupTriple attribute:
-
-               attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
-                   DESC 'Netgroup triple'
-                   EQUALITY caseIgnoreIA5Match
-                   SUBSTR caseIgnoreIA5SubstringsMatch
-                   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-     N\bNE\bET\bTG\bGR\bRO\bOU\bUP\bP_\b_S\bSE\bEA\bAR\bRC\bCH\bH_\b_F\bFI\bIL\bLT\bTE\bER\bR _\bl_\bd_\ba_\bp_\b__\bf_\bi_\bl_\bt_\be_\br
-           An LDAP filter which is used to restrict the set of records
-           returned when performing an LDAP netgroup query.  Typically, this
-           is of the form attribute=value or
-           (&(attribute=value)(attribute2=value2)).  The default search filter
-           is: objectClass=nisNetgroup.  If _\bl_\bd_\ba_\bp_\b__\bf_\bi_\bl_\bt_\be_\br is omitted, no search
-           filter will be used.  This option is only when querying netgroups
-           directly via LDAP.
-
-     N\bNE\bET\bTW\bWO\bOR\bRK\bK_\b_T\bTI\bIM\bME\bEO\bOU\bUT\bT _\bs_\be_\bc_\bo_\bn_\bd_\bs
-           An alias for B\bBI\bIN\bND\bD_\b_T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT provided for OpenLDAP compatibility.
-
-     P\bPO\bOR\bRT\bT _\bp_\bo_\br_\bt_\b__\bn_\bu_\bm_\bb_\be_\br
-           If no U\bUR\bRI\bI is specified, the P\bPO\bOR\bRT\bT parameter specifies the default
-           port to connect to on the LDAP server if a H\bHO\bOS\bST\bT parameter does not
-           specify the port itself.  If no P\bPO\bOR\bRT\bT parameter is used, the default
-           is port 389 for LDAP and port 636 for LDAP over TLS (SSL).  The
-           P\bPO\bOR\bRT\bT parameter is deprecated in favor of the U\bUR\bRI\bI specification and
-           is included for backwards compatibility only.
-
-     R\bRO\bOO\bOT\bTB\bBI\bIN\bND\bDD\bDN\bN _\bD_\bN
-           The R\bRO\bOO\bOT\bTB\bBI\bIN\bND\bDD\bDN\bN parameter specifies the identity, in the form of a
-           Distinguished Name (DN), to use when performing privileged LDAP
-           operations, such as _\bs_\bu_\bd_\bo_\be_\br_\bs queries.  The password corresponding to
-           the identity should be stored in the or the path specified by the
-           _\bl_\bd_\ba_\bp_\b__\bs_\be_\bc_\br_\be_\bt plugin argument in sudo.conf(4), which defaults to
-           _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bs_\be_\bc_\br_\be_\bt.  If no R\bRO\bOO\bOT\bTB\bBI\bIN\bND\bDD\bDN\bN is specified, the B\bBI\bIN\bND\bDD\bDN\bN
-           identity is used (if any).
-
-     R\bRO\bOO\bOT\bTU\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL _\bo_\bn_\b/_\bt_\br_\bu_\be_\b/_\by_\be_\bs_\b/_\bo_\bf_\bf_\b/_\bf_\ba_\bl_\bs_\be_\b/_\bn_\bo
-           Enable R\bRO\bOO\bOT\bTU\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL to enable SASL authentication when connecting
-           to an LDAP server from a privileged process, such as s\bsu\bud\bdo\bo.
-
-     S\bSA\bAS\bSL\bL_\b_A\bAU\bUT\bTH\bH_\b_I\bID\bD _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by
-           The SASL user name to use when connecting to the LDAP server.  By
-           default, s\bsu\bud\bdo\bo will use an anonymous connection.  This option is
-           only relevant when using SASL authentication.
-
-     S\bSA\bAS\bSL\bL_\b_M\bME\bEC\bCH\bH _\bm_\be_\bc_\bh_\ba_\bn_\bi_\bs_\bm_\bs
-           A white space-delimited list of SASL authentication mechanisms to
-           use.  By default, s\bsu\bud\bdo\bo will use GSSAPI authentication.
-
-     S\bSA\bAS\bSL\bL_\b_S\bSE\bEC\bCP\bPR\bRO\bOP\bPS\bS _\bn_\bo_\bn_\be_\b/_\bp_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs
-           SASL security properties or _\bn_\bo_\bn_\be for no properties.  See the SASL
-           programmer's manual for details.  This option is only relevant when
-           using SASL authentication.
-
-     S\bSS\bSL\bL _\bo_\bn_\b/_\bt_\br_\bu_\be_\b/_\by_\be_\bs_\b/_\bo_\bf_\bf_\b/_\bf_\ba_\bl_\bs_\be_\b/_\bn_\bo
-           If the S\bSS\bSL\bL parameter is set to on, true or yes, TLS (SSL)
-           encryption is always used when communicating with the LDAP server.
-           Typically, this involves connecting to the server on port 636
-           (ldaps).
-
-     S\bSS\bSL\bL _\bs_\bt_\ba_\br_\bt_\b__\bt_\bl_\bs
-           If the S\bSS\bSL\bL parameter is set to start_tls, the LDAP server
-           connection is initiated normally and TLS encryption is begun before
-           the bind credentials are sent.  This has the advantage of not
-           requiring a dedicated port for encrypted communications.  This
-           parameter is only supported by LDAP servers that honor the
-           _\bs_\bt_\ba_\br_\bt_\b__\bt_\bl_\bs extension, such as the OpenLDAP and Tivoli Directory
-           servers.
-
-     S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_B\bBA\bAS\bSE\bE _\bb_\ba_\bs_\be
-           The base DN to use when performing s\bsu\bud\bdo\bo LDAP queries.  Typically
-           this is of the form ou=SUDOers,dc=my-domain,dc=com for the domain
-           my-domain.com.  Multiple S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_B\bBA\bAS\bSE\bE lines may be specified, in
-           which case they are queried in the order specified.
-
-     S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_D\bDE\bEB\bBU\bUG\bG _\bd_\be_\bb_\bu_\bg_\b__\bl_\be_\bv_\be_\bl
-           This sets the debug level for s\bsu\bud\bdo\bo LDAP queries.  Debugging
-           information is printed to the standard error.  A value of 1 results
-           in a moderate amount of debugging information.  A value of 2 shows
-           the results of the matches themselves.  This parameter should not
-           be set in a production environment as the extra information is
-           likely to confuse users.
-
-           The S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_D\bDE\bEB\bBU\bUG\bG parameter is deprecated and will be removed in a
-           future release.  The same information is now logged via the s\bsu\bud\bdo\bo
-           debugging framework using the "ldap" subsystem at priorities _\bd_\bi_\ba_\bg
-           and _\bi_\bn_\bf_\bo for _\bd_\be_\bb_\bu_\bg_\b__\bl_\be_\bv_\be_\bl values 1 and 2 respectively.  See the
-           sudo.conf(4) manual for details on how to configure s\bsu\bud\bdo\bo debugging.
-
-     S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_S\bSE\bEA\bAR\bRC\bCH\bH_\b_F\bFI\bIL\bLT\bTE\bER\bR _\bl_\bd_\ba_\bp_\b__\bf_\bi_\bl_\bt_\be_\br
-           An LDAP filter which is used to restrict the set of records
-           returned when performing a s\bsu\bud\bdo\bo LDAP query.  Typically, this is of
-           the form attribute=value or
-           (&(attribute=value)(attribute2=value2)).  The default search filter
-           is: objectClass=sudoRole.  If _\bl_\bd_\ba_\bp_\b__\bf_\bi_\bl_\bt_\be_\br is omitted, no search
-           filter will be used.
-
-     S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_T\bTI\bIM\bME\bED\bD _\bo_\bn_\b/_\bt_\br_\bu_\be_\b/_\by_\be_\bs_\b/_\bo_\bf_\bf_\b/_\bf_\ba_\bl_\bs_\be_\b/_\bn_\bo
-           Whether or not to evaluate the sudoNotBefore and sudoNotAfter
-           attributes that implement time-dependent sudoers entries.
-
-     T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT _\bs_\be_\bc_\bo_\bn_\bd_\bs
-           The T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT parameter specifies the amount of time, in seconds,
-           to wait for a response to an LDAP query.
-
-     T\bTI\bIM\bME\bEO\bOU\bUT\bT _\bs_\be_\bc_\bo_\bn_\bd_\bs
-           The T\bTI\bIM\bME\bEO\bOU\bUT\bT parameter specifies the amount of time, in seconds, to
-           wait for a response from the various LDAP APIs.
-
-     T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bT _\bf_\bi_\bl_\be _\bn_\ba_\bm_\be
-           An alias for T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTF\bFI\bIL\bLE\bE for OpenLDAP compatibility.
-
-     T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTF\bFI\bIL\bLE\bE _\bf_\bi_\bl_\be _\bn_\ba_\bm_\be
-           The path to a certificate authority bundle which contains the
-           certificates for all the Certificate Authorities the client knows
-           to be valid, e.g., _\b/_\be_\bt_\bc_\b/_\bs_\bs_\bl_\b/_\bc_\ba_\b-_\bb_\bu_\bn_\bd_\bl_\be_\b._\bp_\be_\bm.  This option is only
-           supported by the OpenLDAP libraries.  Netscape-derived LDAP
-           libraries use the same certificate database for CA and client
-           certificates (see T\bTL\bLS\bS_\b_C\bCE\bER\bRT\bT).
-
-     T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTD\bDI\bIR\bR _\bd_\bi_\br_\be_\bc_\bt_\bo_\br_\by
-           Similar to T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTF\bFI\bIL\bLE\bE but instead of a file, it is a directory
-           containing individual Certificate Authority certificates, e.g.,
-           _\b/_\be_\bt_\bc_\b/_\bs_\bs_\bl_\b/_\bc_\be_\br_\bt_\bs.  The directory specified by T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTD\bDI\bIR\bR is
-           checked after T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTF\bFI\bIL\bLE\bE.  This option is only supported by the
-           OpenLDAP libraries.
-
-     T\bTL\bLS\bS_\b_C\bCE\bER\bRT\bT _\bf_\bi_\bl_\be _\bn_\ba_\bm_\be
-           The path to a file containing the client certificate which can be
-           used to authenticate the client to the LDAP server.  The
-           certificate type depends on the LDAP libraries used.
-
-           OpenLDAP:
-                 tls_cert /etc/ssl/client_cert.pem
-
-           Netscape-derived:
-                 tls_cert /var/ldap/cert7.db
-
-           Tivoli Directory Server:
-                 Unused, the key database specified by T\bTL\bLS\bS_\b_K\bKE\bEY\bY contains both
-                 keys and certificates.
-
-                 When using Netscape-derived libraries, this file may also
-                 contain Certificate Authority certificates.
-
-     T\bTL\bLS\bS_\b_C\bCH\bHE\bEC\bCK\bKP\bPE\bEE\bER\bR _\bo_\bn_\b/_\bt_\br_\bu_\be_\b/_\by_\be_\bs_\b/_\bo_\bf_\bf_\b/_\bf_\ba_\bl_\bs_\be_\b/_\bn_\bo
-           If enabled, T\bTL\bLS\bS_\b_C\bCH\bHE\bEC\bCK\bKP\bPE\bEE\bER\bR will cause the LDAP server's TLS
-           certificated to be verified.  If the server's TLS certificate
-           cannot be verified (usually because it is signed by an unknown
-           certificate authority), s\bsu\bud\bdo\bo will be unable to connect to it.  If
-           T\bTL\bLS\bS_\b_C\bCH\bHE\bEC\bCK\bKP\bPE\bEE\bER\bR is disabled, no check is made.  Note that disabling
-           the check creates an opportunity for man-in-the-middle attacks
-           since the server's identity will not be authenticated.  If
-           possible, the CA's certificate should be installed locally so it
-           can be verified.  This option is not supported by the Tivoli
-           Directory Server LDAP libraries.
-
-     T\bTL\bLS\bS_\b_K\bKE\bEY\bY _\bf_\bi_\bl_\be _\bn_\ba_\bm_\be
-           The path to a file containing the private key which matches the
-           certificate specified by T\bTL\bLS\bS_\b_C\bCE\bER\bRT\bT.  The private key must not be
-           password-protected.  The key type depends on the LDAP libraries
-           used.
-
-           OpenLDAP:
-                 tls_key /etc/ssl/client_key.pem
-
-           Netscape-derived:
-                 tls_key /var/ldap/key3.db
-
-           Tivoli Directory Server:
-                 tls_key /usr/ldap/ldapkey.kdb
-           When using Tivoli LDAP libraries, this file may also contain
-           Certificate Authority and client certificates and may be encrypted.
-
-     T\bTL\bLS\bS_\b_C\bCI\bIP\bPH\bHE\bER\bRS\bS _\bc_\bi_\bp_\bh_\be_\br _\bl_\bi_\bs_\bt
-           The T\bTL\bLS\bS_\b_C\bCI\bIP\bPH\bHE\bER\bRS\bS parameter allows the administer to restrict which
-           encryption algorithms may be used for TLS (SSL) connections.  See
-           the OpenLDAP or Tivoli Directory Server manual for a list of valid
-           ciphers.  This option is not supported by Netscape-derived
-           libraries.
-
-     T\bTL\bLS\bS_\b_K\bKE\bEY\bYP\bPW\bW _\bs_\be_\bc_\br_\be_\bt
-           The T\bTL\bLS\bS_\b_K\bKE\bEY\bYP\bPW\bW contains the password used to decrypt the key
-           database on clients using the Tivoli Directory Server LDAP library.
-           The _\bs_\be_\bc_\br_\be_\bt may be a plain text password or a base64-encoded string
-           with a "base64:" prefix.  For example:
-
-               TLS_KEYPW base64:dGVzdA==
-
-           If a plain text password is used, it should be a simple string
-           without quotes.  Plain text passwords may not include the comment
-           character (`#') and the escaping of special characters with a
-           backslash (`\') is not supported.  If this option is used,
-           _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf must not be world-readable to avoid exposing the
-           password.  Alternately, a _\bs_\bt_\ba_\bs_\bh _\bf_\bi_\bl_\be can be used to store the
-           password in encrypted form (see below).
-
-           If no T\bTL\bLS\bS_\b_K\bKE\bEY\bYP\bPW\bW is specified, a _\bs_\bt_\ba_\bs_\bh _\bf_\bi_\bl_\be will be used if it
-           exists.  The _\bs_\bt_\ba_\bs_\bh _\bf_\bi_\bl_\be must have the same path as the file
-           specified by T\bTL\bLS\bS_\b_K\bKE\bEY\bY, but use a .sth file extension instead of
-           .kdb, e.g., ldapkey.sth.  The default ldapkey.kdb that ships with
-           Tivoli Directory Server is encrypted with the password
-           ssl_password.  The _\bg_\bs_\bk_\b8_\bc_\ba_\bp_\bi_\bc_\bm_\bd utility can be used to manage the
-           key database and create a _\bs_\bt_\ba_\bs_\bh _\bf_\bi_\bl_\be.  This option is only
-           supported by the Tivoli LDAP libraries.
-
-     T\bTL\bLS\bS_\b_R\bRE\bEQ\bQC\bCE\bER\bRT\bT _\bl_\be_\bv_\be_\bl
-           The T\bTL\bLS\bS_\b_R\bRE\bEQ\bQC\bCE\bER\bRT\bT parameter controls how the LDAP server's TLS
-           certificated will be verified (if at all).  If the server's TLS
-           certificate cannot be verified (usually because it is signed by an
-           unknown certificate authority), s\bsu\bud\bdo\bo will be unable to connect to
-           it.  The following _\bl_\be_\bv_\be_\bl values are supported:
-
-               never     The server certificate will not be requested or
-                         checked.
-
-               allow     The server certificate will be requested.  A missing
-                         or invalid certificate is ignored and not considered
-                         an error.
-
-               try       The server certificate will be requested.  A missing
-                         certificate is ignored but an invalid certificate
-                         will result in a connection error.
-
-               demand | _\bh_\ba_\br_\bd
-                         The server certificate will be requested.  A missing
-                         or invalid certificate will result in a connection
-                         error.  This is the default behavior.
-
-           This option is only supported by the OpenLDAP libraries.  Other
-           LDAP libraries only support the T\bTL\bLS\bS_\b_C\bCH\bHE\bEC\bCK\bKP\bPE\bEE\bER\bR parameter.
-
-     T\bTL\bLS\bS_\b_R\bRA\bAN\bND\bDF\bFI\bIL\bLE\bE _\bf_\bi_\bl_\be _\bn_\ba_\bm_\be
-           The T\bTL\bLS\bS_\b_R\bRA\bAN\bND\bDF\bFI\bIL\bLE\bE parameter specifies the path to an entropy source
-           for systems that lack a random device.  It is generally used in
-           conjunction with _\bp_\br_\bn_\bg_\bd or _\be_\bg_\bd.  This option is only supported by
-           the OpenLDAP libraries.
-
-     U\bUR\bRI\bI _\bl_\bd_\ba_\bp_\b[_\bs_\b]_\b:_\b/_\b/_\b[_\bh_\bo_\bs_\bt_\bn_\ba_\bm_\be_\b[_\b:_\bp_\bo_\br_\bt_\b]_\b] _\b._\b._\b.
-           Specifies a white space-delimited list of one or more URIs
-           describing the LDAP server(s) to connect to.  The _\bp_\br_\bo_\bt_\bo_\bc_\bo_\bl may be
-           either _\bl_\bd_\ba_\bp _\bl_\bd_\ba_\bp_\bs, the latter being for servers that support TLS
-           (SSL) encryption.  If no _\bp_\bo_\br_\bt is specified, the default is port 389
-           for ldap:// or port 636 for ldaps://.  If no _\bh_\bo_\bs_\bt_\bn_\ba_\bm_\be is specified,
-           s\bsu\bud\bdo\bo will connect to _\bl_\bo_\bc_\ba_\bl_\bh_\bo_\bs_\bt.  Multiple U\bUR\bRI\bI lines are treated
-           identically to a U\bUR\bRI\bI line containing multiple entries.  Only
-           systems using the OpenSSL libraries support the mixing of ldap://
-           and ldaps:// URIs.  Both the Netscape-derived and Tivoli LDAP
-           libraries used on most commercial versions of Unix are only capable
-           of supporting one or the other.
-
-     U\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL _\bo_\bn_\b/_\bt_\br_\bu_\be_\b/_\by_\be_\bs_\b/_\bo_\bf_\bf_\b/_\bf_\ba_\bl_\bs_\be_\b/_\bn_\bo
-           Enable U\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL for LDAP servers that support SASL authentication.
-
-     R\bRO\bOO\bOT\bTS\bSA\bAS\bSL\bL_\b_A\bAU\bUT\bTH\bH_\b_I\bID\bD _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by
-           The SASL user name to use when R\bRO\bOO\bOT\bTU\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL is enabled.
-
-     See the _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf entry in the _\bE_\bX_\bA_\bM_\bP_\bL_\bE_\bS section.
-
-   C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg n\bns\bss\bsw\bwi\bit\btc\bch\bh.\b.c\bco\bon\bnf\bf
-     Unless it is disabled at build time, s\bsu\bud\bdo\bo consults the Name Service
-     Switch file, _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf, to specify the _\bs_\bu_\bd_\bo_\be_\br_\bs search order.
-     Sudo looks for a line beginning with sudoers: and uses this to determine
-     the search order.  Note that s\bsu\bud\bdo\bo does not stop searching after the first
-     match and later matches take precedence over earlier ones.  The following
-     sources are recognized:
-
-         files     read sudoers from _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs
-         ldap      read sudoers from LDAP
-
-     In addition, the entry [NOTFOUND=return] will short-circuit the search if
-     the user was not found in the preceding source.
-
-     To consult LDAP first followed by the local sudoers file (if it exists),
-     use:
-
-         sudoers: ldap files
-
-     The local _\bs_\bu_\bd_\bo_\be_\br_\bs file can be ignored completely by using:
-
-         sudoers: ldap
-
-     If the _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf file is not present or there is no sudoers
-     line, the following default is assumed:
-
-         sudoers: files
-
-     Note that _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf is supported even when the underlying
-     operating system does not use an nsswitch.conf file, except on AIX (see
-     below).
-
-   C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg n\bne\bet\bts\bsv\bvc\bc.\b.c\bco\bon\bnf\bf
-     On AIX systems, the _\b/_\be_\bt_\bc_\b/_\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf file is consulted instead of
-     _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf.  s\bsu\bud\bdo\bo simply treats _\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf as a variant of
-     _\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf; information in the previous section unrelated to the file
-     format itself still applies.
-
-     To consult LDAP first followed by the local sudoers file (if it exists),
-     use:
-
-         sudoers = ldap, files
-
-     The local _\bs_\bu_\bd_\bo_\be_\br_\bs file can be ignored completely by using:
-
-         sudoers = ldap
-
-     To treat LDAP as authoritative and only use the local sudoers file if the
-     user is not present in LDAP, use:
-
-         sudoers = ldap = auth, files
-
-     Note that in the above example, the auth qualifier only affects user
-     lookups; both LDAP and _\bs_\bu_\bd_\bo_\be_\br_\bs will be queried for Defaults entries.
-
-     If the _\b/_\be_\bt_\bc_\b/_\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf file is not present or there is no sudoers line,
-     the following default is assumed:
-
-         sudoers = files
-
-   I\bIn\bnt\bte\beg\bgr\bra\bat\bti\bio\bon\bn w\bwi\bit\bth\bh s\bss\bss\bsd\bd
-     On systems with the _\bS_\by_\bs_\bt_\be_\bm _\bS_\be_\bc_\bu_\br_\bi_\bt_\by _\bS_\be_\br_\bv_\bi_\bc_\be_\bs _\bD_\ba_\be_\bm_\bo_\bn (SSSD) and where s\bsu\bud\bdo\bo
-     has been built with SSSD support, it is possible to use SSSD to cache
-     LDAP _\bs_\bu_\bd_\bo_\be_\br_\bs rules.  To use SSSD as the _\bs_\bu_\bd_\bo_\be_\br_\bs source, you should use
-     sss instead of ldap for the sudoers entry in _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf.  Note
-     that the _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf file is not used by the SSSD s\bsu\bud\bdo\bo back end.
-     Please see sssd-sudo(4) for more information on configuring s\bsu\bud\bdo\bo to work
-     with SSSD.
-
-F\bFI\bIL\bLE\bES\bS
-     _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf            LDAP configuration file
-
-     _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf        determines sudoers source order
-
-     _\b/_\be_\bt_\bc_\b/_\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf          determines sudoers source order on AIX
-
-E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
-   E\bEx\bxa\bam\bmp\bpl\ble\be l\bld\bda\bap\bp.\b.c\bco\bon\bnf\bf
-       # Either specify one or more URIs or one or more host:port pairs.
-       # If neither is specified sudo will default to localhost, port 389.
-       #
-       #host          ldapserver
-       #host          ldapserver1 ldapserver2:390
-       #
-       # Default port if host is specified without one, defaults to 389.
-       #port          389
-       #
-       # URI will override the host and port settings.
-       uri            ldap://ldapserver
-       #uri            ldaps://secureldapserver
-       #uri            ldaps://secureldapserver ldap://ldapserver
-       #
-       # The amount of time, in seconds, to wait while trying to connect to
-       # an LDAP server.
-       bind_timelimit 30
-       #
-       # The amount of time, in seconds, to wait while performing an LDAP query.
-       timelimit 30
-       #
-       # Must be set or sudo will ignore LDAP; may be specified multiple times.
-       sudoers_base   ou=SUDOers,dc=my-domain,dc=com
-       #
-       # verbose sudoers matching from ldap
-       #sudoers_debug 2
-       #
-       # Enable support for time-based entries in sudoers.
-       #sudoers_timed yes
-       #
-       # optional proxy credentials
-       #binddn        <who to search as>
-       #bindpw        <password>
-       #rootbinddn    <who to search as, uses /etc/ldap.secret for bindpw>
-       #
-       # LDAP protocol version, defaults to 3
-       #ldap_version 3
-       #
-       # Define if you want to use an encrypted LDAP connection.
-       # Typically, you must also set the port to 636 (ldaps).
-       #ssl on
-       #
-       # Define if you want to use port 389 and switch to
-       # encryption before the bind credentials are sent.
-       # Only supported by LDAP servers that support the start_tls
-       # extension such as OpenLDAP.
-       #ssl start_tls
-       #
-       # Additional TLS options follow that allow tweaking of the
-       # SSL/TLS connection.
-       #
-       #tls_checkpeer yes # verify server SSL certificate
-       #tls_checkpeer no  # ignore server SSL certificate
-       #
-       # If you enable tls_checkpeer, specify either tls_cacertfile
-       # or tls_cacertdir.  Only supported when using OpenLDAP.
-       #
-       #tls_cacertfile /etc/certs/trusted_signers.pem
-       #tls_cacertdir  /etc/certs
-       #
-       # For systems that don't have /dev/random
-       # use this along with PRNGD or EGD.pl to seed the
-       # random number pool to generate cryptographic session keys.
-       # Only supported when using OpenLDAP.
-       #
-       #tls_randfile /etc/egd-pool
-       #
-       # You may restrict which ciphers are used.  Consult your SSL
-       # documentation for which options go here.
-       # Only supported when using OpenLDAP.
-       #
-       #tls_ciphers <cipher-list>
-       #
-       # Sudo can provide a client certificate when communicating to
-       # the LDAP server.
-       # Tips:
-       #   * Enable both lines at the same time.
-       #   * Do not password protect the key file.
-       #   * Ensure the keyfile is only readable by root.
-       #
-       # For OpenLDAP:
-       #tls_cert /etc/certs/client_cert.pem
-       #tls_key  /etc/certs/client_key.pem
-       #
-       # For SunONE or iPlanet LDAP, tls_cert and tls_key may specify either
-       # a directory, in which case the files in the directory must have the
-       # default names (e.g., cert8.db and key4.db), or the path to the cert
-       # and key files themselves.  However, a bug in version 5.0 of the LDAP
-       # SDK will prevent specific file names from working.  For this reason
-       # it is suggested that tls_cert and tls_key be set to a directory,
-       # not a file name.
-       #
-       # The certificate database specified by tls_cert may contain CA certs
-       # and/or the client's cert.  If the client's cert is included, tls_key
-       # should be specified as well.
-       # For backward compatibility, "sslpath" may be used in place of tls_cert.
-       #tls_cert /var/ldap
-       #tls_key /var/ldap
-       #
-       # If using SASL authentication for LDAP (OpenSSL)
-       # use_sasl yes
-       # sasl_auth_id <SASL user name>
-       # rootuse_sasl yes
-       # rootsasl_auth_id <SASL user name for root access>
-       # sasl_secprops none
-       # krb5_ccname /etc/.ldapcache
-
-   S\bSu\bud\bdo\boe\ber\brs\bs s\bsc\bch\bhe\bem\bma\ba f\bfo\bor\br O\bOp\bpe\ben\bnL\bLD\bDA\bAP\bP
-     The following schema, in OpenLDAP format, is included with s\bsu\bud\bdo\bo source
-     and binary distributions as _\bs_\bc_\bh_\be_\bm_\ba_\b._\bO_\bp_\be_\bn_\bL_\bD_\bA_\bP.  Simply copy it to the
-     schema directory (e.g., _\b/_\be_\bt_\bc_\b/_\bo_\bp_\be_\bn_\bl_\bd_\ba_\bp_\b/_\bs_\bc_\bh_\be_\bm_\ba), add the proper include
-     line in _\bs_\bl_\ba_\bp_\bd_\b._\bc_\bo_\bn_\bf and restart s\bsl\bla\bap\bpd\bd.  Sites using the optional on-line
-     configuration supported by OpenLDAP 2.3 and higher should apply the
-     _\bs_\bc_\bh_\be_\bm_\ba_\b._\bo_\bl_\bc_\bS_\bu_\bd_\bo file instead.
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.1
-          NAME 'sudoUser'
-          DESC 'User(s) who may  run sudo'
-          EQUALITY caseExactIA5Match
-          SUBSTR caseExactIA5SubstringsMatch
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.2
-          NAME 'sudoHost'
-          DESC 'Host(s) who may run sudo'
-          EQUALITY caseExactIA5Match
-          SUBSTR caseExactIA5SubstringsMatch
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.3
-          NAME 'sudoCommand'
-          DESC 'Command(s) to be executed by sudo'
-          EQUALITY caseExactIA5Match
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.4
-          NAME 'sudoRunAs'
-          DESC 'User(s) impersonated by sudo'
-          EQUALITY caseExactIA5Match
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.5
-          NAME 'sudoOption'
-          DESC 'Options(s) followed by sudo'
-          EQUALITY caseExactIA5Match
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.6
-          NAME 'sudoRunAsUser'
-          DESC 'User(s) impersonated by sudo'
-          EQUALITY caseExactIA5Match
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.7
-          NAME 'sudoRunAsGroup'
-          DESC 'Group(s) impersonated by sudo'
-          EQUALITY caseExactIA5Match
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.8
-          NAME 'sudoNotBefore'
-          DESC 'Start of time interval for which the entry is valid'
-          EQUALITY generalizedTimeMatch
-          ORDERING generalizedTimeOrderingMatch
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.9
-          NAME 'sudoNotAfter'
-          DESC 'End of time interval for which the entry is valid'
-          EQUALITY generalizedTimeMatch
-          ORDERING generalizedTimeOrderingMatch
-          SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-
-       attributetype ( 1.3.6.1.4.1.15953.9.1.10
-           NAME 'sudoOrder'
-           DESC 'an integer to order the sudoRole entries'
-           EQUALITY integerMatch
-           ORDERING integerOrderingMatch
-           SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-
-       objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
-          DESC 'Sudoer Entries'
-          MUST ( cn )
-          MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
-                sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
-                sudoOrder $ description )
-          )
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     cvtsudoers(1), ldap.conf(4), sssd-sudo(4), sudo.conf(4), sudoers(4)
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-C\bCA\bAV\bVE\bEA\bAT\bTS\bS
-     Note that there are differences in the way that LDAP-based _\bs_\bu_\bd_\bo_\be_\br_\bs is
-     parsed compared to file-based _\bs_\bu_\bd_\bo_\be_\br_\bs.  See the _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bs _\bb_\be_\bt_\bw_\be_\be_\bn _\bL_\bD_\bA_\bP
-     _\ba_\bn_\bd _\bn_\bo_\bn_\b-_\bL_\bD_\bA_\bP _\bs_\bu_\bd_\bo_\be_\br_\bs section for more information.
-
-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
-     https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     s\bsu\bud\bdo\bo is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                    February 26, 2018                   Sudo 1.8.28
diff --git a/doc/sudoers_timestamp.cat b/doc/sudoers_timestamp.cat
deleted file mode 100644 (file)
index f648972..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-SUDOERS_TIMESTAMP(4)          File Formats Manual         SUDOERS_TIMESTAMP(4)
-
-N\bNA\bAM\bME\bE
-     s\bsu\bud\bdo\boe\ber\brs\bs_\b_t\bti\bim\bme\bes\bst\bta\bam\bmp\bp - Sudoers Time Stamp Format
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     The s\bsu\bud\bdo\boe\ber\brs\bs plugin uses per-user time stamp files for credential caching.
-     Once a user has been authenticated, they may use s\bsu\bud\bdo\bo without a password
-     for a short period of time (5 minutes unless overridden by the
-     _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt option).  By default, s\bsu\bud\bdo\boe\ber\brs\bs uses a separate record
-     for each terminal, which means that a user's login sessions are
-     authenticated separately.  The _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\by_\bp_\be option can be used to
-     select the type of time stamp record s\bsu\bud\bdo\boe\ber\brs\bs will use.
-
-     A multi-record time stamp file format was introduced in s\bsu\bud\bdo\bo 1.8.10 that
-     uses a single file per user.  Previously, a separate file was used for
-     each user and terminal combination unless tty-based time stamps were
-     disabled.  The new format is extensible and records of multiple types and
-     versions may coexist within the same file.
-
-     All records, regardless of type or version, begin with a 16-bit version
-     number and a 16-bit record size.
-
-     Time stamp records have the following structure:
-
-     /* Time stamp entry types */
-     #define TS_GLOBAL               0x01    /* not restricted by tty or ppid */
-     #define TS_TTY                  0x02    /* restricted by tty */
-     #define TS_PPID                 0x03    /* restricted by ppid */
-     #define TS_LOCKEXCL             0x04    /* special lock record */
-
-     /* Time stamp flags */
-     #define TS_DISABLED             0x01    /* entry disabled */
-     #define TS_ANYUID               0x02    /* ignore uid, only valid in key */
-
-     struct timestamp_entry {
-         unsigned short version;     /* version number */
-         unsigned short size;        /* entry size */
-         unsigned short type;        /* TS_GLOBAL, TS_TTY, TS_PPID */
-         unsigned short flags;       /* TS_DISABLED, TS_ANYUID */
-         uid_t auth_uid;             /* uid to authenticate as */
-         pid_t sid;                  /* session ID associated with tty/ppid */
-         struct timespec start_time; /* session/ppid start time */
-         struct timespec ts;         /* time stamp (CLOCK_MONOTONIC) */
-         union {
-             dev_t ttydev;           /* tty device number */
-             pid_t ppid;             /* parent pid */
-         } u;
-     };
-
-     The timestamp_entry struct fields are as follows:
-
-     version
-           The version number of the timestamp_entry struct.  New entries are
-           created with a version number of 2.  Records with different version
-           numbers may coexist in the same file but are not inter-operable.
-
-     size  The size of the record in bytes.
-
-     type  The record type, currently TS_GLOBAL, TS_TTY, or TS_PPID.
-
-     flags
-           Zero or more record flags which can be bit-wise ORed together.
-           Supported flags are TS_DISABLED, for records disabled via s\bsu\bud\bdo\bo -\b-k\bk
-           and TS_ANYUID, which is used only when matching records.
-
-     auth_uid
-           The user ID that was used for authentication.  Depending on the
-           value of the _\br_\bo_\bo_\bt_\bp_\bw, _\br_\bu_\bn_\ba_\bs_\bp_\bw and _\bt_\ba_\br_\bg_\be_\bt_\bp_\bw options, the user ID may
-           be that of the invoking user, the root user, the default runas user
-           or the target user.
-
-     sid   The ID of the user's terminal session, if present.  The session ID
-           is only used when matching records of type TS_TTY.
-
-     start_time
-           The start time of the session leader for records of type TS_TTY or
-           of the parent process for records of type TS_PPID.  The _\bs_\bt_\ba_\br_\bt_\b__\bt_\bi_\bm_\be
-           is used to help prevent re-use of a time stamp record after a user
-           has logged out.  Not all systems support a method to easily
-           retrieve a process's start time.  The _\bs_\bt_\ba_\br_\bt_\b__\bt_\bi_\bm_\be field was added in
-           s\bsu\bud\bdo\boe\ber\brs\bs version 1.8.22 for the second revision of the
-           timestamp_entry struct.
-
-     ts    The actual time stamp.  A monotonic time source (which does not
-           move backward) is used if the system supports it.  Where possible,
-           s\bsu\bud\bdo\boe\ber\brs\bs uses a monotonic timer that increments even while the
-           system is suspended.  The value of _\bt_\bs is updated each time a
-           command is run via s\bsu\bud\bdo\bo.  If the difference between _\bt_\bs and the
-           current time is less than the value of the _\bt_\bi_\bm_\be_\bs_\bt_\ba_\bm_\bp_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt
-           option, no password is required.
-
-     u.ttydev
-           The device number of the terminal associated with the session for
-           records of type TS_TTY.
-
-     u.ppid
-           The ID of the parent process for records of type TS_PPID.
-
-L\bLO\bOC\bCK\bKI\bIN\bNG\bG
-     In s\bsu\bud\bdo\boe\ber\brs\bs versions 1.8.10 through 1.8.14, the entire time stamp file was
-     locked for exclusive access when reading or writing to the file.
-     Starting in s\bsu\bud\bdo\boe\ber\brs\bs 1.8.15, individual records are locked in the time
-     stamp file instead of the entire file and the lock is held for a longer
-     period of time.  This scheme is described below.
-
-     The first record in the time stamp file is of type TS_LOCKEXCL and is
-     used as a _\bl_\bo_\bc_\bk record to prevent more than one s\bsu\bud\bdo\bo process from adding a
-     new record at the same time.  Once the desired time stamp record has been
-     located or created (and locked), the TS_LOCKEXCL record is unlocked.  The
-     lock on the individual time stamp record, however, is held until
-     authentication is complete.  This allows s\bsu\bud\bdo\boe\ber\brs\bs to avoid prompting for a
-     password multiple times when it is used more than once in a pipeline.
-
-     Records of type TS_GLOBAL cannot be locked for a long period of time
-     since doing so would interfere with other s\bsu\bud\bdo\bo processes.  Instead, a
-     separate lock record is used to prevent multiple s\bsu\bud\bdo\bo processes using the
-     same terminal (or parent process ID) from prompting for a password as the
-     same time.
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     sudoers(4), sudo(1m)
-
-H\bHI\bIS\bST\bTO\bOR\bRY\bY
-     Originally, s\bsu\bud\bdo\bo used a single zero-length file per user and the file's
-     modification time was used as the time stamp.  Later versions of s\bsu\bud\bdo\bo
-     added restrictions on the ownership of the time stamp files and directory
-     as well as sanity checks on the time stamp itself.  Notable changes were
-     introduced in the following s\bsu\bud\bdo\bo versions:
-
-     1.4.0
-           Support for tty-based time stamp file was added by appending the
-           terminal name to the time stamp file name.
-
-     1.6.2
-           The time stamp file was replaced by a per-user directory which
-           contained any tty-based time stamp files.
-
-     1.6.3p2
-           The target user name was added to the time stamp file name when the
-           _\bt_\ba_\br_\bg_\be_\bt_\bp_\bw option was set.
-
-     1.7.3
-           Information about the terminal device was stored in tty-based time
-           stamp files for sanity checking.  This included the terminal device
-           numbers, inode number and, on systems where it was not updated when
-           the device was written to, the inode change time.  This helped
-           prevent re-use of the time stamp file after logout.
-
-     1.8.6p7
-           The terminal session ID was added to tty-based time stamp files to
-           prevent re-use of the time stamp by the same user in a different
-           terminal session.  It also helped prevent re-use of the time stamp
-           file on systems where the terminal device's inode change time was
-           updated by writing.
-
-     1.8.10
-           A new, multi-record time stamp file format was introduced that uses
-           a single file per user.  The terminal device's change time was not
-           included since most systems now update the change time after a
-           write is performed as required by POSIX.
-
-     1.8.15
-           Individual records are locked in the time stamp file instead of the
-           entire file and the lock is held until authentication is complete.
-
-     1.8.22
-           The start time of the terminal session leader or parent process is
-           now stored in non-global time stamp records.  This prevents re-use
-           of the time stamp file after logout in most cases.
-
-           Support was added for the kernel-based tty time stamps available in
-           OpenBSD which do not use an on-disk time stamp file.
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-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
-     https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     s\bsu\bud\bdo\bo is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                     October 7, 2018                    Sudo 1.8.28
diff --git a/doc/sudoreplay.cat b/doc/sudoreplay.cat
deleted file mode 100644 (file)
index bc7c767..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-SUDOREPLAY(1m)               System Manager's Manual              SUDOREPLAY(1m)
-
-N\bNA\bAM\bME\bE
-     s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by - replay sudo session logs
-
-S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
-     s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by [-\b-h\bhn\bnR\bRS\bS] [-\b-d\bd _\bd_\bi_\br] [-\b-f\bf _\bf_\bi_\bl_\bt_\be_\br] [-\b-m\bm _\bn_\bu_\bm] [-\b-s\bs _\bn_\bu_\bm] ID
-
-     s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by [-\b-h\bh] [-\b-d\bd _\bd_\bi_\br] -\b-l\bl [search expression]
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by plays back or lists the output logs created by s\bsu\bud\bdo\bo.  When
-     replaying, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by can play the session back in real-time, or the
-     playback speed may be adjusted (faster or slower) based on the command
-     line options.
-
-     The _\bI_\bD should either be a six character sequence of digits and upper case
-     letters, e.g., 0100A5, or a pattern matching the _\bi_\bo_\bl_\bo_\bg_\b__\bf_\bi_\bl_\be option in the
-     _\bs_\bu_\bd_\bo_\be_\br_\bs file.  When a command is run via s\bsu\bud\bdo\bo with _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt enabled in
-     the _\bs_\bu_\bd_\bo_\be_\br_\bs file, a TSID=ID string is logged via syslog or to the s\bsu\bud\bdo\bo
-     log file.  The _\bI_\bD may also be determined using s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by's list mode.
-
-     In list mode, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by can be used to find the ID of a session based on
-     a number of criteria such as the user, tty or command run.
-
-     In replay mode, if the standard input and output are connected to a
-     terminal and the -\b-n\bn option is not specified, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by will operate
-     interactively.  In interactive mode, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by will attempt to adjust
-     the terminal size to match that of the session and write directly to the
-     terminal (not all terminals support this).  Additionally, it will poll
-     the keyboard and act on the following keys:
-
-     `\n' or `\r'  Skip to the next replay event; useful for long pauses.
-
-     ` ' (space)   Pause output; press any key to resume.
-
-     `<'           Reduce the playback speed by one half.
-
-     `>'           Double the playback speed.
-
-     The session can be interrupted via control-C.  When the session has
-     finished, the terminal is restored to its original size if it was changed
-     during playback.
-
-     The options are as follows:
-
-     -\b-d\bd _\bd_\bi_\br, -\b--\b-d\bdi\bir\bre\bec\bct\bto\bor\bry\by=_\bd_\bi_\br
-                 Store session logs in _\bd_\bi_\br instead of the default,
-                 _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo.
-
-     -\b-f\bf _\bf_\bi_\bl_\bt_\be_\br, -\b--\b-f\bfi\bil\blt\bte\ber\br=_\bf_\bi_\bl_\bt_\be_\br
-                 Select which I/O type(s) to display.  By default, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by
-                 will display the command's standard output, standard error
-                 and tty output.  The _\bf_\bi_\bl_\bt_\be_\br argument is a comma-separated
-                 list, consisting of one or more of following: _\bs_\bt_\bd_\bi_\bn, _\bs_\bt_\bd_\bo_\bu_\bt,
-                 _\bs_\bt_\bd_\be_\br_\br, _\bt_\bt_\by_\bi_\bn, and _\bt_\bt_\by_\bo_\bu_\bt.
-
-     -\b-h\bh, -\b--\b-h\bhe\bel\blp\bp  Display a short help message to the standard output and exit.
-
-     -\b-l\bl, -\b--\b-l\bli\bis\bst\bt [_\bs_\be_\ba_\br_\bc_\bh _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn]
-                 Enable "list mode".  In this mode, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by will list
-                 available sessions in a format similar to the s\bsu\bud\bdo\bo log file
-                 format, sorted by file name (or sequence number).  If a
-                 _\bs_\be_\ba_\br_\bc_\bh _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn is specified, it will be used to restrict
-                 the IDs that are displayed.  An expression is composed of the
-                 following predicates:
-
-                 command _\bp_\ba_\bt_\bt_\be_\br_\bn
-                         Evaluates to true if the command run matches the
-                         POSIX extended regular expression _\bp_\ba_\bt_\bt_\be_\br_\bn.
-
-                 cwd _\bd_\bi_\br_\be_\bc_\bt_\bo_\br_\by
-                         Evaluates to true if the command was run with the
-                         specified current working directory.
-
-                 fromdate _\bd_\ba_\bt_\be
-                         Evaluates to true if the command was run on or after
-                         _\bd_\ba_\bt_\be.  See _\bD_\ba_\bt_\be _\ba_\bn_\bd _\bt_\bi_\bm_\be _\bf_\bo_\br_\bm_\ba_\bt for a description of
-                         supported date and time formats.
-
-                 group _\br_\bu_\bn_\ba_\bs_\b__\bg_\br_\bo_\bu_\bp
-                         Evaluates to true if the command was run with the
-                         specified _\br_\bu_\bn_\ba_\bs_\b__\bg_\br_\bo_\bu_\bp.  Note that unless a
-                         _\br_\bu_\bn_\ba_\bs_\b__\bg_\br_\bo_\bu_\bp was explicitly specified when s\bsu\bud\bdo\bo was
-                         run this field will be empty in the log.
-
-                 runas _\br_\bu_\bn_\ba_\bs_\b__\bu_\bs_\be_\br
-                         Evaluates to true if the command was run as the
-                         specified _\br_\bu_\bn_\ba_\bs_\b__\bu_\bs_\be_\br.  Note that s\bsu\bud\bdo\bo runs commands
-                         as user _\br_\bo_\bo_\bt by default.
-
-                 todate _\bd_\ba_\bt_\be
-                         Evaluates to true if the command was run on or prior
-                         to _\bd_\ba_\bt_\be.  See _\bD_\ba_\bt_\be _\ba_\bn_\bd _\bt_\bi_\bm_\be _\bf_\bo_\br_\bm_\ba_\bt for a description
-                         of supported date and time formats.
-
-                 tty _\bt_\bt_\by _\bn_\ba_\bm_\be
-                         Evaluates to true if the command was run on the
-                         specified terminal device.  The _\bt_\bt_\by _\bn_\ba_\bm_\be should be
-                         specified without the _\b/_\bd_\be_\bv_\b/ prefix, e.g., _\bt_\bt_\by_\b0_\b1
-                         instead of _\b/_\bd_\be_\bv_\b/_\bt_\bt_\by_\b0_\b1.
-
-                 user _\bu_\bs_\be_\br _\bn_\ba_\bm_\be
-                         Evaluates to true if the ID matches a command run by
-                         _\bu_\bs_\be_\br _\bn_\ba_\bm_\be.
-
-                 Predicates may be abbreviated to the shortest unique string.
-
-                 Predicates may be combined using _\ba_\bn_\bd, _\bo_\br and _\b! operators as
-                 well as `(' and `)' grouping (note that parentheses must
-                 generally be escaped from the shell).  The _\ba_\bn_\bd operator is
-                 optional, adjacent predicates have an implied _\ba_\bn_\bd unless
-                 separated by an _\bo_\br.
-
-     -\b-m\bm, -\b--\b-m\bma\bax\bx-\b-w\bwa\bai\bit\bt _\bm_\ba_\bx_\b__\bw_\ba_\bi_\bt
-                 Specify an upper bound on how long to wait between key
-                 presses or output data.  By default, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by will
-                 accurately reproduce the delays between key presses or
-                 program output.  However, this can be tedious when the
-                 session includes long pauses.  When the -\b-m\bm option is
-                 specified, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by will limit these pauses to at most
-                 _\bm_\ba_\bx_\b__\bw_\ba_\bi_\bt seconds.  The value may be specified as a floating
-                 point number, e.g., _\b2_\b._\b5.  A _\bm_\ba_\bx_\b__\bw_\ba_\bi_\bt of zero or less will
-                 eliminate the pauses entirely.
-
-     -\b-n\bn, -\b--\b-n\bno\bon\bn-\b-i\bin\bnt\bte\ber\bra\bac\bct\bti\biv\bve\be
-                 Do not prompt for user input or attempt to re-size the
-                 terminal.  The session is written to the standard output, not
-                 directly to the user's terminal.
-
-     -\b-R\bR, -\b--\b-n\bno\bo-\b-r\bre\bes\bsi\biz\bze\be
-                 Do not attempt to re-size the terminal to match the terminal
-                 size of the session.
-
-     -\b-S\bS, -\b--\b-s\bsu\bus\bsp\bpe\ben\bnd\bd-\b-w\bwa\bai\bit\bt
-                 Wait while the command was suspended.  By default, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by
-                 will ignore the time interval between when the command was
-                 suspended and when it was resumed.  If the -\b-S\bS option is
-                 specified, s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by will wait instead.
-
-     -\b-s\bs, -\b--\b-s\bsp\bpe\bee\bed\bd _\bs_\bp_\be_\be_\bd_\b__\bf_\ba_\bc_\bt_\bo_\br
-                 This option causes s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by to adjust the number of seconds
-                 it will wait between key presses or program output.  This can
-                 be used to slow down or speed up the display.  For example, a
-                 _\bs_\bp_\be_\be_\bd_\b__\bf_\ba_\bc_\bt_\bo_\br of _\b2 would make the output twice as fast whereas
-                 a _\bs_\bp_\be_\be_\bd_\b__\bf_\ba_\bc_\bt_\bo_\br of _\b._\b5 would make the output twice as slow.
-
-     -\b-V\bV, -\b--\b-v\bve\ber\brs\bsi\bio\bon\bn
-                 Print the s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by versions version number and exit.
-
-   D\bDa\bat\bte\be a\ban\bnd\bd t\bti\bim\bme\be f\bfo\bor\brm\bma\bat\bt
-     The time and date may be specified multiple ways, common formats include:
-
-     HH:MM:SS am MM/DD/CCYY timezone
-             24 hour time may be used in place of am/pm.
-
-     HH:MM:SS am Month, Day Year timezone
-             24 hour time may be used in place of am/pm, and month and day
-             names may be abbreviated.  Note that month and day of the week
-             names must be specified in English.
-
-     CCYY-MM-DD HH:MM:SS
-             ISO time format
-
-     DD Month CCYY HH:MM:SS
-             The month name may be abbreviated.
-
-     Either time or date may be omitted, the am/pm and timezone are optional.
-     If no date is specified, the current day is assumed; if no time is
-     specified, the first second of the specified date is used.  The less
-     significant parts of both time and date may also be omitted, in which
-     case zero is assumed.
-
-     The following are all valid time and date specifications:
-
-     now     The current time and date.
-
-     tomorrow
-             Exactly one day from now.
-
-     yesterday
-             24 hours ago.
-
-     2 hours ago
-             2 hours ago.
-
-     next Friday
-             The first second of the Friday in the next (upcoming) week.  Not
-             to be confused with "this Friday" which would match the Friday of
-             the current week.
-
-     last week
-             The current time but 7 days ago.  This is equivalent to "a week
-             ago".
-
-     a fortnight ago
-             The current time but 14 days ago.
-
-     10:01 am 9/17/2009
-             10:01 am, September 17, 2009.
-
-     10:01 am
-             10:01 am on the current day.
-
-     10      10:00 am on the current day.
-
-     9/17/2009
-             00:00 am, September 17, 2009.
-
-     10:01 am Sep 17, 2009
-             10:01 am, September 17, 2009.
-
-     Note that relative time specifications do not always work as expected.
-     For example, the "next" qualifier is intended to be used in conjunction
-     with a day such as "next Monday".  When used with units of weeks, months,
-     years, etc the result will be one more than expected.  For example, "next
-     week" will result in a time exactly two weeks from now, which is probably
-     not what was intended.  This will be addressed in a future version of
-     s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by.
-
-   D\bDe\beb\bbu\bug\bgg\bgi\bin\bng\bg s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by
-     s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by versions 1.8.4 and higher support a flexible debugging
-     framework that is configured via Debug lines in the sudo.conf(4) file.
-
-     For more information on configuring sudo.conf(4), please refer to its
-     manual.
-
-F\bFI\bIL\bLE\bES\bS
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf            Debugging framework configuration
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo          The default I/O log directory.
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo_\b/_\b0_\b0_\b/_\b0_\b0_\b/_\b0_\b1_\b/_\bl_\bo_\bg
-                               Example session log info.
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo_\b/_\b0_\b0_\b/_\b0_\b0_\b/_\b0_\b1_\b/_\bs_\bt_\bd_\bi_\bn
-                               Example session standard input log.
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo_\b/_\b0_\b0_\b/_\b0_\b0_\b/_\b0_\b1_\b/_\bs_\bt_\bd_\bo_\bu_\bt
-                               Example session standard output log.
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo_\b/_\b0_\b0_\b/_\b0_\b0_\b/_\b0_\b1_\b/_\bs_\bt_\bd_\be_\br_\br
-                               Example session standard error log.
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo_\b/_\b0_\b0_\b/_\b0_\b0_\b/_\b0_\b1_\b/_\bt_\bt_\by_\bi_\bn
-                               Example session tty input file.
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo_\b/_\b0_\b0_\b/_\b0_\b0_\b/_\b0_\b1_\b/_\bt_\bt_\by_\bo_\bu_\bt
-                               Example session tty output file.
-
-     _\b/_\bv_\ba_\br_\b/_\bl_\bo_\bg_\b/_\bs_\bu_\bd_\bo_\b-_\bi_\bo_\b/_\b0_\b0_\b/_\b0_\b0_\b/_\b0_\b1_\b/_\bt_\bi_\bm_\bi_\bn_\bg
-                               Example session timing file.
-
-     Note that the _\bs_\bt_\bd_\bi_\bn, _\bs_\bt_\bd_\bo_\bu_\bt and _\bs_\bt_\bd_\be_\br_\br files will be empty unless s\bsu\bud\bdo\bo
-     was used as part of a pipeline for a particular command.
-
-E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
-     List sessions run by user _\bm_\bi_\bl_\bl_\be_\br_\bt:
-
-           # sudoreplay -l user millert
-
-     List sessions run by user _\bb_\bo_\bb with a command containing the string vi:
-
-           # sudoreplay -l user bob command vi
-
-     List sessions run by user _\bj_\be_\bf_\bf that match a regular expression:
-
-           # sudoreplay -l user jeff command '/bin/[a-z]*sh'
-
-     List sessions run by jeff or bob on the console:
-
-           # sudoreplay -l ( user jeff or user bob ) tty console
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     script(1), sudo.conf(4), sudo(1m)
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-B\bBU\bUG\bGS\bS
-     If you feel you have found a bug in s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by, please submit a bug
-     report at https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     s\bsu\bud\bdo\bor\bre\bep\bpl\bla\bay\by is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                     October 6, 2018                    Sudo 1.8.28
diff --git a/doc/visudo.cat b/doc/visudo.cat
deleted file mode 100644 (file)
index 1260ca8..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-VISUDO(1m)                   System Manager's Manual                  VISUDO(1m)
-
-N\bNA\bAM\bME\bE
-     v\bvi\bis\bsu\bud\bdo\bo - edit the sudoers file
-
-S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
-     v\bvi\bis\bsu\bud\bdo\bo [-\b-c\bch\bhq\bqs\bsV\bV] [[-\b-f\bf] _\bs_\bu_\bd_\bo_\be_\br_\bs]
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     v\bvi\bis\bsu\bud\bdo\bo edits the _\bs_\bu_\bd_\bo_\be_\br_\bs file in a safe fashion, analogous to vipw(1m).
-     v\bvi\bis\bsu\bud\bdo\bo locks the _\bs_\bu_\bd_\bo_\be_\br_\bs file against multiple simultaneous edits,
-     provides basic sanity checks, and checks for parse errors before
-     installing the edited file.  If the _\bs_\bu_\bd_\bo_\be_\br_\bs file is currently being
-     edited you will receive a message to try again later.
-
-     v\bvi\bis\bsu\bud\bdo\bo parses the _\bs_\bu_\bd_\bo_\be_\br_\bs file after editing and will not save the
-     changes if there is a syntax error.  Upon finding an error, v\bvi\bis\bsu\bud\bdo\bo will
-     print a message stating the line number(s) where the error occurred and
-     the user will receive the "What now?" prompt.  At this point the user may
-     enter `e' to re-edit the _\bs_\bu_\bd_\bo_\be_\br_\bs file, `x' to exit without saving the
-     changes, or `Q' to quit and save changes.  The `Q' option should be used
-     with extreme caution because if v\bvi\bis\bsu\bud\bdo\bo believes there to be a parse
-     error, so will s\bsu\bud\bdo\bo and no one will be able to run s\bsu\bud\bdo\bo again until the
-     error is fixed.  If `e' is typed to edit the _\bs_\bu_\bd_\bo_\be_\br_\bs file after a parse
-     error has been detected, the cursor will be placed on the line where the
-     error occurred (if the editor supports this feature).
-
-     There are two _\bs_\bu_\bd_\bo_\be_\br_\bs settings that determine which editor v\bvi\bis\bsu\bud\bdo\bo will
-     run.
-
-     editor    A colon (`:') separated list of editors allowed to be used with
-               v\bvi\bis\bsu\bud\bdo\bo.  v\bvi\bis\bsu\bud\bdo\bo will choose the editor that matches the user's
-               SUDO_EDITOR, VISUAL or EDITOR environment variable if possible,
-               or the first editor in the list that exists and is executable.
-               Note that s\bsu\bud\bdo\bo does not preserve the SUDO_EDITOR, VISUAL or
-               EDITOR environment variables unless they are present in the
-               _\be_\bn_\bv_\b__\bk_\be_\be_\bp list or the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt option is disabled in the
-               _\bs_\bu_\bd_\bo_\be_\br_\bs file.  The default editor path is _\bv_\bi which can be set
-               at compile time via the --with-editor configure option.
-
-     env_editor
-               If set, v\bvi\bis\bsu\bud\bdo\bo will use the value of the SUDO_EDITOR, VISUAL or
-               EDITOR environment variables before falling back on the default
-               editor list.  Note that v\bvi\bis\bsu\bud\bdo\bo is typically run as root so this
-               option may allow a user with v\bvi\bis\bsu\bud\bdo\bo privileges to run arbitrary
-               commands as root without logging.  An alternative is to place a
-               colon-separated list of "safe" editors int the _\be_\bd_\bi_\bt_\bo_\br variable.
-               v\bvi\bis\bsu\bud\bdo\bo will then only use SUDO_EDITOR, VISUAL or EDITOR if they
-               match a value specified in _\be_\bd_\bi_\bt_\bo_\br.  If the _\be_\bn_\bv_\b__\br_\be_\bs_\be_\bt flag is
-               enabled, the SUDO_EDITOR, VISUAL and/or EDITOR environment
-               variables must be present in the _\be_\bn_\bv_\b__\bk_\be_\be_\bp list for the
-               _\be_\bn_\bv_\b__\be_\bd_\bi_\bt_\bo_\br flag to function when v\bvi\bis\bsu\bud\bdo\bo is invoked via s\bsu\bud\bdo\bo.
-               The default value is _\bo_\bn, which can be set at compile time via
-               the --with-env-editor configure option.
-
-     The options are as follows:
-
-     -\b-c\bc, -\b--\b-c\bch\bhe\bec\bck\bk
-                 Enable _\bc_\bh_\be_\bc_\bk_\b-_\bo_\bn_\bl_\by mode.  The existing _\bs_\bu_\bd_\bo_\be_\br_\bs file (and any
-                 other files it includes) will be checked for syntax errors.
-                 If the path to the _\bs_\bu_\bd_\bo_\be_\br_\bs file was not specified, v\bvi\bis\bsu\bud\bdo\bo
-                 will also check the file owner and mode.  A message will be
-                 printed to the standard output describing the status of
-                 _\bs_\bu_\bd_\bo_\be_\br_\bs unless the -\b-q\bq option was specified.  If the check
-                 completes successfully, v\bvi\bis\bsu\bud\bdo\bo will exit with a value of 0.
-                 If an error is encountered, v\bvi\bis\bsu\bud\bdo\bo will exit with a value of
-                 1.
-
-     -\b-f\bf _\bs_\bu_\bd_\bo_\be_\br_\bs, -\b--\b-f\bfi\bil\ble\be=_\bs_\bu_\bd_\bo_\be_\br_\bs
-                 Specify an alternate _\bs_\bu_\bd_\bo_\be_\br_\bs file location, see below.  As of
-                 version 1.8.27, the _\bs_\bu_\bd_\bo_\be_\br_\bs path can be specified without
-                 using the -\b-f\bf option.
-
-     -\b-h\bh, -\b--\b-h\bhe\bel\blp\bp  Display a short help message to the standard output and exit.
-
-     -\b-q\bq, -\b--\b-q\bqu\bui\bie\bet\bt
-                 Enable _\bq_\bu_\bi_\be_\bt mode.  In this mode details about syntax errors
-                 are not printed.  This option is only useful when combined
-                 with the -\b-c\bc option.
-
-     -\b-s\bs, -\b--\b-s\bst\btr\bri\bic\bct\bt
-                 Enable _\bs_\bt_\br_\bi_\bc_\bt checking of the _\bs_\bu_\bd_\bo_\be_\br_\bs file.  If an alias is
-                 referenced but not actually defined or if there is a cycle in
-                 an alias, v\bvi\bis\bsu\bud\bdo\bo will consider this a parse error.  Note that
-                 it is not possible to differentiate between an alias and a
-                 host name or user name that consists solely of uppercase
-                 letters, digits, and the underscore (`_') character.
-
-     -\b-V\bV, -\b--\b-v\bve\ber\brs\bsi\bio\bon\bn
-                 Print the v\bvi\bis\bsu\bud\bdo\bo and _\bs_\bu_\bd_\bo_\be_\br_\bs grammar versions and exit.
-
-     A _\bs_\bu_\bd_\bo_\be_\br_\bs file may be specified instead of the default, _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs.
-     The temporary file used is the specified _\bs_\bu_\bd_\bo_\be_\br_\bs file with ".tmp"
-     appended to it.  In _\bc_\bh_\be_\bc_\bk_\b-_\bo_\bn_\bl_\by mode only, `-' may be used to indicate
-     that _\bs_\bu_\bd_\bo_\be_\br_\bs will be read from the standard input.  Because the policy is
-     evaluated in its entirety, it is not sufficient to check an individual
-     _\bs_\bu_\bd_\bo_\be_\br_\bs include file for syntax errors.
-
-   D\bDe\beb\bbu\bug\bgg\bgi\bin\bng\bg a\ban\bnd\bd s\bsu\bud\bdo\boe\ber\brs\bs p\bpl\blu\bug\bgi\bin\bn a\bar\brg\bgu\bum\bme\ben\bnt\bts\bs
-     v\bvi\bis\bsu\bud\bdo\bo versions 1.8.4 and higher support a flexible debugging framework
-     that is configured via Debug lines in the sudo.conf(4) file.
-
-     Starting with s\bsu\bud\bdo\bo 1.8.12, v\bvi\bis\bsu\bud\bdo\bo will also parse the arguments to the
-     _\bs_\bu_\bd_\bo_\be_\br_\bs plugin to override the default _\bs_\bu_\bd_\bo_\be_\br_\bs path name, UID, GID and
-     file mode.  These arguments, if present, should be listed after the path
-     to the plugin (i.e., after _\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bs_\bo).  Multiple arguments may be
-     specified, separated by white space.  For example:
-
-           Plugin sudoers_policy sudoers.so sudoers_mode=0400
-
-     The following arguments are supported:
-
-     sudoers_file=pathname
-               The _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bf_\bi_\bl_\be argument can be used to override the default
-               path to the _\bs_\bu_\bd_\bo_\be_\br_\bs file.
-
-     sudoers_uid=uid
-               The _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bu_\bi_\bd argument can be used to override the default
-               owner of the sudoers file.  It should be specified as a numeric
-               user ID.
-
-     sudoers_gid=gid
-               The _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bg_\bi_\bd argument can be used to override the default
-               group of the sudoers file.  It must be specified as a numeric
-               group ID (not a group name).
-
-     sudoers_mode=mode
-               The _\bs_\bu_\bd_\bo_\be_\br_\bs_\b__\bm_\bo_\bd_\be argument can be used to override the default
-               file mode for the sudoers file.  It should be specified as an
-               octal value.
-
-     For more information on configuring sudo.conf(4), please refer to its
-     manual.
-
-E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
-     The following environment variables may be consulted depending on the
-     value of the _\be_\bd_\bi_\bt_\bo_\br and _\be_\bn_\bv_\b__\be_\bd_\bi_\bt_\bo_\br _\bs_\bu_\bd_\bo_\be_\br_\bs settings:
-
-     SUDO_EDITOR      Invoked by v\bvi\bis\bsu\bud\bdo\bo as the editor to use
-
-     VISUAL           Used by v\bvi\bis\bsu\bud\bdo\bo if SUDO_EDITOR is not set
-
-     EDITOR           Used by v\bvi\bis\bsu\bud\bdo\bo if neither SUDO_EDITOR nor VISUAL is set
-
-F\bFI\bIL\bLE\bES\bS
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\b._\bc_\bo_\bn_\bf            Sudo front end configuration
-
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs              List of who can run what
-
-     _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs_\b._\bt_\bm_\bp          Default temporary file used by visudo
-
-D\bDI\bIA\bAG\bGN\bNO\bOS\bST\bTI\bIC\bCS\bS
-     In addition to reporting _\bs_\bu_\bd_\bo_\be_\br_\bs parse errors, v\bvi\bis\bsu\bud\bdo\bo may produce the
-     following messages:
-
-     sudoers file busy, try again later.
-           Someone else is currently editing the _\bs_\bu_\bd_\bo_\be_\br_\bs file.
-
-     /etc/sudoers: Permission denied
-           You didn't run v\bvi\bis\bsu\bud\bdo\bo as root.
-
-     you do not exist in the passwd database
-           Your user ID does not appear in the system passwd database.
-
-     Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined
-           Either you are trying to use an undeclared
-           {User,Runas,Host,Cmnd}_Alias or you have a user or host name listed
-           that consists solely of uppercase letters, digits, and the
-           underscore (`_') character.  In the latter case, you can ignore the
-           warnings (s\bsu\bud\bdo\bo will not complain).  The message is prefixed with
-           the path name of the _\bs_\bu_\bd_\bo_\be_\br_\bs file and the line number where the
-           undefined alias was used.  In -\b-s\bs (strict) mode these are errors,
-           not warnings.
-
-     Warning: unused {User,Runas,Host,Cmnd}_Alias
-           The specified {User,Runas,Host,Cmnd}_Alias was defined but never
-           used.  The message is prefixed with the path name of the _\bs_\bu_\bd_\bo_\be_\br_\bs
-           file and the line number where the unused alias was defined.  You
-           may wish to comment out or remove the unused alias.
-
-     Warning: cycle in {User,Runas,Host,Cmnd}_Alias
-           The specified {User,Runas,Host,Cmnd}_Alias includes a reference to
-           itself, either directly or through an alias it includes.  The
-           message is prefixed with the path name of the _\bs_\bu_\bd_\bo_\be_\br_\bs file and the
-           line number where the cycle was detected.  This is only a warning
-           unless v\bvi\bis\bsu\bud\bdo\bo is run in -\b-s\bs (strict) mode as s\bsu\bud\bdo\bo will ignore cycles
-           when parsing the _\bs_\bu_\bd_\bo_\be_\br_\bs file.
-
-     unknown defaults entry "name"
-           The _\bs_\bu_\bd_\bo_\be_\br_\bs file contains a Defaults setting not recognized by
-           v\bvi\bis\bsu\bud\bdo\bo.
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     vi(1), sudo.conf(4), sudoers(4), sudo(1m), vipw(1m)
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     Many people have worked on s\bsu\bud\bdo\bo over the years; this version consists of
-     code written primarily by:
-
-           Todd C. Miller
-
-     See the CONTRIBUTORS file in the s\bsu\bud\bdo\bo distribution
-     (https://www.sudo.ws/contributors.html) for an exhaustive list of people
-     who have contributed to s\bsu\bud\bdo\bo.
-
-C\bCA\bAV\bVE\bEA\bAT\bTS\bS
-     There is no easy way to prevent a user from gaining a root shell if the
-     editor used by v\bvi\bis\bsu\bud\bdo\bo allows shell escapes.
-
-B\bBU\bUG\bGS\bS
-     If you feel you have found a bug in v\bvi\bis\bsu\bud\bdo\bo, please submit a bug report at
-     https://bugzilla.sudo.ws/
-
-S\bSU\bUP\bPP\bPO\bOR\bRT\bT
-     Limited free support is available via the sudo-users mailing list, see
-     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
-     the archives.
-
-D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
-     v\bvi\bis\bsu\bud\bdo\bo is provided "AS IS" and any express or implied warranties,
-     including, but not limited to, the implied warranties of merchantability
-     and fitness for a particular purpose are disclaimed.  See the LICENSE
-     file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
-     complete details.
-
-Sudo 1.8.28                      June 20, 2019                     Sudo 1.8.28