701 lines
24 KiB
Plaintext
701 lines
24 KiB
Plaintext
Copyright (c) 1994-1996, 1998-2005, 2007-2011
|
|
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> S<[B<-D> I<level>]> B<-h> | B<-K> | B<-k> | B<-V>
|
|
|
|
B<sudo> B<-v> [B<-AknS>]
|
|
S<[B<-a> I<auth_type>]>
|
|
S<[B<-D> I<level>]>
|
|
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<-D> I<level>]>
|
|
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<-D> I<level>]>
|
|
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<-D> I<level>]>
|
|
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 seemlessly 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 -D I<level>
|
|
|
|
Enable debugging of B<sudo> plugins and B<sudo> itself. The I<level>
|
|
may be a value from 1 through 9.
|
|
|
|
=item -E
|
|
|
|
The B<-E> (I<preserve> I<environment>) option indicates to the
|
|
security policy that the uses 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.
|
|
|
|
=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 overwise 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
|
|
# Path askpass /path/to/askpass
|
|
# Path noexec /path/to/noexec.so
|
|
#
|
|
# 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.
|
|
#
|
|
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 ignored. Lines that don't begin
|
|
with C<Plugin> or C<Path> 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 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)>.
|
|
|
|
=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> plugin and path 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 HISTORY file in the B<sudo> distribution or visit
|
|
http://www.sudo.ws/sudo/history.html for a short history
|
|
of B<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.
|