Annotation of embedaddon/sudo/doc/sudo.man.in, revision 1.1

1.1     ! misho       1: .\" Copyright (c) 1994-1996, 1998-2005, 2007-2011
        !             2: .\"    Todd C. Miller <Todd.Miller@courtesan.com>
        !             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: .nr SL @SEMAN@
        !            22: .nr BA @BAMAN@
        !            23: .nr LC @LCMAN@
        !            24: .nr PT @password_timeout@
        !            25: .\"
        !            26: .\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
        !            27: .\"
        !            28: .\" Standard preamble:
        !            29: .\" ========================================================================
        !            30: .de Sp \" Vertical space (when we can't use .PP)
        !            31: .if t .sp .5v
        !            32: .if n .sp
        !            33: ..
        !            34: .de Vb \" Begin verbatim text
        !            35: .ft CW
        !            36: .nf
        !            37: .ne \\$1
        !            38: ..
        !            39: .de Ve \" End verbatim text
        !            40: .ft R
        !            41: .fi
        !            42: ..
        !            43: .\" Set up some character translations and predefined strings.  \*(-- will
        !            44: .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
        !            45: .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
        !            46: .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
        !            47: .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
        !            48: .\" nothing in troff, for use with C<>.
        !            49: .tr \(*W-
        !            50: .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
        !            51: .ie n \{\
        !            52: .    ds -- \(*W-
        !            53: .    ds PI pi
        !            54: .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
        !            55: .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
        !            56: .    ds L" ""
        !            57: .    ds R" ""
        !            58: .    ds C` 
        !            59: .    ds C' 
        !            60: 'br\}
        !            61: .el\{\
        !            62: .    ds -- \|\(em\|
        !            63: .    ds PI \(*p
        !            64: .    ds L" ``
        !            65: .    ds R" ''
        !            66: 'br\}
        !            67: .\"
        !            68: .\" Escape single quotes in literal strings from groff's Unicode transform.
        !            69: .ie \n(.g .ds Aq \(aq
        !            70: .el       .ds Aq '
        !            71: .\"
        !            72: .\" If the F register is turned on, we'll generate index entries on stderr for
        !            73: .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
        !            74: .\" entries marked with X<> in POD.  Of course, you'll have to process the
        !            75: .\" output yourself in some meaningful fashion.
        !            76: .ie \nF \{\
        !            77: .    de IX
        !            78: .    tm Index:\\$1\t\\n%\t"\\$2"
        !            79: ..
        !            80: .    nr % 0
        !            81: .    rr F
        !            82: .\}
        !            83: .el \{\
        !            84: .    de IX
        !            85: ..
        !            86: .\}
        !            87: .\"
        !            88: .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
        !            89: .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
        !            90: .    \" fudge factors for nroff and troff
        !            91: .if n \{\
        !            92: .    ds #H 0
        !            93: .    ds #V .8m
        !            94: .    ds #F .3m
        !            95: .    ds #[ \f1
        !            96: .    ds #] \fP
        !            97: .\}
        !            98: .if t \{\
        !            99: .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
        !           100: .    ds #V .6m
        !           101: .    ds #F 0
        !           102: .    ds #[ \&
        !           103: .    ds #] \&
        !           104: .\}
        !           105: .    \" simple accents for nroff and troff
        !           106: .if n \{\
        !           107: .    ds ' \&
        !           108: .    ds ` \&
        !           109: .    ds ^ \&
        !           110: .    ds , \&
        !           111: .    ds ~ ~
        !           112: .    ds /
        !           113: .\}
        !           114: .if t \{\
        !           115: .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
        !           116: .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
        !           117: .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
        !           118: .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
        !           119: .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
        !           120: .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
        !           121: .\}
        !           122: .    \" troff and (daisy-wheel) nroff accents
        !           123: .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
        !           124: .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
        !           125: .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
        !           126: .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
        !           127: .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
        !           128: .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
        !           129: .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
        !           130: .ds ae a\h'-(\w'a'u*4/10)'e
        !           131: .ds Ae A\h'-(\w'A'u*4/10)'E
        !           132: .    \" corrections for vroff
        !           133: .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
        !           134: .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
        !           135: .    \" for low resolution devices (crt and lpr)
        !           136: .if \n(.H>23 .if \n(.V>19 \
        !           137: \{\
        !           138: .    ds : e
        !           139: .    ds 8 ss
        !           140: .    ds o a
        !           141: .    ds d- d\h'-1'\(ga
        !           142: .    ds D- D\h'-1'\(hy
        !           143: .    ds th \o'bp'
        !           144: .    ds Th \o'LP'
        !           145: .    ds ae ae
        !           146: .    ds Ae AE
        !           147: .\}
        !           148: .rm #[ #] #H #V #F C
        !           149: .\" ========================================================================
        !           150: .\"
        !           151: .IX Title "SUDO @mansectsu@"
        !           152: .TH SUDO @mansectsu@ "September 16, 2011" "1.8.3" "MAINTENANCE COMMANDS"
        !           153: .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
        !           154: .\" way too many mistakes in technical documents.
        !           155: .if n .ad l
        !           156: .nh
        !           157: .SH "NAME"
        !           158: sudo, sudoedit \- execute a command as another user
        !           159: .SH "SYNOPSIS"
        !           160: .IX Header "SYNOPSIS"
        !           161: \&\fBsudo\fR [\fB\-D\fR\ \fIlevel\fR] \fB\-h\fR | \fB\-K\fR | \fB\-k\fR | \fB\-V\fR
        !           162: .PP
        !           163: \&\fBsudo\fR \fB\-v\fR [\fB\-AknS\fR]
        !           164: .if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
        !           165: [\fB\-D\fR\ \fIlevel\fR]
        !           166: [\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
        !           167: [\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR]
        !           168: .PP
        !           169: \&\fBsudo\fR \fB\-l[l]\fR [\fB\-AknS\fR]
        !           170: .if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
        !           171: [\fB\-D\fR\ \fIlevel\fR]
        !           172: [\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
        !           173: [\fB\-U\fR\ \fIuser\ name\fR] [\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR] [\fIcommand\fR]
        !           174: .PP
        !           175: \&\fBsudo\fR [\fB\-AbEHnPS\fR]
        !           176: .if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
        !           177: [\fB\-C\fR\ \fIfd\fR]
        !           178: [\fB\-D\fR\ \fIlevel\fR]
        !           179: .if \n(LC [\fB\-c\fR\ \fIclass\fR|\fI\-\fR]
        !           180: [\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
        !           181: .if \n(SL [\fB\-r\fR\ \fIrole\fR] [\fB\-t\fR\ \fItype\fR]
        !           182: [\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR]
        !           183: [\fB\s-1VAR\s0\fR=\fIvalue\fR] [\fB\-i\fR\ |\ \fB\-s\fR] [\fIcommand\fR]
        !           184: .PP
        !           185: \&\fBsudoedit\fR [\fB\-AnS\fR]
        !           186: .if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
        !           187: [\fB\-C\fR\ \fIfd\fR]
        !           188: .if \n(LC [\fB\-c\fR\ \fIclass\fR|\fI\-\fR]
        !           189: [\fB\-D\fR\ \fIlevel\fR]
        !           190: [\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
        !           191: [\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR] file ...
        !           192: .SH "DESCRIPTION"
        !           193: .IX Header "DESCRIPTION"
        !           194: \&\fBsudo\fR allows a permitted user to execute a \fIcommand\fR as the
        !           195: superuser or another user, as specified by the security policy.
        !           196: The real and effective uid and gid are set to match those of the
        !           197: target user, as specified in the password database, and the group
        !           198: vector is initialized based on the group database (unless the \fB\-P\fR
        !           199: option was specified).
        !           200: .PP
        !           201: \&\fBsudo\fR supports a plugin architecture for security policies and
        !           202: input/output logging.  Third parties can develop and distribute
        !           203: their own policy and I/O logging modules to work seemlessly with
        !           204: the \fBsudo\fR front end.  The default security policy is \fIsudoers\fR,
        !           205: which is configured via the file \fI@sysconfdir@/sudoers\fR, or via
        !           206: \&\s-1LDAP\s0.  See the \s-1PLUGINS\s0 section for more information.
        !           207: .PP
        !           208: The security policy determines what privileges, if any, a user has
        !           209: to run \fBsudo\fR.  The policy may require that users authenticate
        !           210: themselves with a password or another authentication mechanism.  If
        !           211: authentication is required, \fBsudo\fR will exit if the user's password
        !           212: is not entered within a configurable time limit.  This limit is
        !           213: policy-specific; the default password prompt timeout for the
        !           214: \&\fIsudoers\fR security policy is 
        !           215: .ie \n(PT \f(CW\*(C`@password_timeout@\*(C'\fR minutes.
        !           216: .el unlimited.
        !           217: .PP
        !           218: Security policies may support credential caching to allow the user
        !           219: to run \fBsudo\fR again for a period of time without requiring
        !           220: authentication.  The \fIsudoers\fR policy caches credentials for
        !           221: \&\f(CW\*(C`@timeout@\*(C'\fR minutes, unless overridden in \fIsudoers\fR\|(@mansectform@).  By
        !           222: running \fBsudo\fR with the \fB\-v\fR option, a user can update the cached
        !           223: credentials without running a \fIcommand\fR.
        !           224: .PP
        !           225: When invoked as \fBsudoedit\fR, the \fB\-e\fR option (described below),
        !           226: is implied.
        !           227: .PP
        !           228: Security policies may log successful and failed attempts to use
        !           229: \&\fBsudo\fR.  If an I/O plugin is configured, the running command's
        !           230: input and output may be logged as well.
        !           231: .SH "OPTIONS"
        !           232: .IX Header "OPTIONS"
        !           233: \&\fBsudo\fR accepts the following command line options:
        !           234: .IP "\-A" 12
        !           235: .IX Item "-A"
        !           236: Normally, if \fBsudo\fR requires a password, it will read it from the
        !           237: user's terminal.  If the \fB\-A\fR (\fIaskpass\fR) option is specified,
        !           238: a (possibly graphical) helper program is executed to read the user's
        !           239: password and output the password to the standard output.  If the
        !           240: \&\f(CW\*(C`SUDO_ASKPASS\*(C'\fR environment variable is set, it specifies the path
        !           241: to the helper program.  Otherwise, if \fI@sysconfdir@/sudo.conf\fR
        !           242: contains a line specifying the askpass program, that value will be
        !           243: used.  For example:
        !           244: .Sp
        !           245: .Vb 2
        !           246: \&    # Path to askpass helper program
        !           247: \&    Path askpass /usr/X11R6/bin/ssh\-askpass
        !           248: .Ve
        !           249: .Sp
        !           250: If no askpass program is available, sudo will exit with an error.
        !           251: .if \n(BA \{\
        !           252: .IP "\-a \fItype\fR" 12
        !           253: .IX Item "-a type"
        !           254: The \fB\-a\fR (\fIauthentication type\fR) option causes \fBsudo\fR to use the
        !           255: specified authentication type when validating the user, as allowed
        !           256: by \fI/etc/login.conf\fR.  The system administrator may specify a list
        !           257: of sudo-specific authentication methods by adding an \*(L"auth-sudo\*(R"
        !           258: entry in \fI/etc/login.conf\fR.  This option is only available on systems
        !           259: that support \s-1BSD\s0 authentication.
        !           260: \}
        !           261: .IP "\-b" 12
        !           262: .IX Item "-b"
        !           263: The \fB\-b\fR (\fIbackground\fR) option tells \fBsudo\fR to run the given
        !           264: command in the background.  Note that if you use the \fB\-b\fR
        !           265: option you cannot use shell job control to manipulate the process.
        !           266: Most interactive commands will fail to work properly in background
        !           267: mode.
        !           268: .IP "\-C \fIfd\fR" 12
        !           269: .IX Item "-C fd"
        !           270: Normally, \fBsudo\fR will close all open file descriptors other than
        !           271: standard input, standard output and standard error.  The \fB\-C\fR
        !           272: (\fIclose from\fR) option allows the user to specify a starting point
        !           273: above the standard error (file descriptor three).  Values less than
        !           274: three are not permitted.  The security policy may restrict the
        !           275: user's ability to use the \fB\-C\fR option.  The \fIsudoers\fR policy only
        !           276: permits use of the \fB\-C\fR option when the administrator has enabled
        !           277: the \fIclosefrom_override\fR option.
        !           278: .if \n(LC \{\
        !           279: .IP "\-c \fIclass\fR" 12
        !           280: .IX Item "-c class"
        !           281: The \fB\-c\fR (\fIclass\fR) option causes \fBsudo\fR to run the specified command
        !           282: with resources limited by the specified login class.  The \fIclass\fR
        !           283: argument can be either a class name as defined in \fI/etc/login.conf\fR,
        !           284: or a single '\-' character.  Specifying a \fIclass\fR of \f(CW\*(C`\-\*(C'\fR indicates
        !           285: that the command should be run restricted by the default login
        !           286: capabilities for the user the command is run as.  If the \fIclass\fR
        !           287: argument specifies an existing user class, the command must be run
        !           288: as root, or the \fBsudo\fR command must be run from a shell that is already
        !           289: root.  This option is only available on systems with \s-1BSD\s0 login classes.
        !           290: \}
        !           291: .IP "\-D \fIlevel\fR" 12
        !           292: .IX Item "-D level"
        !           293: Enable debugging of \fBsudo\fR plugins and \fBsudo\fR itself.  The \fIlevel\fR
        !           294: may be a value from 1 through 9.
        !           295: .IP "\-E" 12
        !           296: .IX Item "-E"
        !           297: The \fB\-E\fR (\fIpreserve\fR \fIenvironment\fR) option indicates to the
        !           298: security policy that the user wishes to preserve their existing
        !           299: environment variables.  The security policy may return an error if
        !           300: the \fB\-E\fR option is specified and the user does not have permission
        !           301: to preserve the environment.
        !           302: .IP "\-e" 12
        !           303: .IX Item "-e"
        !           304: The \fB\-e\fR (\fIedit\fR) option indicates that, instead of running a
        !           305: command, the user wishes to edit one or more files.  In lieu of a
        !           306: command, the string \*(L"sudoedit\*(R" is used when consulting the security
        !           307: policy.  If the user is authorized by the policy, the following
        !           308: steps are taken:
        !           309: .RS 12
        !           310: .IP "1." 4
        !           311: Temporary copies are made of the files to be edited with the owner
        !           312: set to the invoking user.
        !           313: .IP "2." 4
        !           314: The editor specified by the policy is run to edit the temporary files.
        !           315: The \fIsudoers\fR policy uses the \f(CW\*(C`SUDO_EDITOR\*(C'\fR, \f(CW\*(C`VISUAL\*(C'\fR and \f(CW\*(C`EDITOR\*(C'\fR
        !           316: environment variables (in that order).  If none of \f(CW\*(C`SUDO_EDITOR\*(C'\fR,
        !           317: \&\f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR are set, the first program listed in the
        !           318: \&\fIeditor\fR \fIsudoers\fR\|(@mansectform@) option is used.
        !           319: .IP "3." 4
        !           320: If they have been modified, the temporary files are copied back to
        !           321: their original location and the temporary versions are removed.
        !           322: .RE
        !           323: .RS 12
        !           324: .Sp
        !           325: If the specified file does not exist, it will be created.  Note
        !           326: that unlike most commands run by \fBsudo\fR, the editor is run with
        !           327: the invoking user's environment unmodified.  If, for some reason,
        !           328: \&\fBsudo\fR is unable to update a file with its edited version, the
        !           329: user will receive a warning and the edited copy will remain in a
        !           330: temporary file.
        !           331: .RE
        !           332: .IP "\-g \fIgroup\fR" 12
        !           333: .IX Item "-g group"
        !           334: Normally, \fBsudo\fR runs a command with the primary group set to the
        !           335: one specified by the password database for the user the command is
        !           336: being run as (by default, root).  The \fB\-g\fR (\fIgroup\fR) option causes
        !           337: \&\fBsudo\fR to run the command with the primary group set to \fIgroup\fR
        !           338: instead.  To specify a \fIgid\fR instead of a \fIgroup name\fR, use
        !           339: \&\fI#gid\fR.  When running commands as a \fIgid\fR, many shells require
        !           340: that the '#' be escaped with a backslash ('\e').  If no \fB\-u\fR option
        !           341: is specified, the command will be run as the invoking user (not
        !           342: root).  In either case, the primary group will be set to \fIgroup\fR.
        !           343: .IP "\-H" 12
        !           344: .IX Item "-H"
        !           345: The \fB\-H\fR (\fI\s-1HOME\s0\fR) option requests that the security policy set
        !           346: the \f(CW\*(C`HOME\*(C'\fR environment variable to the home directory of the target
        !           347: user (root by default) as specified by the password database.
        !           348: Depending on the policy, this may be the default behavior.
        !           349: .IP "\-h" 12
        !           350: .IX Item "-h"
        !           351: The \fB\-h\fR (\fIhelp\fR) option causes \fBsudo\fR to print a short help message
        !           352: to the standard output and exit.
        !           353: .IP "\-i [command]" 12
        !           354: .IX Item "-i [command]"
        !           355: The \fB\-i\fR (\fIsimulate initial login\fR) option runs the shell specified
        !           356: by the password database entry of the target user as a login shell.
        !           357: This means that login-specific resource files such as \f(CW\*(C`.profile\*(C'\fR
        !           358: or \f(CW\*(C`.login\*(C'\fR will be read by the shell.  If a command is specified,
        !           359: it is passed to the shell for execution via the shell's \fB\-c\fR option.
        !           360: If no command is specified, an interactive shell is executed.
        !           361: \&\fBsudo\fR attempts to change to that user's home directory before
        !           362: running the shell.  The security policy shall initialize the
        !           363: environment to a minimal set of variables, similar to what is present
        !           364: when a user logs in.  The \fICommand Environment\fR section in the
        !           365: \&\fIsudoers\fR\|(@mansectform@) manual documents how the \fB\-i\fR option affects the
        !           366: environment in which a command is run when the \fIsudoers\fR policy
        !           367: is in use.
        !           368: .IP "\-K" 12
        !           369: .IX Item "-K"
        !           370: The \fB\-K\fR (sure \fIkill\fR) option is like \fB\-k\fR except that it removes
        !           371: the user's cached credentials entirely and may not be used in
        !           372: conjunction with a command or other option.  This option does not
        !           373: require a password.  Not all security policies support credential
        !           374: caching.
        !           375: .IP "\-k [command]" 12
        !           376: .IX Item "-k [command]"
        !           377: When used alone, the \fB\-k\fR (\fIkill\fR) option to \fBsudo\fR invalidates
        !           378: the user's cached credentials.  The next time \fBsudo\fR is run a
        !           379: password will be required.  This option does not require a password
        !           380: and was added to allow a user to revoke \fBsudo\fR permissions from a
        !           381: \&.logout file.  Not all security policies support credential
        !           382: caching.
        !           383: .Sp
        !           384: When used in conjunction with a command or an option that may require
        !           385: a password, the \fB\-k\fR option will cause \fBsudo\fR to ignore the user's
        !           386: cached credentials.  As a result, \fBsudo\fR will prompt for a password
        !           387: (if one is required by the security policy) and will not update the
        !           388: user's cached credentials.
        !           389: .IP "\-l[l] [\fIcommand\fR]" 12
        !           390: .IX Item "-l[l] [command]"
        !           391: If no \fIcommand\fR is specified, the \fB\-l\fR (\fIlist\fR) option will list
        !           392: the allowed (and forbidden) commands for the invoking user (or the
        !           393: user specified by the \fB\-U\fR option) on the current host.  If a
        !           394: \&\fIcommand\fR is specified and is permitted by the security policy,
        !           395: the fully-qualified path to the command is displayed along with any
        !           396: command line arguments.  If \fIcommand\fR is specified but not allowed,
        !           397: \&\fBsudo\fR will exit with a status value of 1.  If the \fB\-l\fR option
        !           398: is specified with an \fBl\fR argument (i.e. \fB\-ll\fR), or if \fB\-l\fR is
        !           399: specified multiple times, a longer list format is used.
        !           400: .IP "\-n" 12
        !           401: .IX Item "-n"
        !           402: The \fB\-n\fR (\fInon-interactive\fR) option prevents \fBsudo\fR from prompting
        !           403: the user for a password.  If a password is required for the command
        !           404: to run, \fBsudo\fR will display an error messages and exit.
        !           405: .IP "\-P" 12
        !           406: .IX Item "-P"
        !           407: The \fB\-P\fR (\fIpreserve\fR \fIgroup vector\fR) option causes \fBsudo\fR to
        !           408: preserve the invoking user's group vector unaltered.  By default,
        !           409: the \fIsudoers\fR policy will initialize the group vector to the list
        !           410: of groups the target user is in.  The real and effective group IDs,
        !           411: however, are still set to match the target user.
        !           412: .IP "\-p \fIprompt\fR" 12
        !           413: .IX Item "-p prompt"
        !           414: The \fB\-p\fR (\fIprompt\fR) option allows you to override the default
        !           415: password prompt and use a custom one.  The following percent (`\f(CW\*(C`%\*(C'\fR')
        !           416: escapes are supported by the \fIsudoers\fR policy:
        !           417: .RS 12
        !           418: .ie n .IP "%H" 4
        !           419: .el .IP "\f(CW%H\fR" 4
        !           420: .IX Item "%H"
        !           421: expanded to the host name including the domain name (on if
        !           422: the machine's host name is fully qualified or the \fIfqdn\fR option
        !           423: is set in \fIsudoers\fR\|(@mansectform@))
        !           424: .ie n .IP "%h" 4
        !           425: .el .IP "\f(CW%h\fR" 4
        !           426: .IX Item "%h"
        !           427: expanded to the local host name without the domain name
        !           428: .ie n .IP "%p" 4
        !           429: .el .IP "\f(CW%p\fR" 4
        !           430: .IX Item "%p"
        !           431: expanded to the name of the user whose password is being requested
        !           432: (respects the \fIrootpw\fR, \fItargetpw\fR and \fIrunaspw\fR flags in
        !           433: \&\fIsudoers\fR\|(@mansectform@))
        !           434: .ie n .IP "%U" 4
        !           435: .el .IP "\f(CW%U\fR" 4
        !           436: .IX Item "%U"
        !           437: expanded to the login name of the user the command will be run as
        !           438: (defaults to root unless the \f(CW\*(C`\-u\*(C'\fR option is also specified)
        !           439: .ie n .IP "%u" 4
        !           440: .el .IP "\f(CW%u\fR" 4
        !           441: .IX Item "%u"
        !           442: expanded to the invoking user's login name
        !           443: .ie n .IP "\*(C`%%\*(C'" 4
        !           444: .el .IP "\f(CW\*(C`%%\*(C'\fR" 4
        !           445: .IX Item "%%"
        !           446: two consecutive \f(CW\*(C`%\*(C'\fR characters are collapsed into a single \f(CW\*(C`%\*(C'\fR character
        !           447: .RE
        !           448: .RS 12
        !           449: .Sp
        !           450: The prompt specified by the \fB\-p\fR option will override the system
        !           451: password prompt on systems that support \s-1PAM\s0 unless the
        !           452: \&\fIpassprompt_override\fR flag is disabled in \fIsudoers\fR.
        !           453: .RE
        !           454: .if \n(SL \{\
        !           455: .IP "\-r \fIrole\fR" 12
        !           456: .IX Item "-r role"
        !           457: The \fB\-r\fR (\fIrole\fR) option causes the new (SELinux) security context to 
        !           458: have the role specified by \fIrole\fR.
        !           459: \}
        !           460: .IP "\-S" 12
        !           461: .IX Item "-S"
        !           462: The \fB\-S\fR (\fIstdin\fR) option causes \fBsudo\fR to read the password from
        !           463: the standard input instead of the terminal device.  The password must
        !           464: be followed by a newline character.
        !           465: .IP "\-s [command]" 12
        !           466: .IX Item "-s [command]"
        !           467: The \fB\-s\fR (\fIshell\fR) option runs the shell specified by the \fI\s-1SHELL\s0\fR
        !           468: environment variable if it is set or the shell as specified in the
        !           469: password database.  If a command is specified, it is passed to the
        !           470: shell for execution via the shell's \fB\-c\fR option.  If no command
        !           471: is specified, an interactive shell is executed.
        !           472: .if \n(SL \{\
        !           473: .IP "\-t \fItype\fR" 12
        !           474: .IX Item "-t type"
        !           475: The \fB\-t\fR (\fItype\fR) option causes the new (SELinux) security context to 
        !           476: have the type specified by \fItype\fR.  If no type is specified, the default
        !           477: type is derived from the specified role.
        !           478: \}
        !           479: .IP "\-U \fIuser\fR" 12
        !           480: .IX Item "-U user"
        !           481: The \fB\-U\fR (\fIother user\fR) option is used in conjunction with the
        !           482: \&\fB\-l\fR option to specify the user whose privileges should be listed.
        !           483: The security policy may restrict listing other users' privileges.
        !           484: The \fIsudoers\fR policy only allows root or a user with the \f(CW\*(C`ALL\*(C'\fR
        !           485: privilege on the current host to use this option.
        !           486: .IP "\-u \fIuser\fR" 12
        !           487: .IX Item "-u user"
        !           488: The \fB\-u\fR (\fIuser\fR) option causes \fBsudo\fR to run the specified
        !           489: command as a user other than \fIroot\fR.  To specify a \fIuid\fR instead
        !           490: of a \fIuser name\fR, use \fI#uid\fR.  When running commands as a \fIuid\fR,
        !           491: many shells require that the '#' be escaped with a backslash ('\e').
        !           492: Security policies may restrict \fIuid\fRs to those listed in the
        !           493: password database.  The \fIsudoers\fR policy allows \fIuid\fRs that are
        !           494: not in the password database as long as the \fItargetpw\fR option is
        !           495: not set.  Other security policies may not support this.
        !           496: .IP "\-V" 12
        !           497: .IX Item "-V"
        !           498: The \fB\-V\fR (\fIversion\fR) option causes \fBsudo\fR to print its version
        !           499: string and the version string of the security policy plugin and any
        !           500: I/O plugins.  If the invoking user is already root the \fB\-V\fR option
        !           501: will display the arguments passed to configure when \fIsudo\fR was
        !           502: built and plugins may display more verbose information such as
        !           503: default options.
        !           504: .IP "\-v" 12
        !           505: .IX Item "-v"
        !           506: When given the \fB\-v\fR (\fIvalidate\fR) option, \fBsudo\fR will update the
        !           507: user's cached credentials, authenticating the user's password if
        !           508: necessary.  For the \fIsudoers\fR plugin, this extends the \fBsudo\fR
        !           509: timeout for another \f(CW\*(C`@timeout@\*(C'\fR minutes (or whatever the timeout
        !           510: is set to in \fIsudoers\fR) but does not run a command.  Not all
        !           511: security policies support cached credentials.
        !           512: .IP "\-\-" 12
        !           513: The \fB\-\-\fR option indicates that \fBsudo\fR should stop processing command
        !           514: line arguments.
        !           515: .PP
        !           516: Environment variables to be set for the command may also be passed
        !           517: on the command line in the form of \fB\s-1VAR\s0\fR=\fIvalue\fR, e.g.
        !           518: \&\fB\s-1LD_LIBRARY_PATH\s0\fR=\fI/usr/local/pkg/lib\fR.  Variables passed on the
        !           519: command line are subject to the same restrictions as normal environment
        !           520: variables with one important exception.  If the \fIsetenv\fR option
        !           521: is set in \fIsudoers\fR, the command to be run has the \f(CW\*(C`SETENV\*(C'\fR tag
        !           522: set or the command matched is \f(CW\*(C`ALL\*(C'\fR, the user may set variables
        !           523: that would overwise be forbidden.  See \fIsudoers\fR\|(@mansectform@) for more information.
        !           524: .SH "PLUGINS"
        !           525: .IX Header "PLUGINS"
        !           526: Plugins are dynamically loaded based on the contents of the
        !           527: \&\fI@sysconfdir@/sudo.conf\fR file.  If no \fI@sysconfdir@/sudo.conf\fR
        !           528: file is present, or it contains no \f(CW\*(C`Plugin\*(C'\fR lines, \fBsudo\fR
        !           529: will use the traditional \fIsudoers\fR security policy and I/O logging,
        !           530: which corresponds to the following \fI@sysconfdir@/sudo.conf\fR file.
        !           531: .PP
        !           532: .Vb 10
        !           533: \& #
        !           534: \& # Default @sysconfdir@/sudo.conf file
        !           535: \& #
        !           536: \& # Format:
        !           537: \& #   Plugin plugin_name plugin_path
        !           538: \& #   Path askpass /path/to/askpass
        !           539: \& #   Path noexec /path/to/noexec.so
        !           540: \& #
        !           541: \& # The plugin_path is relative to @prefix@/libexec unless
        !           542: \& #   fully qualified.
        !           543: \& # The plugin_name corresponds to a global symbol in the plugin
        !           544: \& #   that contains the plugin interface structure.
        !           545: \& #
        !           546: \& Plugin policy_plugin sudoers.so
        !           547: \& Plugin io_plugin sudoers.so
        !           548: .Ve
        !           549: .PP
        !           550: A \f(CW\*(C`Plugin\*(C'\fR line consists of the \f(CW\*(C`Plugin\*(C'\fR keyword, followed by the
        !           551: \&\fIsymbol_name\fR and the \fIpath\fR to the shared object containing the
        !           552: plugin.  The \fIsymbol_name\fR is the name of the \f(CW\*(C`struct policy_plugin\*(C'\fR
        !           553: or \f(CW\*(C`struct io_plugin\*(C'\fR in the plugin shared object.  The \fIpath\fR
        !           554: may be fully qualified or relative.  If not fully qualified it is
        !           555: relative to the \fI@prefix@/libexec\fR directory.  Any additional
        !           556: parameters after the \fIpath\fR are ignored.  Lines that don't begin
        !           557: with \f(CW\*(C`Plugin\*(C'\fR or \f(CW\*(C`Path\*(C'\fR are silently ignored
        !           558: .PP
        !           559: For more information, see the \fIsudo_plugin\fR\|(@mansectsu@) manual.
        !           560: .SH "PATHS"
        !           561: .IX Header "PATHS"
        !           562: A \f(CW\*(C`Path\*(C'\fR line consists of the \f(CW\*(C`Path\*(C'\fR keyword, followed by the
        !           563: name of the path to set and its value.  E.g.
        !           564: .PP
        !           565: .Vb 2
        !           566: \& Path noexec @noexec_file@
        !           567: \& Path askpass /usr/X11R6/bin/ssh\-askpass
        !           568: .Ve
        !           569: .PP
        !           570: The following plugin-agnostic paths may be set in the
        !           571: \&\fI@sysconfdir@/sudo.conf\fR file.
        !           572: .IP "askpass" 16
        !           573: .IX Item "askpass"
        !           574: The fully qualified path to a helper program used to read the user's
        !           575: password when no terminal is available.  This may be the case when
        !           576: \&\fBsudo\fR is executed from a graphical (as opposed to text-based)
        !           577: application.  The program specified by \fIaskpass\fR should display
        !           578: the argument passed to it as the prompt and write the user's password
        !           579: to the standard output.  The value of \fIaskpass\fR may be overridden
        !           580: by the \f(CW\*(C`SUDO_ASKPASS\*(C'\fR environment variable.
        !           581: .IP "noexec" 16
        !           582: .IX Item "noexec"
        !           583: The fully-qualified path to a shared library containing dummy
        !           584: versions of the \fIexecv()\fR, \fIexecve()\fR and \fIfexecve()\fR library functions
        !           585: that just return an error.  This is used to implement the \fInoexec\fR
        !           586: functionality on systems that support \f(CW\*(C`LD_PRELOAD\*(C'\fR or its equivalent.
        !           587: Defaults to \fI@noexec_file@\fR.
        !           588: .SH "RETURN VALUES"
        !           589: .IX Header "RETURN VALUES"
        !           590: Upon successful execution of a program, the exit status from \fBsudo\fR
        !           591: will simply be the exit status of the program that was executed.
        !           592: .PP
        !           593: Otherwise, \fBsudo\fR exits with a value of 1 if there is a
        !           594: configuration/permission problem or if \fBsudo\fR cannot execute the
        !           595: given command.  In the latter case the error string is printed to
        !           596: the standard error.  If \fBsudo\fR cannot \fIstat\fR\|(2) one or more entries
        !           597: in the user's \f(CW\*(C`PATH\*(C'\fR, an error is printed on stderr.  (If the
        !           598: directory does not exist or if it is not really a directory, the
        !           599: entry is ignored and no error is printed.)  This should not happen
        !           600: under normal circumstances.  The most common reason for \fIstat\fR\|(2)
        !           601: to return \*(L"permission denied\*(R" is if you are running an automounter
        !           602: and one of the directories in your \f(CW\*(C`PATH\*(C'\fR is on a machine that is
        !           603: currently unreachable.
        !           604: .SH "SECURITY NOTES"
        !           605: .IX Header "SECURITY NOTES"
        !           606: \&\fBsudo\fR tries to be safe when executing external commands.
        !           607: .PP
        !           608: To prevent command spoofing, \fBsudo\fR checks \*(L".\*(R" and "" (both denoting
        !           609: current directory) last when searching for a command in the user's
        !           610: \&\s-1PATH\s0 (if one or both are in the \s-1PATH\s0).  Note, however, that the
        !           611: actual \f(CW\*(C`PATH\*(C'\fR environment variable is \fInot\fR modified and is passed
        !           612: unchanged to the program that \fBsudo\fR executes.
        !           613: .PP
        !           614: Please note that \fBsudo\fR will normally only log the command it
        !           615: explicitly runs.  If a user runs a command such as \f(CW\*(C`sudo su\*(C'\fR or
        !           616: \&\f(CW\*(C`sudo sh\*(C'\fR, subsequent commands run from that shell are not subject
        !           617: to \fBsudo\fR's security policy.  The same is true for commands that
        !           618: offer shell escapes (including most editors).  If I/O logging is
        !           619: enabled, subsequent commands will have their input and/or output
        !           620: logged, but there will not be traditional logs for those commands.
        !           621: Because of this, care must be taken when giving users access to
        !           622: commands via \fBsudo\fR to verify that the command does not inadvertently
        !           623: give the user an effective root shell.  For more information, please
        !           624: see the \f(CW\*(C`PREVENTING SHELL ESCAPES\*(C'\fR section in \fIsudoers\fR\|(@mansectform@).
        !           625: .SH "ENVIRONMENT"
        !           626: .IX Header "ENVIRONMENT"
        !           627: \&\fBsudo\fR utilizes the following environment variables.  The security
        !           628: policy has control over the content of the command's environment.
        !           629: .ie n .IP "\*(C`EDITOR\*(C'" 16
        !           630: .el .IP "\f(CW\*(C`EDITOR\*(C'\fR" 16
        !           631: .IX Item "EDITOR"
        !           632: Default editor to use in \fB\-e\fR (sudoedit) mode if neither \f(CW\*(C`SUDO_EDITOR\*(C'\fR
        !           633: nor \f(CW\*(C`VISUAL\*(C'\fR is set
        !           634: .ie n .IP "\*(C`MAIL\*(C'" 16
        !           635: .el .IP "\f(CW\*(C`MAIL\*(C'\fR" 16
        !           636: .IX Item "MAIL"
        !           637: In \fB\-i\fR mode or when \fIenv_reset\fR is enabled in \fIsudoers\fR, set
        !           638: to the mail spool of the target user
        !           639: .ie n .IP "\*(C`HOME\*(C'" 16
        !           640: .el .IP "\f(CW\*(C`HOME\*(C'\fR" 16
        !           641: .IX Item "HOME"
        !           642: Set to the home directory of the target user if \fB\-i\fR or \fB\-H\fR are
        !           643: specified, \fIenv_reset\fR or \fIalways_set_home\fR are set in \fIsudoers\fR,
        !           644: or when the \fB\-s\fR option is specified and \fIset_home\fR is set in
        !           645: \&\fIsudoers\fR
        !           646: .ie n .IP "\*(C`PATH\*(C'" 16
        !           647: .el .IP "\f(CW\*(C`PATH\*(C'\fR" 16
        !           648: .IX Item "PATH"
        !           649: May be overridden by the security policy.
        !           650: .ie n .IP "\*(C`SHELL\*(C'" 16
        !           651: .el .IP "\f(CW\*(C`SHELL\*(C'\fR" 16
        !           652: .IX Item "SHELL"
        !           653: Used to determine shell to run with \f(CW\*(C`\-s\*(C'\fR option
        !           654: .ie n .IP "\*(C`SUDO_ASKPASS\*(C'" 16
        !           655: .el .IP "\f(CW\*(C`SUDO_ASKPASS\*(C'\fR" 16
        !           656: .IX Item "SUDO_ASKPASS"
        !           657: Specifies the path to a helper program used to read the password
        !           658: if no terminal is available or if the \f(CW\*(C`\-A\*(C'\fR option is specified.
        !           659: .ie n .IP "\*(C`SUDO_COMMAND\*(C'" 16
        !           660: .el .IP "\f(CW\*(C`SUDO_COMMAND\*(C'\fR" 16
        !           661: .IX Item "SUDO_COMMAND"
        !           662: Set to the command run by sudo
        !           663: .ie n .IP "\*(C`SUDO_EDITOR\*(C'" 16
        !           664: .el .IP "\f(CW\*(C`SUDO_EDITOR\*(C'\fR" 16
        !           665: .IX Item "SUDO_EDITOR"
        !           666: Default editor to use in \fB\-e\fR (sudoedit) mode
        !           667: .ie n .IP "\*(C`SUDO_GID\*(C'" 16
        !           668: .el .IP "\f(CW\*(C`SUDO_GID\*(C'\fR" 16
        !           669: .IX Item "SUDO_GID"
        !           670: Set to the group \s-1ID\s0 of the user who invoked sudo
        !           671: .ie n .IP "\*(C`SUDO_PROMPT\*(C'" 16
        !           672: .el .IP "\f(CW\*(C`SUDO_PROMPT\*(C'\fR" 16
        !           673: .IX Item "SUDO_PROMPT"
        !           674: Used as the default password prompt
        !           675: .ie n .IP "\*(C`SUDO_PS1\*(C'" 16
        !           676: .el .IP "\f(CW\*(C`SUDO_PS1\*(C'\fR" 16
        !           677: .IX Item "SUDO_PS1"
        !           678: If set, \f(CW\*(C`PS1\*(C'\fR will be set to its value for the program being run
        !           679: .ie n .IP "\*(C`SUDO_UID\*(C'" 16
        !           680: .el .IP "\f(CW\*(C`SUDO_UID\*(C'\fR" 16
        !           681: .IX Item "SUDO_UID"
        !           682: Set to the user \s-1ID\s0 of the user who invoked sudo
        !           683: .ie n .IP "\*(C`SUDO_USER\*(C'" 16
        !           684: .el .IP "\f(CW\*(C`SUDO_USER\*(C'\fR" 16
        !           685: .IX Item "SUDO_USER"
        !           686: Set to the login of the user who invoked sudo
        !           687: .ie n .IP "\*(C`USER\*(C'" 16
        !           688: .el .IP "\f(CW\*(C`USER\*(C'\fR" 16
        !           689: .IX Item "USER"
        !           690: Set to the target user (root unless the \fB\-u\fR option is specified)
        !           691: .ie n .IP "\*(C`VISUAL\*(C'" 16
        !           692: .el .IP "\f(CW\*(C`VISUAL\*(C'\fR" 16
        !           693: .IX Item "VISUAL"
        !           694: Default editor to use in \fB\-e\fR (sudoedit) mode if \f(CW\*(C`SUDO_EDITOR\*(C'\fR
        !           695: is not set
        !           696: .SH "FILES"
        !           697: .IX Header "FILES"
        !           698: .ie n .IP "\fI@sysconfdir@/sudo.conf\fR" 24
        !           699: .el .IP "\fI@sysconfdir@/sudo.conf\fR" 24
        !           700: .IX Item "@sysconfdir@/sudo.conf"
        !           701: \&\fBsudo\fR plugin and path configuration
        !           702: .SH "EXAMPLES"
        !           703: .IX Header "EXAMPLES"
        !           704: Note: the following examples assume a properly configured security policy.
        !           705: .PP
        !           706: To get a file listing of an unreadable directory:
        !           707: .PP
        !           708: .Vb 1
        !           709: \& $ sudo ls /usr/local/protected
        !           710: .Ve
        !           711: .PP
        !           712: To list the home directory of user yaz on a machine where the
        !           713: file system holding ~yaz is not exported as root:
        !           714: .PP
        !           715: .Vb 1
        !           716: \& $ sudo \-u yaz ls ~yaz
        !           717: .Ve
        !           718: .PP
        !           719: To edit the \fIindex.html\fR file as user www:
        !           720: .PP
        !           721: .Vb 1
        !           722: \& $ sudo \-u www vi ~www/htdocs/index.html
        !           723: .Ve
        !           724: .PP
        !           725: To view system logs only accessible to root and users in the adm group:
        !           726: .PP
        !           727: .Vb 1
        !           728: \& $ sudo \-g adm view /var/log/syslog
        !           729: .Ve
        !           730: .PP
        !           731: To run an editor as jim with a different primary group:
        !           732: .PP
        !           733: .Vb 1
        !           734: \& $ sudo \-u jim \-g audio vi ~jim/sound.txt
        !           735: .Ve
        !           736: .PP
        !           737: To shutdown a machine:
        !           738: .PP
        !           739: .Vb 1
        !           740: \& $ sudo shutdown \-r +15 "quick reboot"
        !           741: .Ve
        !           742: .PP
        !           743: To make a usage listing of the directories in the /home
        !           744: partition.  Note that this runs the commands in a sub-shell
        !           745: to make the \f(CW\*(C`cd\*(C'\fR and file redirection work.
        !           746: .PP
        !           747: .Vb 1
        !           748: \& $ sudo sh \-c "cd /home ; du \-s * | sort \-rn > USAGE"
        !           749: .Ve
        !           750: .SH "SEE ALSO"
        !           751: .IX Header "SEE ALSO"
        !           752: \&\fIgrep\fR\|(1), \fIsu\fR\|(1), \fIstat\fR\|(2),
        !           753: .if \n(LC \&\fIlogin_cap\fR\|(3),
        !           754: \&\fIpasswd\fR\|(@mansectform@), \fIsudoers\fR\|(@mansectform@), \fIsudo_plugin\fR\|(@mansectsu@), \fIsudoreplay\fR\|(@mansectsu@), \fIvisudo\fR\|(@mansectsu@)
        !           755: .SH "AUTHORS"
        !           756: .IX Header "AUTHORS"
        !           757: Many people have worked on \fBsudo\fR over the years; this
        !           758: version consists of code written primarily by:
        !           759: .PP
        !           760: .Vb 1
        !           761: \&        Todd C. Miller
        !           762: .Ve
        !           763: .PP
        !           764: See the \s-1HISTORY\s0 file in the \fBsudo\fR distribution or visit
        !           765: http://www.sudo.ws/sudo/history.html for a short history
        !           766: of \fBsudo\fR.
        !           767: .SH "CAVEATS"
        !           768: .IX Header "CAVEATS"
        !           769: There is no easy way to prevent a user from gaining a root shell
        !           770: if that user is allowed to run arbitrary commands via \fBsudo\fR.
        !           771: Also, many programs (such as editors) allow the user to run commands
        !           772: via shell escapes, thus avoiding \fBsudo\fR's checks.  However, on
        !           773: most systems it is possible to prevent shell escapes with the
        !           774: \&\fIsudoers\fR\|(@mansectform@) module's \fInoexec\fR functionality.
        !           775: .PP
        !           776: It is not meaningful to run the \f(CW\*(C`cd\*(C'\fR command directly via sudo, e.g.,
        !           777: .PP
        !           778: .Vb 1
        !           779: \& $ sudo cd /usr/local/protected
        !           780: .Ve
        !           781: .PP
        !           782: since when the command exits the parent process (your shell) will
        !           783: still be the same.  Please see the \s-1EXAMPLES\s0 section for more information.
        !           784: .PP
        !           785: Running shell scripts via \fBsudo\fR can expose the same kernel bugs that
        !           786: make setuid shell scripts unsafe on some operating systems (if your \s-1OS\s0
        !           787: has a /dev/fd/ directory, setuid shell scripts are generally safe).
        !           788: .SH "BUGS"
        !           789: .IX Header "BUGS"
        !           790: If you feel you have found a bug in \fBsudo\fR, please submit a bug report
        !           791: at http://www.sudo.ws/sudo/bugs/
        !           792: .SH "SUPPORT"
        !           793: .IX Header "SUPPORT"
        !           794: Limited free support is available via the sudo-users mailing list,
        !           795: see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
        !           796: search the archives.
        !           797: .SH "DISCLAIMER"
        !           798: .IX Header "DISCLAIMER"
        !           799: \&\fBsudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
        !           800: including, but not limited to, the implied warranties of merchantability
        !           801: and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
        !           802: file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
        !           803: for complete details.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>