Annotation of src/usr.bin/sudo/sudo.pod, Revision 1.15
1.13 millert 1: Copyright (c) 1994-1996, 1998-2005, 2007-2009
1.6 millert 2: Todd C. Miller <Todd.Miller@courtesan.com>
1.1 millert 3:
4: Permission to use, copy, modify, and distribute this software for any
5: purpose with or without fee is hereby granted, provided that the above
6: copyright notice and this permission notice appear in all copies.
7:
8: THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9: WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10: MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11: ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14: OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15: ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16:
17: Sponsored in part by the Defense Advanced Research Projects
18: Agency (DARPA) and Air Force Research Laboratory, Air Force
19: Materiel Command, USAF, under agreement number F39502-99-1-0512.
20:
21: =pod
22:
23: =head1 NAME
24:
25: sudo, sudoedit - execute a command as another user
26:
27: =head1 SYNOPSIS
28:
1.12 millert 29: B<sudo> B<-h> | B<-K> | B<-k> | B<-L> | B<-V>
1.1 millert 30:
1.12 millert 31: B<sudo> B<-v> [B<-AknS>]
32: S<[B<-a> I<auth_type>]>
33: S<[B<-p> I<prompt>]>
34:
35: B<sudo> B<-l[l]> [B<-AknS>]
36: S<[B<-a> I<auth_type>]>
37: S<[B<-g> I<groupname>|I<#gid>]> S<[B<-p> I<prompt>]>
38: S<[B<-U> I<username>]> S<[B<-u> I<username>|I<#uid>]> [I<command>]
1.10 millert 39:
40: B<sudo> [B<-AbEHnPS>]
1.9 millert 41: S<[B<-a> I<auth_type>]>
1.10 millert 42: S<[B<-C> I<fd>]>
1.9 millert 43: S<[B<-c> I<class>|I<->]>
1.10 millert 44: S<[B<-g> I<groupname>|I<#gid>]> S<[B<-p> I<prompt>]>
1.9 millert 45: S<[B<-u> I<username>|I<#uid>]>
1.10 millert 46: S<[B<VAR>=I<value>]> S<[B<-i> | B<-s>]> [I<command>]
1.1 millert 47:
1.10 millert 48: B<sudoedit> [B<-AnS>]
1.9 millert 49: S<[B<-a> I<auth_type>]>
1.10 millert 50: S<[B<-C> I<fd>]>
1.9 millert 51: S<[B<-c> I<class>|I<->]>
1.10 millert 52: S<[B<-g> I<groupname>|I<#gid>]> S<[B<-p> I<prompt>]>
53: S<[B<-u> I<username>|I<#uid>]> file ...
1.1 millert 54:
55: =head1 DESCRIPTION
56:
57: B<sudo> allows a permitted user to execute a I<command> as the
58: superuser or another user, as specified in the I<sudoers> file.
59: The real and effective uid and gid are set to match those of the
60: target user as specified in the passwd file and the group vector
61: is initialized based on the group file (unless the B<-P> option was
62: specified). If the invoking user is root or if the target user is
63: the same as the invoking user, no password is required. Otherwise,
64: B<sudo> requires that users authenticate themselves with a password
65: by default (NOTE: in the default configuration this is the user's
66: password, not the root password). Once a user has been authenticated,
67: a timestamp is updated and the user may then use sudo without a
68: password for a short period of time (C<@timeout@> minutes unless
69: overridden in I<sudoers>).
70:
71: When invoked as B<sudoedit>, the B<-e> option (described below),
72: is implied.
73:
74: B<sudo> determines who is an authorized user by consulting the file
1.11 millert 75: F<@sysconfdir@/sudoers>. By running B<sudo> with the B<-v> option,
76: a user can update the time stamp without running a I<command>. The
77: password prompt itself will also time out if the user's password
78: is not entered within C<@password_timeout@> minutes (unless overridden
79: via I<sudoers>).
1.1 millert 80:
81: If a user who is not listed in the I<sudoers> file tries to run a
82: command via B<sudo>, mail is sent to the proper authorities, as
83: defined at configure time or in the I<sudoers> file (defaults to
84: C<@mailto@>). Note that the mail will not be sent if an unauthorized
1.11 millert 85: user tries to run sudo with the B<-l> or B<-v> option. This allows
1.1 millert 86: users to determine for themselves whether or not they are allowed
87: to use B<sudo>.
88:
89: If B<sudo> is run by root and the C<SUDO_USER> environment variable
90: is set, B<sudo> will use this value to determine who the actual
91: user is. This can be used by a user to log commands through sudo
92: even when a root shell has been invoked. It also allows the B<-e>
1.11 millert 93: option to remain useful even when being run via a sudo-run script or
1.1 millert 94: program. Note however, that the sudoers lookup is still done for
95: root, not the user specified by C<SUDO_USER>.
96:
97: B<sudo> can log both successful and unsuccessful attempts (as well
98: as errors) to syslog(3), a log file, or both. By default B<sudo>
99: will log via syslog(3) but this is changeable at configure time
100: or via the I<sudoers> file.
101:
102: =head1 OPTIONS
103:
104: B<sudo> accepts the following command line options:
105:
1.10 millert 106: =over 12
107:
108: =item -A
109:
110: Normally, if B<sudo> requires a password, it will read it from the
111: current terminal. If the B<-A> (I<askpass>) option is specified,
1.12 millert 112: a (possibly graphical) helper program is executed to read the
113: user's password and output the password to the standard output. If
114: the C<SUDO_ASKPASS> environment variable is set, it specifies the
115: path to the helper program. Otherwise, the value specified by the
116: I<askpass> option in L<sudoers(5)> is used.
1.1 millert 117:
1.10 millert 118: =item -a I<type>
1.1 millert 119:
120: The B<-a> (I<authentication type>) option causes B<sudo> to use the
121: specified authentication type when validating the user, as allowed
1.6 millert 122: by F</etc/login.conf>. The system administrator may specify a list
1.1 millert 123: of sudo-specific authentication methods by adding an "auth-sudo"
1.6 millert 124: entry in F</etc/login.conf>. This option is only available on systems
1.1 millert 125: that support BSD authentication.
126:
127: =item -b
128:
129: The B<-b> (I<background>) option tells B<sudo> to run the given
130: command in the background. Note that if you use the B<-b>
131: option you cannot use shell job control to manipulate the process.
132:
1.10 millert 133: =item -C I<fd>
134:
135: Normally, B<sudo> will close all open file descriptors other than
136: standard input, standard output and standard error. The B<-C>
137: (I<close from>) option allows the user to specify a starting point
138: above the standard error (file descriptor three). Values less than
139: three are not permitted. This option is only available if the
140: administrator has enabled the I<closefrom_override> option in
141: L<sudoers(5)>.
142:
143: =item -c I<class>
1.1 millert 144:
145: The B<-c> (I<class>) option causes B<sudo> to run the specified command
146: with resources limited by the specified login class. The I<class>
1.10 millert 147: argument can be either a class name as defined in F</etc/login.conf>,
1.1 millert 148: or a single '-' character. Specifying a I<class> of C<-> indicates
149: that the command should be run restricted by the default login
150: capabilities for the user the command is run as. If the I<class>
151: argument specifies an existing user class, the command must be run
152: as root, or the B<sudo> command must be run from a shell that is already
153: root. This option is only available on systems with BSD login classes.
154:
155: =item -E
156:
1.6 millert 157: The B<-E> (I<preserve> I<environment>) option will override the
1.1 millert 158: I<env_reset> option in L<sudoers(5)>). It is only
159: available when either the matching command has the C<SETENV> tag
160: or the I<setenv> option is set in L<sudoers(5)>.
161:
162: =item -e
163:
164: The B<-e> (I<edit>) option indicates that, instead of running
165: a command, the user wishes to edit one or more files. In lieu
166: of a command, the string "sudoedit" is used when consulting
167: the I<sudoers> file. If the user is authorized by I<sudoers>
168: the following steps are taken:
169:
1.6 millert 170: =over 4
1.1 millert 171:
172: =item 1.
173:
174: Temporary copies are made of the files to be edited with the owner
175: set to the invoking user.
176:
177: =item 2.
178:
1.10 millert 179: The editor specified by the C<SUDO_EDITOR>, C<VISUAL> or C<EDITOR>
180: environment variables is run to edit the temporary files. If none
181: of C<SUDO_EDITOR>, C<VISUAL> or C<EDITOR> are set, the first program
182: listed in the I<editor> I<sudoers> variable is used.
1.1 millert 183:
184: =item 3.
185:
186: If they have been modified, the temporary files are copied back to
187: their original location and the temporary versions are removed.
188:
189: =back
190:
191: If the specified file does not exist, it will be created. Note
192: that unlike most commands run by B<sudo>, the editor is run with
193: the invoking user's environment unmodified. If, for some reason,
194: B<sudo> is unable to update a file with its edited version, the
195: user will receive a warning and the edited copy will remain in a
196: temporary file.
197:
1.10 millert 198: =item -g I<group>
199:
200: Normally, B<sudo> sets the primary group to the one specified by
201: the passwd database for the user the command is being run as (by
202: default, root). The B<-g> (I<group>) option causes B<sudo> to run
203: the specified command with the primary group set to I<group>. To
204: specify a I<gid> instead of a I<group name>, use I<#gid>. When
205: running commands as a I<gid>, many shells require that the '#' be
206: escaped with a backslash ('\'). If no B<-u> option is specified,
207: the command will be run as the invoking user (not root). In either
208: case, the primary group will be set to I<group>.
209:
1.1 millert 210: =item -H
211:
212: The B<-H> (I<HOME>) option sets the C<HOME> environment variable
213: to the homedir of the target user (root by default) as specified
214: in passwd(5). By default, B<sudo> does not modify C<HOME>
215: (see I<set_home> and I<always_set_home> in L<sudoers(5)>).
216:
217: =item -h
218:
219: The B<-h> (I<help>) option causes B<sudo> to print a usage message and exit.
220:
1.10 millert 221: =item -i [command]
1.1 millert 222:
223: The B<-i> (I<simulate initial login>) option runs the shell specified
1.10 millert 224: in the L<passwd(5)> entry of the target user as a login shell. This
225: means that login-specific resource files such as C<.profile> or
226: C<.login> will be read by the shell. If a command is specified,
227: it is passed to the shell for execution. Otherwise, an interactive
228: shell is executed. B<sudo> attempts to change to that user's home
229: directory before running the shell. It also initializes the
230: environment, leaving I<DISPLAY> and I<TERM> unchanged, setting
231: I<HOME>, I<SHELL>, I<USER>, I<LOGNAME>, and I<PATH>, as well as
232: the contents of F</etc/environment> on Linux and AIX systems.
233: All other environment variables are removed.
1.1 millert 234:
235: =item -K
236:
237: The B<-K> (sure I<kill>) option is like B<-k> except that it removes
1.12 millert 238: the user's timestamp entirely and may not be used in conjunction
239: with a command or other option. This option does not require a
240: password.
1.1 millert 241:
242: =item -k
243:
1.12 millert 244: When used by itself, the B<-k> (I<kill>) option to B<sudo> invalidates
245: the user's timestamp by setting the time on it to the Epoch. The
246: next time B<sudo> is run a password will be required. This option
247: does not require a password and was added to allow a user to revoke
248: B<sudo> permissions from a .logout file.
249:
250: When used in conjunction with a command or an option that may require
251: a password, the B<-k> option will cause B<sudo> to ignore the user's
252: timestamp file. As a result, B<sudo> will prompt for a password
253: (if one is required by I<sudoers>) and will not update the user's
254: timestamp file.
1.1 millert 255:
256: =item -L
257:
258: The B<-L> (I<list> defaults) option will list out the parameters
259: that may be set in a I<Defaults> line along with a short description
260: for each. This option is useful in conjunction with L<grep(1)>.
261:
1.10 millert 262: =item -l[l] [I<command>]
1.1 millert 263:
1.10 millert 264: If no I<command> is specified, the B<-l> (I<list>) option will list
265: the allowed (and forbidden) commands for the invoking user (or the
266: user specified by the B<-U> option) on the current host. If a
267: I<command> is specified and is permitted by I<sudoers>, the
268: fully-qualified path to the command is displayed along with any
269: command line arguments. If I<command> is specified but not allowed,
1.11 millert 270: B<sudo> will exit with a status value of 1. If the B<-l> option is
1.10 millert 271: specified with an B<l> argument (i.e. B<-ll>), or if B<-l>
272: is specified multiple times, a longer list format is used.
273:
274: =item -n
275:
276: The B<-n> (I<non-interactive>) option prevents B<sudo> from prompting
277: the user for a password. If a password is required for the command
278: to run, B<sudo> will display an error messages and exit.
1.1 millert 279:
280: =item -P
281:
1.6 millert 282: The B<-P> (I<preserve> I<group vector>) option causes B<sudo> to
1.1 millert 283: preserve the invoking user's group vector unaltered. By default,
284: B<sudo> will initialize the group vector to the list of groups the
285: target user is in. The real and effective group IDs, however, are
286: still set to match the target user.
287:
1.10 millert 288: =item -p I<prompt>
1.1 millert 289:
290: The B<-p> (I<prompt>) option allows you to override the default
291: password prompt and use a custom one. The following percent (`C<%>')
292: escapes are supported:
293:
1.6 millert 294: =over 4
1.1 millert 295:
296: =item C<%H>
297:
298: expanded to the local hostname including the domain name
299: (on if the machine's hostname is fully qualified or the I<fqdn>
300: I<sudoers> option is set)
301:
302: =item C<%h>
303:
304: expanded to the local hostname without the domain name
1.8 millert 305:
306: =item C<%p>
307:
308: expanded to the user whose password is being asked for (respects the
309: I<rootpw>, I<targetpw> and I<runaspw> flags in I<sudoers>)
1.1 millert 310:
311: =item C<%U>
312:
313: expanded to the login name of the user the command will
314: be run as (defaults to root)
315:
316: =item C<%u>
317:
318: expanded to the invoking user's login name
319:
320: =item C<%%>
321:
322: two consecutive C<%> characters are collapsed into a single C<%> character
323:
324: =back
325:
1.10 millert 326: The prompt specified by the B<-p> option will override the system
327: password prompt on systems that support PAM unless the
328: I<passprompt_override> flag is disabled in I<sudoers>.
329:
1.1 millert 330: =item -S
331:
332: The B<-S> (I<stdin>) option causes B<sudo> to read the password from
1.14 millert 333: the standard input instead of the terminal device. The password must
334: be followed by a newline character.
1.1 millert 335:
1.10 millert 336: =item -s [command]
1.1 millert 337:
338: The B<-s> (I<shell>) option runs the shell specified by the I<SHELL>
1.10 millert 339: environment variable if it is set or the shell as specified in
340: L<passwd(5)>. If a command is specified, it is passed to the shell
341: for execution. Otherwise, an interactive shell is executed.
342:
343: =item -U I<user>
344:
345: The B<-U> (I<other user>) option is used in conjunction with the B<-l>
346: option to specify the user whose privileges should be listed. Only
347: root or a user with B<sudo> C<ALL> on the current host may use this
348: option.
1.1 millert 349:
1.10 millert 350: =item -u I<user>
1.1 millert 351:
1.6 millert 352: The B<-u> (I<user>) option causes B<sudo> to run the specified
353: command as a user other than I<root>. To specify a I<uid> instead
1.10 millert 354: of a I<user name>, use I<#uid>. When running commands as a I<uid>,
1.6 millert 355: many shells require that the '#' be escaped with a backslash ('\').
356: Note that if the I<targetpw> Defaults option is set (see L<sudoers(5)>)
357: it is not possible to run commands with a uid not listed in the
358: password database.
1.1 millert 359:
360: =item -V
361:
362: The B<-V> (I<version>) option causes B<sudo> to print the version
363: number and exit. If the invoking user is already root the B<-V>
364: option will print out a list of the defaults B<sudo> was compiled
365: with as well as the machine's local network addresses.
366:
367: =item -v
368:
369: If given the B<-v> (I<validate>) option, B<sudo> will update the
370: user's timestamp, prompting for the user's password if necessary.
371: This extends the B<sudo> timeout for another C<@timeout@> minutes
372: (or whatever the timeout is set to in I<sudoers>) but does not run
373: a command.
374:
375: =item --
376:
1.11 millert 377: The B<--> option indicates that B<sudo> should stop processing command
378: line arguments. It is most useful in conjunction with the B<-s> option.
1.1 millert 379:
380: =back
381:
382: Environment variables to be set for the command may also be passed
383: on the command line in the form of B<VAR>=I<value>, e.g.
384: B<LD_LIBRARY_PATH>=I</usr/local/pkg/lib>. Variables passed on the
385: command line are subject to the same restrictions as normal environment
386: variables with one important exception. If the I<setenv> option
1.7 millert 387: is set in I<sudoers>, the command to be run has the C<SETENV> tag
388: set or the command matched is C<ALL>, the user may set variables
389: that would overwise be forbidden. See L<sudoers(5)> for more information.
1.1 millert 390:
391: =head1 RETURN VALUES
392:
1.11 millert 393: Upon successful execution of a program, the exit status from B<sudo>
394: will simply be the exit status of the program that was executed.
1.1 millert 395:
396: Otherwise, B<sudo> quits with an exit value of 1 if there is a
397: configuration/permission problem or if B<sudo> cannot execute the
398: given command. In the latter case the error string is printed to
399: stderr. If B<sudo> cannot L<stat(2)> one or more entries in the user's
400: C<PATH> an error is printed on stderr. (If the directory does not
401: exist or if it is not really a directory, the entry is ignored and
402: no error is printed.) This should not happen under normal
403: circumstances. The most common reason for L<stat(2)> to return
404: "permission denied" is if you are running an automounter and one
405: of the directories in your C<PATH> is on a machine that is currently
406: unreachable.
407:
408: =head1 SECURITY NOTES
409:
410: B<sudo> tries to be safe when executing external commands.
411:
412: There are two distinct ways to deal with environment variables.
413: By default, the I<env_reset> I<sudoers> option is enabled.
414: This causes commands to be executed with a minimal environment
415: containing C<TERM>, C<PATH>, C<HOME>, C<SHELL>, C<LOGNAME>, C<USER>
416: and C<USERNAME> in addition to variables from the invoking process
417: permitted by the I<env_check> and I<env_keep> I<sudoers> options.
418: There is effectively a whitelist for environment variables.
419:
420: If, however, the I<env_reset> option is disabled in I<sudoers>, any
421: variables not explicitly denied by the I<env_check> and I<env_delete>
422: options are inherited from the invoking process. In this case,
423: I<env_check> and I<env_delete> behave like a blacklist. Since it
424: is not possible to blacklist all potentially dangerous environment
425: variables, use of the default I<env_reset> behavior is encouraged.
426:
427: In all cases, environment variables with a value beginning with
428: C<()> are removed as they could be interpreted as B<bash> functions.
429: The list of environment variables that B<sudo> allows or denies is
430: contained in the output of C<sudo -V> when run as root.
431:
432: Note that the dynamic linker on most operating systems will remove
433: variables that can control dynamic linking from the environment of
434: setuid executables, including B<sudo>. Depending on the operating
435: system this may include C<_RLD*>, C<DYLD_*>, C<LD_*>, C<LDR_*>,
436: C<LIBPATH>, C<SHLIB_PATH>, and others. These type of variables are
437: removed from the environment before B<sudo> even begins execution
438: and, as such, it is not possible for B<sudo> to preserve them.
439:
440: To prevent command spoofing, B<sudo> checks "." and "" (both denoting
441: current directory) last when searching for a command in the user's
442: PATH (if one or both are in the PATH). Note, however, that the
443: actual C<PATH> environment variable is I<not> modified and is passed
444: unchanged to the program that B<sudo> executes.
445:
446: B<sudo> will check the ownership of its timestamp directory
447: (F<@timedir@> by default) and ignore the directory's contents if
448: it is not owned by root or if it is writable by a user other than
449: root. On systems that allow non-root users to give away files via
450: L<chown(2)>, if the timestamp directory is located in a directory
451: writable by anyone (e.g., F</tmp>), it is possible for a user to
452: create the timestamp directory before B<sudo> is run. However,
453: because B<sudo> checks the ownership and mode of the directory and
454: its contents, the only damage that can be done is to "hide" files
455: by putting them in the timestamp dir. This is unlikely to happen
456: since once the timestamp dir is owned by root and inaccessible by
457: any other user, the user placing files there would be unable to get
458: them back out. To get around this issue you can use a directory
459: that is not world-writable for the timestamps (F</var/adm/sudo> for
460: instance) or create F<@timedir@> with the appropriate owner (root)
461: and permissions (0700) in the system startup files.
462:
463: B<sudo> will not honor timestamps set far in the future.
464: Timestamps with a date greater than current_time + 2 * C<TIMEOUT>
465: will be ignored and sudo will log and complain. This is done to
466: keep a user from creating his/her own timestamp with a bogus
467: date on systems that allow users to give away files.
468:
469: Please note that B<sudo> will normally only log the command it
470: explicitly runs. If a user runs a command such as C<sudo su> or
471: C<sudo sh>, subsequent commands run from that shell will I<not> be
472: logged, nor will B<sudo>'s access control affect them. The same
473: is true for commands that offer shell escapes (including most
474: editors). Because of this, care must be taken when giving users
475: access to commands via B<sudo> to verify that the command does not
476: inadvertently give the user an effective root shell. For more
477: information, please see the C<PREVENTING SHELL ESCAPES> section in
478: L<sudoers(5)>.
479:
480: =head1 ENVIRONMENT
481:
482: B<sudo> utilizes the following environment variables:
483:
1.6 millert 484: =over 16
485:
486: =item C<EDITOR>
487:
1.10 millert 488: Default editor to use in B<-e> (sudoedit) mode if neither C<SUDO_EDITOR>
489: nor C<VISUAL> is set
1.6 millert 490:
491: =item C<HOME>
492:
493: In B<-s> or B<-H> mode (or if sudo was configured with the
494: --enable-shell-sets-home option), set to homedir of the target user
495:
496: =item C<PATH>
497:
498: Set to a sane value if the I<secure_path> sudoers option is set.
499:
500: =item C<SHELL>
1.1 millert 501:
1.6 millert 502: Used to determine shell to run with C<-s> option
1.1 millert 503:
1.10 millert 504: =item C<SUDO_ASKPASS>
1.1 millert 505:
1.10 millert 506: Specifies the path to a helper program used to read the password
507: if no terminal is available or if the C<-A> option is specified.
1.1 millert 508:
1.6 millert 509: =item C<SUDO_COMMAND>
1.1 millert 510:
1.6 millert 511: Set to the command run by sudo
1.1 millert 512:
1.10 millert 513: =item C<SUDO_EDITOR>
1.1 millert 514:
1.10 millert 515: Default editor to use in B<-e> (sudoedit) mode
1.1 millert 516:
1.10 millert 517: =item C<SUDO_GID>
1.1 millert 518:
1.10 millert 519: Set to the group ID of the user who invoked sudo
1.1 millert 520:
1.10 millert 521: =item C<SUDO_PROMPT>
1.1 millert 522:
1.10 millert 523: Used as the default password prompt
1.6 millert 524:
525: =item C<SUDO_PS1>
526:
1.10 millert 527: If set, C<PS1> will be set to its value for the program being run
528:
529: =item C<SUDO_UID>
530:
531: Set to the user ID of the user who invoked sudo
532:
533: =item C<SUDO_USER>
534:
535: Set to the login of the user who invoked sudo
1.6 millert 536:
537: =item C<USER>
538:
539: Set to the target user (root unless the B<-u> option is specified)
540:
541: =item C<VISUAL>
542:
1.10 millert 543: Default editor to use in B<-e> (sudoedit) mode if C<SUDO_EDITOR>
544: is not set
1.6 millert 545:
546: =back
1.1 millert 547:
548: =head1 FILES
549:
1.9 millert 550: =over 24
551:
552: =item F<@sysconfdir@/sudoers>
553:
554: List of who can run what
1.5 millert 555:
1.9 millert 556: =item F<@timedir@>
1.4 millert 557:
1.9 millert 558: Directory containing timestamps
1.5 millert 559:
1.10 millert 560: =item F</etc/environment>
561:
562: Initial environment for B<-i> mode on Linux and AIX
563:
1.5 millert 564: =back
1.1 millert 565:
566: =head1 EXAMPLES
567:
568: Note: the following examples assume suitable L<sudoers(5)> entries.
569:
570: To get a file listing of an unreadable directory:
571:
572: $ sudo ls /usr/local/protected
573:
1.13 millert 574: To list the home directory of user yaz on a machine where the
575: file system holding ~yaz is not exported as root:
1.1 millert 576:
1.13 millert 577: $ sudo -u yaz ls ~yaz
1.1 millert 578:
579: To edit the F<index.html> file as user www:
580:
581: $ sudo -u www vi ~www/htdocs/index.html
1.13 millert 582:
583: To view system logs only accessible to root and users in the adm group:
584:
585: $ sudo -g adm view /var/log/syslog
586:
587: To run an editor as jim with a different primary group:
588:
589: $ sudo -u jim -g audio vi ~jim/sound.txt
1.1 millert 590:
591: To shutdown a machine:
592:
593: $ sudo shutdown -r +15 "quick reboot"
594:
595: To make a usage listing of the directories in the /home
596: partition. Note that this runs the commands in a sub-shell
597: to make the C<cd> and file redirection work.
598:
599: $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
600:
601: =head1 SEE ALSO
602:
1.9 millert 603: L<grep(1)>, L<su(1)>, L<stat(2)>,
604: L<login_cap(3)>,
605: L<passwd(5)>, L<sudoers(5)>, L<visudo(8)>
1.1 millert 606:
607: =head1 AUTHORS
608:
609: Many people have worked on B<sudo> over the years; this
610: version consists of code written primarily by:
611:
612: Todd C. Miller
613:
614: See the HISTORY file in the B<sudo> distribution or visit
615: http://www.sudo.ws/sudo/history.html for a short history
616: of B<sudo>.
617:
618: =head1 CAVEATS
619:
620: There is no easy way to prevent a user from gaining a root shell
621: if that user is allowed to run arbitrary commands via B<sudo>.
622: Also, many programs (such as editors) allow the user to run commands
623: via shell escapes, thus avoiding B<sudo>'s checks. However, on
624: most systems it is possible to prevent shell escapes with B<sudo>'s
625: I<noexec> functionality. See the L<sudoers(5)> manual
626: for details.
627:
628: It is not meaningful to run the C<cd> command directly via sudo, e.g.,
629:
630: $ sudo cd /usr/local/protected
631:
632: since when the command exits the parent process (your shell) will
633: still be the same. Please see the EXAMPLES section for more information.
634:
635: If users have sudo C<ALL> there is nothing to prevent them from
636: creating their own program that gives them a root shell regardless
637: of any '!' elements in the user specification.
638:
639: Running shell scripts via B<sudo> can expose the same kernel bugs that
640: make setuid shell scripts unsafe on some operating systems (if your OS
641: has a /dev/fd/ directory, setuid shell scripts are generally safe).
642:
643: =head1 BUGS
644:
645: If you feel you have found a bug in B<sudo>, please submit a bug report
646: at http://www.sudo.ws/sudo/bugs/
647:
648: =head1 SUPPORT
649:
650: Limited free support is available via the sudo-users mailing list,
651: see http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
652: search the archives.
653:
654: =head1 DISCLAIMER
655:
656: B<sudo> is provided ``AS IS'' and any express or implied warranties,
657: including, but not limited to, the implied warranties of merchantability
658: and fitness for a particular purpose are disclaimed. See the LICENSE
659: file distributed with B<sudo> or http://www.sudo.ws/sudo/license.html
660: for complete details.