Merge tag 'debian/1.8.5p2-1' into squeeze
[debian/sudo] / doc / sudo.pod
diff --git a/doc/sudo.pod b/doc/sudo.pod
new file mode 100644 (file)
index 0000000..b9f7578
--- /dev/null
@@ -0,0 +1,807 @@
+Copyright (c) 1994-1996, 1998-2005, 2007-2012
+       Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Sponsored in part by the Defense Advanced Research Projects
+Agency (DARPA) and Air Force Research Laboratory, Air Force
+Materiel Command, USAF, under agreement number F39502-99-1-0512.
+
+=pod
+
+=head1 NAME
+
+sudo, sudoedit - execute a command as another user
+
+=head1 SYNOPSIS
+
+B<sudo> B<-h> | B<-K> | B<-k> | B<-V>
+
+B<sudo> B<-v> [B<-AknS>]
+S<[B<-a> I<auth_type>]>
+S<[B<-g> I<group name>|I<#gid>]> S<[B<-p> I<prompt>]>
+S<[B<-u> I<user name>|I<#uid>]>
+
+B<sudo> B<-l[l]> [B<-AknS>]
+S<[B<-a> I<auth_type>]>
+S<[B<-g> I<group name>|I<#gid>]> S<[B<-p> I<prompt>]>
+S<[B<-U> I<user name>]> S<[B<-u> I<user name>|I<#uid>]> [I<command>]
+
+B<sudo> [B<-AbEHnPS>]
+S<[B<-a> I<auth_type>]>
+S<[B<-C> I<fd>]>
+S<[B<-c> I<class>|I<->]>
+S<[B<-g> I<group name>|I<#gid>]> S<[B<-p> I<prompt>]>
+S<[B<-r> I<role>]> S<[B<-t> I<type>]>
+S<[B<-u> I<user name>|I<#uid>]>
+S<[B<VAR>=I<value>]> S<[B<-i> | B<-s>]> [I<command>]
+
+B<sudoedit> [B<-AnS>]
+S<[B<-a> I<auth_type>]>
+S<[B<-C> I<fd>]>
+S<[B<-c> I<class>|I<->]>
+S<[B<-g> I<group name>|I<#gid>]> S<[B<-p> I<prompt>]>
+S<[B<-u> I<user name>|I<#uid>]> file ...
+
+=head1 DESCRIPTION
+
+B<sudo> allows a permitted user to execute a I<command> as the
+superuser or another user, as specified by the security policy.
+The real and effective uid and gid 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>
+option was specified).
+
+B<sudo> supports a plugin architecture for security policies and
+input/output logging.  Third parties can develop and distribute
+their own policy and I/O logging modules to work seamlessly with
+the B<sudo> front end.  The default security policy is I<sudoers>,
+which is configured via the file F<@sysconfdir@/sudoers>, or via
+LDAP.  See the L<PLUGINS> section for more information.
+
+The security policy determines what privileges, if any, a user has
+to run B<sudo>.  The policy may require that users authenticate
+themselves with a password or another authentication mechanism.  If
+authentication is required, B<sudo> 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
+I<sudoers> security policy is C<@password_timeout@> minutes.
+
+Security policies may support credential caching to allow the user
+to run B<sudo> again for a period of time without requiring
+authentication.  The I<sudoers> policy caches credentials for
+C<@timeout@> minutes, unless overridden in L<sudoers(5)>.  By
+running B<sudo> with the B<-v> option, a user can update the cached
+credentials without running a I<command>.
+
+When invoked as B<sudoedit>, the B<-e> option (described below),
+is implied.
+
+Security policies may log successful and failed attempts to use
+B<sudo>.  If an I/O plugin is configured, the running command's
+input and output may be logged as well.
+
+=head1 OPTIONS
+
+B<sudo> accepts the following command line options:
+
+=over 12
+
+=item -A
+
+Normally, if B<sudo> requires a password, it will read it from the
+user's terminal.  If the B<-A> (I<askpass>) 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
+C<SUDO_ASKPASS> environment variable is set, it specifies the path
+to the helper program.  Otherwise, if F<@sysconfdir@/sudo.conf>
+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, sudo will exit with an error.
+
+=item -a I<type>
+
+The B<-a> (I<authentication type>) option causes B<sudo> to use the
+specified authentication type when validating the user, as allowed
+by F</etc/login.conf>.  The system administrator may specify a list
+of sudo-specific authentication methods by adding an "auth-sudo"
+entry in F</etc/login.conf>.  This option is only available on systems
+that support BSD authentication.
+
+=item -b
+
+The B<-b> (I<background>) option tells B<sudo> to run the given
+command in the background.  Note that if you use the B<-b>
+option you cannot use shell job control to manipulate the process.
+Most interactive commands will fail to work properly in background
+mode.
+
+=item -C I<fd>
+
+Normally, B<sudo> will close all open file descriptors other than
+standard input, standard output and standard error.  The B<-C>
+(I<close from>) option allows the user to specify a starting point
+above the standard error (file descriptor three).  Values less than
+three are not permitted.  The security policy may restrict the
+user's ability to use the B<-C> option.  The I<sudoers> policy only
+permits use of the B<-C> option when the administrator has enabled
+the I<closefrom_override> option.
+
+=item -c I<class>
+
+The B<-c> (I<class>) option causes B<sudo> to run the specified command
+with resources limited by the specified login class.  The I<class>
+argument can be either a class name as defined in F</etc/login.conf>,
+or a single '-' character.  Specifying a I<class> of C<-> indicates
+that the command should be run restricted by the default login
+capabilities for the user the command is run as.  If the I<class>
+argument specifies an existing user class, the command must be run
+as root, or the B<sudo> command must be run from a shell that is already
+root.  This option is only available on systems with BSD login classes.
+
+=item -E
+
+The B<-E> (I<preserve> I<environment>) option indicates to the
+security policy that the user wishes to preserve their existing
+environment variables.  The security policy may return an error if
+the B<-E> option is specified and the user does not have permission
+to preserve the environment.
+
+=item -e
+
+The B<-e> (I<edit>) option indicates that, instead of running a
+command, the user wishes to edit one or more files.  In lieu of a
+command, the string "sudoedit" is used when consulting the security
+policy.  If the user is authorized by the policy, the following
+steps are taken:
+
+=over 4
+
+=item 1.
+
+Temporary copies are made of the files to be edited with the owner
+set to the invoking user.
+
+=item 2.
+
+The editor specified by the policy is run to edit the temporary files.
+The I<sudoers> policy uses the C<SUDO_EDITOR>, C<VISUAL> and C<EDITOR>
+environment variables (in that order).  If none of C<SUDO_EDITOR>,
+C<VISUAL> or C<EDITOR> are set, the first program listed in the
+I<editor> L<sudoers(5)> option is used.
+
+=item 3.
+
+If they have been modified, the temporary files are copied back to
+their original location and the temporary versions are removed.
+
+=back
+
+If the specified file does not exist, it will be created.  Note
+that unlike most commands run by B<sudo>, the editor is run with
+the invoking user's environment unmodified.  If, for some reason,
+B<sudo> 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.
+
+=item -g I<group>
+
+Normally, B<sudo> runs a command with the primary group set to the
+one specified by the password database for the user the command is
+being run as (by default, root).  The B<-g> (I<group>) option causes
+B<sudo> to run the command with the primary group set to I<group>
+instead.  To specify a I<gid> instead of a I<group name>, use
+I<#gid>.  When running commands as a I<gid>, many shells require
+that the '#' be escaped with a backslash ('\').  If no B<-u> option
+is specified, the command will be run as the invoking user (not
+root).  In either case, the primary group will be set to I<group>.
+
+=item -H
+
+The B<-H> (I<HOME>) option requests that the security policy set
+the C<HOME> environment variable to the home directory of the target
+user (root by default) as specified by the password database.
+Depending on the policy, this may be the default behavior.
+
+=item -h
+
+The B<-h> (I<help>) option causes B<sudo> to print a short help message
+to the standard output and exit.
+
+=item -i [command]
+
+The B<-i> (I<simulate initial login>) option runs the shell specified
+by the password database entry of the target user as a login shell.
+This means that login-specific resource files such as C<.profile>
+or C<.login> 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> option.
+If no command is specified, an interactive shell is executed.
+B<sudo> attempts to change to that user's home directory before
+running the shell.  The security policy shall initialize the
+environment to a minimal set of variables, similar to what is present
+when a user logs in.  The I<Command Environment> section in the
+L<sudoers(5)> manual documents how the B<-i> option affects the
+environment in which a command is run when the I<sudoers> policy
+is in use.
+
+=item -K
+
+The B<-K> (sure I<kill>) option is like B<-k> 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.
+
+=item -k [command]
+
+When used alone, the B<-k> (I<kill>) option to B<sudo> invalidates
+the user's cached credentials.  The next time B<sudo> is run a
+password will be required.  This option does not require a password
+and was added to allow a user to revoke B<sudo> permissions from a
+.logout file.  Not all security policies support credential
+caching.
+
+When used in conjunction with a command or an option that may require
+a password, the B<-k> option will cause B<sudo> to ignore the user's
+cached credentials.  As a result, B<sudo> will prompt for a password
+(if one is required by the security policy) and will not update the
+user's cached credentials.
+
+=item -l[l] [I<command>]
+
+If no I<command> is specified, the B<-l> (I<list>) option will list
+the allowed (and forbidden) commands for the invoking user (or the
+user specified by the B<-U> option) on the current host.  If a
+I<command> 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 I<command> is specified but not allowed,
+B<sudo> will exit with a status value of 1.  If the B<-l> option
+is specified with an B<l> argument (i.e. B<-ll>), or if B<-l> is
+specified multiple times, a longer list format is used.
+
+=item -n
+
+The B<-n> (I<non-interactive>) option prevents B<sudo> from prompting
+the user for a password.  If a password is required for the command
+to run, B<sudo> will display an error messages and exit.
+
+=item -P
+
+The B<-P> (I<preserve> I<group vector>) option causes B<sudo> to
+preserve the invoking user's group vector unaltered.  By default,
+the I<sudoers> policy will initialize the group vector to the list
+of groups the target user is in.  The real and effective group IDs,
+however, are still set to match the target user.
+
+=item -p I<prompt>
+
+The B<-p> (I<prompt>) option allows you to override the default
+password prompt and use a custom one.  The following percent (`C<%>')
+escapes are supported by the I<sudoers> policy:
+
+=over 4
+
+=item C<%H>
+
+expanded to the host name including the domain name (on if
+the machine's host name is fully qualified or the I<fqdn> option
+is set in L<sudoers(5)>)
+
+=item C<%h>
+
+expanded to the local host name without the domain name
+
+=item C<%p>
+
+expanded to the name of the user whose password is being requested
+(respects the I<rootpw>, I<targetpw> and I<runaspw> flags in
+L<sudoers(5)>)
+
+=item C<%U>
+
+expanded to the login name of the user the command will be run as
+(defaults to root unless the C<-u> option is also specified)
+
+=item C<%u>
+
+expanded to the invoking user's login name
+
+=item C<%%>
+
+two consecutive C<%> characters are collapsed into a single C<%> character
+
+=back
+
+The prompt specified by the B<-p> option will override the system
+password prompt on systems that support PAM unless the
+I<passprompt_override> flag is disabled in I<sudoers>.
+
+=item -r I<role>
+
+The B<-r> (I<role>) option causes the new (SELinux) security context to 
+have the role specified by I<role>.
+
+=item -S
+
+The B<-S> (I<stdin>) option causes B<sudo> to read the password from
+the standard input instead of the terminal device.  The password must
+be followed by a newline character.
+
+=item -s [command]
+
+The B<-s> (I<shell>) option runs the shell specified by the I<SHELL>
+environment variable if it is set or the shell as specified in the
+password database.  If a command is specified, it is passed to the
+shell for execution via the shell's B<-c> option.  If no command
+is specified, an interactive shell is executed.
+
+=item -t I<type>
+
+The B<-t> (I<type>) option causes the new (SELinux) security context to 
+have the type specified by I<type>.  If no type is specified, the default
+type is derived from the specified role.
+
+=item -U I<user>
+
+The B<-U> (I<other user>) option is used in conjunction with the
+B<-l> option to specify the user whose privileges should be listed.
+The security policy may restrict listing other users' privileges.
+The I<sudoers> policy only allows root or a user with the C<ALL>
+privilege on the current host to use this option.
+
+=item -u I<user>
+
+The B<-u> (I<user>) option causes B<sudo> to run the specified
+command as a user other than I<root>.  To specify a I<uid> instead
+of a I<user name>, use I<#uid>.  When running commands as a I<uid>,
+many shells require that the '#' be escaped with a backslash ('\').
+Security policies may restrict I<uid>s to those listed in the
+password database.  The I<sudoers> policy allows I<uid>s that are
+not in the password database as long as the I<targetpw> option is
+not set.  Other security policies may not support this.
+
+=item -V
+
+The B<-V> (I<version>) option causes B<sudo> to print its version
+string and the version string of the security policy plugin and any
+I/O plugins.  If the invoking user is already root the B<-V> option
+will display the arguments passed to configure when I<sudo> was
+built and plugins may display more verbose information such as
+default options.
+
+=item -v
+
+When given the B<-v> (I<validate>) option, B<sudo> will update the
+user's cached credentials, authenticating the user's password if
+necessary.  For the I<sudoers> plugin, this extends the B<sudo>
+timeout for another C<@timeout@> minutes (or whatever the timeout
+is set to in I<sudoers>) but does not run a command.  Not all
+security policies support cached credentials.
+
+=item --
+
+The B<--> option indicates that B<sudo> should stop processing command
+line arguments.
+
+=back
+
+Environment variables to be set for the command may also be passed
+on the command line in the form of B<VAR>=I<value>, e.g.
+B<LD_LIBRARY_PATH>=I</usr/local/pkg/lib>.  Variables passed on the
+command line are subject to the same restrictions as normal environment
+variables with one important exception.  If the I<setenv> option
+is set in I<sudoers>, the command to be run has the C<SETENV> tag
+set or the command matched is C<ALL>, the user may set variables
+that would otherwise be forbidden.  See L<sudoers(5)> for more information.
+
+=head1 PLUGINS
+
+Plugins are dynamically loaded based on the contents of the
+F<@sysconfdir@/sudo.conf> file.  If no F<@sysconfdir@/sudo.conf>
+file is present, or it contains no C<Plugin> lines, B<sudo>
+will use the traditional I<sudoers> security policy and I/O logging,
+which corresponds to the following F<@sysconfdir@/sudo.conf> file.
+
+ #
+ # Default @sysconfdir@/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 @prefix@/libexec unless
+ #   fully qualified.
+ # The plugin_name corresponds to a global symbol in the plugin
+ #   that contains the plugin interface structure.
+ # The plugin_options are optional.
+ #
+ Plugin policy_plugin sudoers.so
+ Plugin io_plugin sudoers.so 
+
+A C<Plugin> line consists of the C<Plugin> keyword, followed by the
+I<symbol_name> and the I<path> to the shared object containing the
+plugin.  The I<symbol_name> is the name of the C<struct policy_plugin>
+or C<struct io_plugin> in the plugin shared object.  The I<path>
+may be fully qualified or relative.  If not fully qualified it is
+relative to the F<@prefix@/libexec> directory.  Any additional
+parameters after the I<path> are passed as arguments to the plugin's
+I<open> function.  Lines that don't begin with C<Plugin>, C<Path>,
+C<Debug> or C<Set> are silently ignored.
+
+For more information, see the L<sudo_plugin(8)> manual.
+
+=head1 PATHS
+
+A C<Path> line consists of the C<Path> keyword, followed by the
+name of the path to set and its value.  E.g.
+
+ Path noexec @noexec_file@
+ Path askpass /usr/X11R6/bin/ssh-askpass
+
+The following plugin-agnostic paths may be set in the
+F<@sysconfdir@/sudo.conf> file.
+
+=over 16
+
+=item 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
+B<sudo> is executed from a graphical (as opposed to text-based)
+application.  The program specified by I<askpass> should display
+the argument passed to it as the prompt and write the user's password
+to the standard output.  The value of I<askpass> may be overridden
+by the C<SUDO_ASKPASS> environment variable.
+
+=item noexec
+
+The fully-qualified 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 I<noexec>
+functionality on systems that support C<LD_PRELOAD> or its equivalent.
+Defaults to F<@noexec_file@>.
+
+=back
+
+=head1 DEBUG FLAGS
+
+B<sudo> versions 1.8.4 and higher support a flexible debugging
+framework that can help track down what B<sudo> is doing internally
+if there is a problem.
+
+A C<Debug> line consists of the C<Debug> keyword, followed by the
+name of the program to debug (B<sudo>, B<visudo>, B<sudoreplay>),
+the debug file name and a comma-separated list of debug flags.
+The debug flag syntax used by B<sudo> and the I<sudoers> plugin is
+I<subsystem>@I<priority> but the plugin is free to use a different
+format so long as it does not include a command C<,>.
+
+For instance:
+
+ Debug sudo /var/log/sudo_debug all@warn,plugin@info
+
+would log all debugging statements at the I<warn> level and higher
+in addition to those at the I<info> level for the plugin subsystem.
+
+Currently, only one C<Debug> entry per program is supported.  The
+C<sudo> C<Debug> entry is shared by the B<sudo> front end, B<sudoedit>
+and the plugins.  A future release may add support for per-plugin
+C<Debug> lines and/or support for multiple debugging files for a
+single program.
+
+The priorities used by the B<sudo> front end, in order of decreasing
+severity, are: I<crit>, I<err>, I<warn>, I<notice>, I<diag>, I<info>,
+I<trace> and I<debug>.  Each priority, when specified, also includes
+all priorities higher than it.  For example, a priority of I<notice>
+would include debug messages logged at I<notice> and higher.
+
+The following subsystems are used by B<sudo>:
+
+=over 10
+
+=item I<all>
+
+matches every subsystem
+
+=item I<args>
+
+command line argument processing
+
+=item I<conv>
+
+user conversation
+
+=item I<edit>
+
+sudoedit
+
+=item I<exec>
+
+command execution
+
+=item I<main>
+
+B<sudo> main function
+
+=item I<netif>
+
+network interface handling
+
+=item I<pcomm>
+
+communication with the plugin
+
+=item I<plugin>
+
+plugin configuration
+
+=item I<pty>
+
+pseudo-tty related code
+
+=item I<selinux>
+
+SELinux-specific handling
+
+=item I<util>
+
+utility functions
+
+=item I<utmp>
+
+utmp handling
+
+=back
+
+=head1 RETURN VALUES
+
+Upon successful execution of a program, the exit status from B<sudo>
+will simply be the exit status of the program that was executed.
+
+Otherwise, B<sudo> exits with a value of 1 if there is a
+configuration/permission problem or if B<sudo> cannot execute the
+given command.  In the latter case the error string is printed to
+the standard error.  If B<sudo> cannot L<stat(2)> one or more entries
+in the user's C<PATH>, an error is printed on stderr.  (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 L<stat(2)>
+to return "permission denied" is if you are running an automounter
+and one of the directories in your C<PATH> is on a machine that is
+currently unreachable.
+
+=head1 SECURITY NOTES
+
+B<sudo> tries to be safe when executing external commands.
+
+To prevent command spoofing, B<sudo> 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 C<PATH> environment variable is I<not> modified and is passed
+unchanged to the program that B<sudo> executes.
+
+Please note that B<sudo> will normally only log the command it
+explicitly runs.  If a user runs a command such as C<sudo su> or
+C<sudo sh>, subsequent commands run from that shell are not subject
+to B<sudo>'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 B<sudo> to verify that the command does not inadvertently
+give the user an effective root shell.  For more information, please
+see the C<PREVENTING SHELL ESCAPES> section in L<sudoers(5)>.
+
+To prevent the disclosure of potentially sensitive information,
+B<sudo> disables core dumps by default while it is executing (they
+are re-enabled for the command that is run).  To aid in debugging
+B<sudo> crashes, you may wish to re-enable core dumps by setting
+"disable_coredump" to false in the F<@sysconfdir@/sudo.conf> file.
+
+ Set disable_coredump false
+
+Note that by default, most operating systems disable core dumps
+from setuid programs, which includes B<sudo>.  To actually get a
+B<sudo> core file you may need to enable core dumps for setuid
+processes.  On BSD and Linux systems this is accomplished via the
+sysctl command, on Solaris the coreadm command can be used.
+
+=head1 ENVIRONMENT
+
+B<sudo> utilizes the following environment variables.  The security
+policy has control over the content of the command's environment.
+
+=over 16
+
+=item C<EDITOR>
+
+Default editor to use in B<-e> (sudoedit) mode if neither C<SUDO_EDITOR>
+nor C<VISUAL> is set
+
+=item C<MAIL>
+
+In B<-i> mode or when I<env_reset> is enabled in I<sudoers>, set
+to the mail spool of the target user
+
+=item C<HOME>
+
+Set to the home directory of the target user if B<-i> or B<-H> are
+specified, I<env_reset> or I<always_set_home> are set in I<sudoers>,
+or when the B<-s> option is specified and I<set_home> is set in
+I<sudoers>
+
+=item C<PATH>
+
+May be overridden by the security policy.
+
+=item C<SHELL>
+
+Used to determine shell to run with C<-s> option
+
+=item C<SUDO_ASKPASS>
+
+Specifies the path to a helper program used to read the password
+if no terminal is available or if the C<-A> option is specified.
+
+=item C<SUDO_COMMAND>
+
+Set to the command run by sudo
+
+=item C<SUDO_EDITOR>
+
+Default editor to use in B<-e> (sudoedit) mode
+
+=item C<SUDO_GID>
+
+Set to the group ID of the user who invoked sudo
+
+=item C<SUDO_PROMPT>
+
+Used as the default password prompt
+
+=item C<SUDO_PS1>
+
+If set, C<PS1> will be set to its value for the program being run
+
+=item C<SUDO_UID>
+
+Set to the user ID of the user who invoked sudo
+
+=item C<SUDO_USER>
+
+Set to the login of the user who invoked sudo
+
+=item C<USER>
+
+Set to the target user (root unless the B<-u> option is specified)
+
+=item C<VISUAL>
+
+Default editor to use in B<-e> (sudoedit) mode if C<SUDO_EDITOR>
+is not set
+
+=back
+
+=head1 FILES
+
+=over 24
+
+=item F<@sysconfdir@/sudo.conf>
+
+B<sudo> front end configuration
+
+=back
+
+=head1 EXAMPLES
+
+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 F<index.html> file as user www:
+
+ $ sudo -u www vi ~www/htdocs/index.html
+
+To view system logs only accessible to root and users in the adm group:
+
+ $ sudo -g adm view /var/log/syslog
+
+To run an editor as jim with a different primary group:
+
+ $ sudo -u jim -g audio vi ~jim/sound.txt
+
+To shutdown 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 C<cd> and file redirection work.
+
+ $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
+
+=head1 SEE ALSO
+
+L<grep(1)>, L<su(1)>, L<stat(2)>,
+L<login_cap(3)>,
+L<passwd(5)>, L<sudoers(5)>, L<sudo_plugin(8)>, L<sudoreplay(8)>, L<visudo(8)>
+
+=head1 AUTHORS
+
+Many people have worked on B<sudo> over the years; this
+version consists of code written primarily by:
+
+       Todd C. Miller
+
+See the CONTRIBUTORS file in the B<sudo> distribution
+(http://www.sudo.ws/sudo/contributors.html) for a list of people
+who have contributed to B<sudo>.
+
+=head1 HISTORY
+
+See the HISTORY file in the B<sudo> distribution
+(http://www.sudo.ws/sudo/history.html) for a brief history of sudo.
+
+=head1 CAVEATS
+
+There is no easy way to prevent a user from gaining a root shell
+if that user is allowed to run arbitrary commands via B<sudo>.
+Also, many programs (such as editors) allow the user to run commands
+via shell escapes, thus avoiding B<sudo>'s checks.  However, on
+most systems it is possible to prevent shell escapes with the
+L<sudoers(5)> module's I<noexec> functionality.
+
+It is not meaningful to run the C<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 EXAMPLES section for more information.
+
+Running shell scripts via B<sudo> 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).
+
+=head1 BUGS
+
+If you feel you have found a bug in B<sudo>, please submit a bug report
+at http://www.sudo.ws/sudo/bugs/
+
+=head1 SUPPORT
+
+Limited free support is available via the sudo-users mailing list,
+see http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
+search the archives.
+
+=head1 DISCLAIMER
+
+B<sudo> 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 B<sudo> or http://www.sudo.ws/sudo/license.html
+for complete details.