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

1.1     ! misho       1: .\"
        !             2: .\" Copyright (c) 1994-1996, 1998-2005, 2007-2012
        !             3: .\"    Todd C. Miller <Todd.Miller@courtesan.com>
        !             4: .\"
        !             5: .\" Permission to use, copy, modify, and distribute this software for any
        !             6: .\" purpose with or without fee is hereby granted, provided that the above
        !             7: .\" copyright notice and this permission notice appear in all copies.
        !             8: .\"
        !             9: .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            10: .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            11: .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            12: .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            13: .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            14: .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            15: .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            16: .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            17: .\"
        !            18: .\" Sponsored in part by the Defense Advanced Research Projects
        !            19: .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
        !            20: .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
        !            21: .\"
        !            22: .Dd July 10, 2012
        !            23: .Dt SUDO @mansectsu@
        !            24: .Os Sudo @PACKAGE_VERSION@
        !            25: .Sh NAME
        !            26: .Nm sudo ,
        !            27: .Nm sudoedit
        !            28: .Nd execute a command as another user
        !            29: .Sh SYNOPSIS
        !            30: .Nm sudo
        !            31: .Fl h No | Fl K No | Fl k No | Fl V
        !            32: .Nm sudo
        !            33: .Fl v
        !            34: .Op Fl AknS
        !            35: .Bk -words
        !            36: .Op Fl a Ar auth_type
        !            37: .Ek
        !            38: .Bk -words
        !            39: .Op Fl g Ar group name No | Ar #gid
        !            40: .Ek
        !            41: .Bk -words
        !            42: .Op Fl p Ar prompt
        !            43: .Ek
        !            44: .Bk -words
        !            45: .Op Fl u Ar user name No | Ar #uid
        !            46: .Ek
        !            47: .Nm sudo
        !            48: .Fl l Ns Op Ar l
        !            49: .Op Fl AknS
        !            50: .Bk -words
        !            51: .Op Fl a Ar auth_type
        !            52: .Ek
        !            53: .Bk -words
        !            54: .Op Fl g Ar group name No | Ar #gid
        !            55: .Ek
        !            56: .Bk -words
        !            57: .Op Fl p Ar prompt
        !            58: .Ek
        !            59: .Bk -words
        !            60: .Op Fl U Ar user name
        !            61: .Ek
        !            62: .Bk -words
        !            63: .Op Fl u Ar user name No | Ar #uid
        !            64: .Ek
        !            65: .Op Ar command
        !            66: .Nm sudo
        !            67: .Op Fl AbEHnPS
        !            68: .Bk -words
        !            69: .Op Fl a Ar auth_type
        !            70: .Ek
        !            71: .Bk -words
        !            72: .Op Fl C Ar fd
        !            73: .Ek
        !            74: .Bk -words
        !            75: .Op Fl c Ar class No | Ar -
        !            76: .Ek
        !            77: .Bk -words
        !            78: .Op Fl g Ar group name No | Ar #gid
        !            79: .Ek
        !            80: .Bk -words
        !            81: .Op Fl p Ar prompt
        !            82: .Ek
        !            83: .Bk -words
        !            84: .Op Fl r Ar role
        !            85: .Ek
        !            86: .Bk -words
        !            87: .Op Fl t Ar type
        !            88: .Ek
        !            89: .Bk -words
        !            90: .Op Fl u Ar user name No | Ar #uid
        !            91: .Ek
        !            92: .Bk -words
        !            93: .Op Sy VAR Ns = Ns Ar value
        !            94: .Ek
        !            95: .Bk -words
        !            96: .Fl i No | Fl s
        !            97: .Ek
        !            98: .Op Ar command
        !            99: .Nm sudoedit
        !           100: .Op Fl AnS
        !           101: .Bk -words
        !           102: .Op Fl a Ar auth_type
        !           103: .Ek
        !           104: .Bk -words
        !           105: .Op Fl C Ar fd
        !           106: .Ek
        !           107: .Bk -words
        !           108: .Op Fl c Ar class No | Ar -
        !           109: .Ek
        !           110: .Bk -words
        !           111: .Op Fl g Ar group name No | Ar #gid
        !           112: .Ek
        !           113: .Bk -words
        !           114: .Op Fl p Ar prompt
        !           115: .Ek
        !           116: .Bk -words
        !           117: .Op Fl u Ar user name No | Ar #uid
        !           118: .Ek
        !           119: .Bk -words
        !           120: file ...
        !           121: .Ek
        !           122: .Sh DESCRIPTION
        !           123: .Nm sudo
        !           124: allows a permitted user to execute a
        !           125: .Ar command
        !           126: as the superuser or another user, as specified by the security
        !           127: policy.
        !           128: .Pp
        !           129: .Nm sudo
        !           130: supports a plugin architecture for security policies and input/output
        !           131: logging.
        !           132: Third parties can develop and distribute their own policy and I/O
        !           133: logging plugins to work seamlessly with the
        !           134: .Nm sudo
        !           135: front end.
        !           136: The default security policy is
        !           137: .Em sudoers ,
        !           138: which is configured via the file
        !           139: .Pa @sysconfdir@/sudoers ,
        !           140: or via LDAP.
        !           141: See the
        !           142: .Sx PLUGINS
        !           143: section for more information.
        !           144: .Pp
        !           145: The security policy determines what privileges, if any, a user has
        !           146: to run
        !           147: .Nm sudo .
        !           148: The policy may require that users authenticate themselves with a
        !           149: password or another authentication mechanism.
        !           150: If authentication is required,
        !           151: .Nm sudo
        !           152: will exit if the user's password is not entered within a configurable
        !           153: time limit.
        !           154: This limit is policy-specific; the default password prompt timeout
        !           155: for the
        !           156: .Em sudoers
        !           157: security policy is
        !           158: .Li @password_timeout@
        !           159: minutes.
        !           160: .Pp
        !           161: Security policies may support credential caching to allow the user
        !           162: to run
        !           163: .Nm sudo
        !           164: again for a period of time without requiring authentication.
        !           165: The
        !           166: .Em sudoers
        !           167: policy caches credentials for
        !           168: .Li @timeout@
        !           169: minutes, unless overridden in
        !           170: .Xr sudoers @mansectform@ .
        !           171: By running
        !           172: .Nm sudo
        !           173: with the
        !           174: .Fl v
        !           175: option, a user can update the cached credentials without running a
        !           176: .Ar command .
        !           177: .Pp
        !           178: When invoked as
        !           179: .Nm sudoedit ,
        !           180: the
        !           181: .Fl e
        !           182: option (described below), is implied.
        !           183: .Pp
        !           184: Security policies may log successful and failed attempts to use
        !           185: .Nm sudo .
        !           186: If an I/O plugin is configured, the running command's input and
        !           187: output may be logged as well.
        !           188: .Pp
        !           189: The options are as follows:
        !           190: .Bl -tag -width Fl
        !           191: .It Fl A
        !           192: Normally, if
        !           193: .Nm sudo
        !           194: requires a password, it will read it from the user's terminal.
        !           195: If the
        !           196: .Fl A No ( Em askpass Ns No )
        !           197: option is specified, a (possibly graphical) helper program is
        !           198: executed to read the user's password and output the password to the
        !           199: standard output.
        !           200: If the
        !           201: .Ev SUDO_ASKPASS
        !           202: environment variable is set, it specifies the path to the helper
        !           203: program.
        !           204: Otherwise, if
        !           205: .Pa @sysconfdir@/sudo.conf
        !           206: contains a line specifying the askpass program, that value will be
        !           207: used.
        !           208: For example:
        !           209: .Bd -literal -offset 4n
        !           210: # Path to askpass helper program
        !           211: Path askpass /usr/X11R6/bin/ssh-askpass
        !           212: .Ed
        !           213: .Pp
        !           214: If no askpass program is available,
        !           215: .Nm sudo
        !           216: will exit with an error.
        !           217: .It Fl a Ar type
        !           218: The
        !           219: .Fl a No ( Em "authentication type" Ns No )
        !           220: option causes
        !           221: .Nm sudo
        !           222: to use the specified authentication type when validating the user,
        !           223: as allowed by
        !           224: .Pa /etc/login.conf .
        !           225: The system administrator may specify a list of sudo-specific
        !           226: authentication methods by adding an
        !           227: .Dq auth-sudo
        !           228: entry in
        !           229: .Pa /etc/login.conf .
        !           230: This option is only available on systems that support BSD authentication.
        !           231: .It Fl b
        !           232: The
        !           233: .Fl b No ( Em background Ns No )
        !           234: option tells
        !           235: .Nm sudo
        !           236: to run the given command in the background.
        !           237: Note that if you use the
        !           238: .Fl b
        !           239: option you cannot use shell job control to manipulate the process.
        !           240: Most interactive commands will fail to work properly in background
        !           241: mode.
        !           242: .It Fl C Ar fd
        !           243: Normally,
        !           244: .Nm sudo
        !           245: will close all open file descriptors other than standard input,
        !           246: standard output and standard error.
        !           247: The
        !           248: .Fl C No ( Em close from Ns No )
        !           249: option allows the user to specify a starting point above the standard
        !           250: error (file descriptor three).
        !           251: Values less than three are not permitted.
        !           252: The security policy may restrict the user's ability to use the
        !           253: .Fl C
        !           254: option.
        !           255: The
        !           256: .Em sudoers
        !           257: policy only permits use of the
        !           258: .Fl C
        !           259: option when the administrator has enabled the
        !           260: .Em closefrom_override
        !           261: option.
        !           262: .It Fl c Ar class
        !           263: The
        !           264: .Fl c No ( Em class Ns No )
        !           265: option causes
        !           266: .Nm sudo
        !           267: to run the specified command with resources limited by the specified
        !           268: login class.
        !           269: The
        !           270: .Em class
        !           271: argument can be either a class name as defined in
        !           272: .Pa /etc/login.conf ,
        !           273: or a single
        !           274: .Ql \-
        !           275: character.
        !           276: Specifying a
        !           277: .Ar class
        !           278: of
        !           279: .Li -
        !           280: indicates that the command should be run restricted by the default
        !           281: login capabilities for the user the command is run as.
        !           282: If the
        !           283: .Ar class
        !           284: argument specifies an existing user class, the command must be run
        !           285: as root, or the
        !           286: .Nm sudo
        !           287: command must be run from a shell that is already root.
        !           288: This option is only available on systems with BSD login classes.
        !           289: .It Fl E
        !           290: The
        !           291: .Fl E No ( Em preserve environment Ns No )
        !           292: option indicates to the security policy that the user wishes to
        !           293: preserve their existing environment variables.
        !           294: The security policy may return an error if the
        !           295: .Fl E
        !           296: option is specified and the user does not have permission to preserve
        !           297: the environment.
        !           298: .It Fl e
        !           299: The
        !           300: .Fl e No ( Em edit Ns No )
        !           301: option indicates that, instead of running a command, the user wishes
        !           302: to edit one or more files.
        !           303: In lieu of a command, the string "sudoedit" is used when consulting
        !           304: the security policy.
        !           305: If the user is authorized by the policy, the following steps are
        !           306: taken:
        !           307: .Bl -enum -offset 4
        !           308: .It
        !           309: Temporary copies are made of the files to be edited with the owner
        !           310: set to the invoking user.
        !           311: .It
        !           312: The editor specified by the policy is run to edit the temporary
        !           313: files.
        !           314: The
        !           315: .Em sudoers
        !           316: policy uses the
        !           317: .Ev SUDO_EDITOR ,
        !           318: .Ev VISUAL
        !           319: and
        !           320: .Ev EDITOR
        !           321: environment variables (in that order).
        !           322: If none of
        !           323: .Ev SUDO_EDITOR ,
        !           324: .Ev VISUAL
        !           325: or
        !           326: .Ev EDITOR
        !           327: are set, the first program listed in the
        !           328: .Em editor
        !           329: .Xr sudoers @mansectform@
        !           330: option is used.
        !           331: .It
        !           332: If they have been modified, the temporary files are copied back to
        !           333: their original location and the temporary versions are removed.
        !           334: .El
        !           335: .Pp
        !           336: If the specified file does not exist, it will be created.
        !           337: Note that unlike most commands run by
        !           338: .Em sudo ,
        !           339: the editor is run with the invoking user's environment unmodified.
        !           340: If, for some reason,
        !           341: .Nm sudo
        !           342: is unable to update a file with its edited version, the user will
        !           343: receive a warning and the edited copy will remain in a temporary
        !           344: file.
        !           345: .It Fl g Ar group
        !           346: Normally,
        !           347: .Nm sudo
        !           348: runs a command with the primary group set to the one specified by
        !           349: the password database for the user the command is being run as (by
        !           350: default, root).
        !           351: The
        !           352: .Fl g No ( Em group Ns No )
        !           353: option causes
        !           354: .Nm sudo
        !           355: to run the command with the primary group set to
        !           356: .Ar group
        !           357: instead.
        !           358: To specify a
        !           359: .Em gid
        !           360: instead of a
        !           361: .Em "group name" ,
        !           362: use
        !           363: .Em #gid .
        !           364: When running commands as a
        !           365: .Em gid ,
        !           366: many shells require that the
        !           367: .Ql #
        !           368: be escaped with a backslash
        !           369: .Pq Ql \e .
        !           370: If no
        !           371: .Fl u
        !           372: option is specified, the command will be run as the invoking user
        !           373: (not root).
        !           374: In either case, the primary group will be set to
        !           375: .Em group .
        !           376: .It Fl H
        !           377: The
        !           378: .Fl H No ( Em HOME Ns No )
        !           379: option requests that the security policy set the
        !           380: .Ev HOME
        !           381: environment variable to the home directory of the target user (root
        !           382: by default) as specified by the password database.
        !           383: Depending on the policy, this may be the default behavior.
        !           384: .It Fl h
        !           385: The
        !           386: .Fl h No ( Em help Ns No )
        !           387: option causes
        !           388: .Nm sudo
        !           389: to print a short help message to the standard output and exit.
        !           390: .It Fl i Op Ar command
        !           391: The
        !           392: .Fl i No ( Em simulate initial login Ns No )
        !           393: option runs the shell specified by the password database entry of
        !           394: the target user as a login shell.
        !           395: This means that login-specific resource files such as
        !           396: .Pa .profile
        !           397: or
        !           398: .Pa .login
        !           399: will be read by the shell.
        !           400: If a command is specified, it is passed to the shell for execution
        !           401: via the shell's
        !           402: .Fl c
        !           403: option.
        !           404: If no command is specified, an interactive shell is executed.
        !           405: .Nm sudo
        !           406: attempts to change to that user's home directory before running the
        !           407: shell.
        !           408: The security policy shall initialize the environment to a minimal
        !           409: set of variables, similar to what is present when a user logs in.
        !           410: The
        !           411: .Em Command Environment
        !           412: section in the
        !           413: .Xr sudoers @mansectform@
        !           414: manual documents how the
        !           415: .Fl i
        !           416: option affects the environment in which a command is run when the
        !           417: .Em sudoers
        !           418: policy is in use.
        !           419: .It Fl K
        !           420: The
        !           421: .Fl K No ( sure Em kill Ns No )
        !           422: option is like
        !           423: .Fl k
        !           424: except that it removes the user's cached credentials entirely and
        !           425: may not be used in conjunction with a command or other option.
        !           426: This option does not require a password.
        !           427: Not all security policies support credential caching.
        !           428: .It Fl k Op Ar command
        !           429: When used alone, the
        !           430: .Fl k No ( Em kill Ns No )
        !           431: option to
        !           432: .Nm sudo
        !           433: invalidates the user's cached credentials.
        !           434: The next time
        !           435: .Nm sudo
        !           436: is run a password will be required.
        !           437: This option does not require a password and was added to allow a
        !           438: user to revoke
        !           439: .Nm sudo
        !           440: permissions from a
        !           441: .Pa .logout
        !           442: file.
        !           443: Not all security policies support credential caching.
        !           444: .Pp
        !           445: When used in conjunction with a command or an option that may require
        !           446: a password, the
        !           447: .Fl k
        !           448: option will cause
        !           449: .Nm sudo
        !           450: to ignore the user's cached credentials.
        !           451: As a result,
        !           452: .Nm sudo
        !           453: will prompt for a password (if one is required by the security
        !           454: policy) and will not update the user's cached credentials.
        !           455: .It Fl l Ns Oo Sy l Oc Op Ar command
        !           456: If no
        !           457: .Ar command
        !           458: is specified, the
        !           459: .Fl l No ( Em list Ns No )
        !           460: option will list the allowed (and forbidden) commands for the
        !           461: invoking user (or the user specified by the
        !           462: .Fl U
        !           463: option) on the current host.
        !           464: If a
        !           465: .Ar command
        !           466: is specified and is permitted by the security policy, the fully-qualified
        !           467: path to the command is displayed along with any command line
        !           468: arguments.
        !           469: If
        !           470: .Ar command
        !           471: is specified but not allowed,
        !           472: .Nm sudo
        !           473: will exit with a status value of 1.
        !           474: If the
        !           475: .Fl l
        !           476: option is specified with an
        !           477: .Ar l
        !           478: argument
        !           479: .Pq i.e.\& Fl ll ,
        !           480: or if
        !           481: .Fl l
        !           482: is specified multiple times, a longer list format is used.
        !           483: .It Fl n
        !           484: The
        !           485: .Fl n No ( Em non-interactive Ns No )
        !           486: option prevents
        !           487: .Nm sudo
        !           488: from prompting the user for a password.
        !           489: If a password is required for the command to run,
        !           490: .Nm sudo
        !           491: will display an error message and exit.
        !           492: .It Fl P
        !           493: The
        !           494: .Fl P No ( Em preserve group vector Ns No )
        !           495: option causes
        !           496: .Nm sudo
        !           497: to preserve the invoking user's group vector unaltered.
        !           498: By default, the
        !           499: .Em sudoers
        !           500: policy will initialize the group vector to the list of groups the
        !           501: target user is in.
        !           502: The real and effective group IDs, however, are still set to match
        !           503: the target user.
        !           504: .It Fl p Ar prompt
        !           505: The
        !           506: .Fl p No ( Em prompt Ns No )
        !           507: option allows you to override the default password prompt and use
        !           508: a custom one.
        !           509: The following percent
        !           510: .Pq Ql %
        !           511: escapes are supported by the
        !           512: .Em sudoers
        !           513: policy:
        !           514: .Bl -tag -width 2n
        !           515: .It Li %H
        !           516: expanded to the host name including the domain name (on if the
        !           517: machine's host name is fully qualified or the
        !           518: .Em fqdn
        !           519: option is set in
        !           520: .Xr sudoers @mansectform@ )
        !           521: .It Li %h
        !           522: expanded to the local host name without the domain name
        !           523: .It Li %p
        !           524: expanded to the name of the user whose password is being requested
        !           525: (respects the
        !           526: .Em rootpw ,
        !           527: .Em targetpw ,
        !           528: and
        !           529: .Em runaspw
        !           530: flags in
        !           531: .Xr sudoers @mansectform@ )
        !           532: .It Li \&%U
        !           533: expanded to the login name of the user the command will be run as
        !           534: (defaults to root unless the
        !           535: .Fl u
        !           536: option is also specified)
        !           537: .It Li %u
        !           538: expanded to the invoking user's login name
        !           539: .It Li %%
        !           540: two consecutive
        !           541: .Ql %
        !           542: characters are collapsed into a single
        !           543: .Ql %
        !           544: character
        !           545: .El
        !           546: .Pp
        !           547: The prompt specified by the
        !           548: .Fl p
        !           549: option will override the system password prompt on systems that
        !           550: support PAM unless the
        !           551: .Em passprompt_override
        !           552: flag is disabled in
        !           553: .Em sudoers .
        !           554: .It Fl r Ar role
        !           555: The
        !           556: .Fl r No ( Em role Ns No )
        !           557: option causes the new (SELinux) security context to have the role
        !           558: specified by
        !           559: .Ar role .
        !           560: .It Fl S
        !           561: The
        !           562: .Fl S ( Em stdin Ns No )
        !           563: option causes
        !           564: .Nm sudo
        !           565: to read the password from the standard input instead of the terminal
        !           566: device.
        !           567: The password must be followed by a newline character.
        !           568: .It Fl s Op Ar command
        !           569: The
        !           570: .Fl s ( Em shell Ns No )
        !           571: option runs the shell specified by the
        !           572: .Ev SHELL
        !           573: environment variable if it is set or the shell as specified in the
        !           574: password database.
        !           575: If a command is specified, it is passed to the shell for execution
        !           576: via the shell's
        !           577: .Fl c
        !           578: option.
        !           579: If no command is specified, an interactive shell is executed.
        !           580: .It Fl t Ar type
        !           581: The
        !           582: .Fl t ( Em type Ns No )
        !           583: option causes the new (SELinux) security context to have the type
        !           584: specified by
        !           585: .Ar type .
        !           586: If no type is specified, the default type is derived from the
        !           587: specified role.
        !           588: .It Fl U Ar user
        !           589: The
        !           590: .Fl U ( Em other user Ns No )
        !           591: option is used in conjunction with the
        !           592: .Fl l
        !           593: option to specify the user whose privileges should be listed.
        !           594: The security policy may restrict listing other users' privileges.
        !           595: The
        !           596: .Em sudoers
        !           597: policy only allows root or a user with the
        !           598: .Li ALL
        !           599: privilege on the current host to use this option.
        !           600: .It Fl u Ar user
        !           601: The
        !           602: .Fl u ( Em user Ns No )
        !           603: option causes
        !           604: .Nm sudo
        !           605: to run the specified command as a user other than
        !           606: .Em root .
        !           607: To specify a
        !           608: .Em uid
        !           609: instead of a
        !           610: .Em user name ,
        !           611: .Em #uid .
        !           612: When running commands as a
        !           613: .Em uid ,
        !           614: many shells require that the
        !           615: .Ql #
        !           616: be escaped with a backslash
        !           617: .Pq Ql \e .
        !           618: Security policies may restrict
        !           619: .Em uid Ns No s
        !           620: to those listed in the password database.
        !           621: The
        !           622: .Em sudoers
        !           623: policy allows
        !           624: .Em uid Ns No s
        !           625: that are not in the password database as long as the
        !           626: .Em targetpw
        !           627: option is not set.
        !           628: Other security policies may not support this.
        !           629: .It Fl V
        !           630: The
        !           631: .Fl V ( Em version Ns No )
        !           632: option causes
        !           633: .Nm sudo
        !           634: to print its version string and the version string of the security
        !           635: policy plugin and any I/O plugins.
        !           636: If the invoking user is already root the
        !           637: .Fl V
        !           638: option will display the arguments passed to configure when
        !           639: .Nm sudo
        !           640: was built and plugins may display more verbose information such as
        !           641: default options.
        !           642: .It Fl v
        !           643: When given the
        !           644: .Fl v ( Em validate Ns No )
        !           645: option,
        !           646: .Nm sudo
        !           647: will update the user's cached credentials, authenticating the user's
        !           648: password if necessary.
        !           649: For the
        !           650: .Em sudoers
        !           651: plugin, this extends the
        !           652: .Nm sudo
        !           653: timeout for another
        !           654: .Li @timeout@
        !           655: minutes (or whatever the timeout is set to by the security policy)
        !           656: but does not run a command.
        !           657: Not all security policies support cached credentials.
        !           658: .It Fl -
        !           659: The
        !           660: .Fl -
        !           661: option indicates that
        !           662: .Nm sudo
        !           663: should stop processing command line arguments.
        !           664: .El
        !           665: .Pp
        !           666: Environment variables to be set for the command may also be passed
        !           667: on the command line in the form of
        !           668: .Sy VAR Ns No = Ns Em value ,
        !           669: e.g.\&
        !           670: .Sy LD_LIBRARY_PATH Ns No = Ns Em /usr/local/pkg/lib .
        !           671: Variables passed on the command line are subject to the same
        !           672: restrictions as normal environment variables with one important
        !           673: exception.
        !           674: If the
        !           675: .Em setenv
        !           676: option is set in
        !           677: .Em sudoers ,
        !           678: the command to be run has the
        !           679: .Li SETENV
        !           680: tag set or the command matched is
        !           681: .Li ALL ,
        !           682: the user may set variables that would otherwise be forbidden.
        !           683: See
        !           684: .Xr sudoers @mansectform@
        !           685: for more information.
        !           686: .Sh COMMAND EXECUTION
        !           687: When
        !           688: .Nm sudo
        !           689: executes a command, the security policy specifies the execution
        !           690: envionment for the command.
        !           691: Typically, the real and effective uid and gid are set to
        !           692: match those of the target user, as specified in the password database,
        !           693: and the group vector is initialized based on the group database
        !           694: (unless the
        !           695: .Fl P
        !           696: option was specified).
        !           697: .Pp
        !           698: The following parameters may be specified by security policy:
        !           699: .Bl -bullet
        !           700: .It
        !           701: real and effective user ID
        !           702: .It
        !           703: real and effective group ID
        !           704: .It
        !           705: supplementary group IDs
        !           706: .It
        !           707: the environment list
        !           708: .It
        !           709: current working directory
        !           710: .It
        !           711: file creation mode mask (umask)
        !           712: .It
        !           713: SELinux role and type
        !           714: .It
        !           715: Solaris project
        !           716: .It
        !           717: Solaris privileges
        !           718: .It
        !           719: BSD login class
        !           720: .It
        !           721: scheduling priority (aka nice value)
        !           722: .El
        !           723: .Ss Process model
        !           724: When
        !           725: .Nm sudo
        !           726: runs a command, it calls
        !           727: .Xr fork 2 ,
        !           728: sets up the execution environment as described above, and calls the 
        !           729: .Xr execve
        !           730: system call in the child process.
        !           731: The main
        !           732: .Nm sudo
        !           733: process waits until the command has completed, then passes the
        !           734: command's exit status to the security policy's close method and exits.
        !           735: If an I/O logging plugin is configured, a new  pseudo-terminal
        !           736: .Pq Dq pty
        !           737: is created and a second
        !           738: .Nm sudo
        !           739: process is used to relay job control signals between the user's
        !           740: existing pty and the new pty the command is being run in.
        !           741: This extra process makes it possible to, for example, suspend
        !           742: and resume the command.
        !           743: Without it, the command would be in what POSIX terms an
        !           744: .Dq orphaned process group
        !           745: and it would not receive any job control signals.
        !           746: .Ss Signal handling
        !           747: Because the command is run as a child of the
        !           748: .Nm sudo
        !           749: process,
        !           750: .Nm sudo
        !           751: will relay signals it receives to the command.
        !           752: Unless the command is being run in a new pty, the
        !           753: .Dv SIGHUP ,
        !           754: .Dv SIGINT
        !           755: and
        !           756: .Dv SIGQUIT
        !           757: signals are not relayed unless they are sent by a user process,
        !           758: not the kernel.
        !           759: Otherwise, the command would receive
        !           760: .Dv SIGINT
        !           761: twice every time the user entered control-C.
        !           762: Some signals, such as
        !           763: .Dv SIGSTOP
        !           764: and
        !           765: .Dv SIGKILL ,
        !           766: cannot be caught and thus will not be relayed to the command.
        !           767: As a general rule,
        !           768: .Dv SIGTSTP
        !           769: should be used instead of
        !           770: .Dv SIGSTOP
        !           771: when you wish to suspend a command being run by
        !           772: .Nm sudo .
        !           773: .Pp
        !           774: As a special case,
        !           775: .Nm sudo
        !           776: will not relay signals that were sent by the command it is running.
        !           777: This prevents the command from accidentally killing itself.
        !           778: On some systems, the
        !           779: .Xr reboot @mansectsu@
        !           780: command sends
        !           781: .Dv SIGTERM
        !           782: to all non-system processes other than itself before rebooting
        !           783: the systyem.
        !           784: This prevents
        !           785: .Nm sudo
        !           786: from relaying the
        !           787: .Dv SIGTERM
        !           788: signal it received back to
        !           789: .Xr reboot @mansectsu@ ,
        !           790: which might then exit before the system was actually rebooted,
        !           791: leaving it in a half-dead state similar to single user mode.
        !           792: Note, however, that this check only applies to the command run by
        !           793: .Nm sudo
        !           794: and not any other processes that the command may create.
        !           795: As a result, running a script that calls
        !           796: .Xr reboot @mansectsu@
        !           797: or
        !           798: .Xr shutdown @mansectsu@
        !           799: via
        !           800: .Nm sudo
        !           801: may cause the system to end up in this undefined state unless the
        !           802: .Xr reboot @mansectsu@
        !           803: or
        !           804: .Xr shutdown @mansectsu@
        !           805: are run using the
        !           806: .Fn exec
        !           807: family of functions instead of
        !           808: .Fn system
        !           809: (which interposes a shell between the command and the calling process).
        !           810: .Sh PLUGINS
        !           811: Plugins are dynamically loaded based on the contents of the
        !           812: .Pa @sysconfdir@/sudo.conf
        !           813: file.
        !           814: If no
        !           815: .Pa @sysconfdir@/sudo.conf
        !           816: file is present, or it contains no
        !           817: .Li Plugin
        !           818: lines,
        !           819: .Nm sudo
        !           820: will use the traditional
        !           821: .Em sudoers
        !           822: security policy and I/O logging, which corresponds to the following
        !           823: .Pa @sysconfdir@/sudo.conf
        !           824: file.
        !           825: .Bd -literal
        !           826: #
        !           827: # Default @sysconfdir@/sudo.conf file
        !           828: #
        !           829: # Format:
        !           830: #   Plugin plugin_name plugin_path plugin_options ...
        !           831: #   Path askpass /path/to/askpass
        !           832: #   Path noexec /path/to/sudo_noexec.so
        !           833: #   Debug sudo /var/log/sudo_debug all@warn
        !           834: #   Set disable_coredump true
        !           835: #
        !           836: # The plugin_path is relative to @prefix@/libexec unless
        !           837: #   fully qualified.
        !           838: # The plugin_name corresponds to a global symbol in the plugin
        !           839: #   that contains the plugin interface structure.
        !           840: # The plugin_options are optional.
        !           841: #
        !           842: Plugin policy_plugin sudoers.so
        !           843: Plugin io_plugin sudoers.so
        !           844: .Ed
        !           845: .Pp
        !           846: A
        !           847: .Li Plugin
        !           848: line consists of the
        !           849: .Li Plugin
        !           850: keyword, followed by the
        !           851: .Em symbol_name
        !           852: and the
        !           853: .Em path
        !           854: to the shared object containing the plugin.
        !           855: The
        !           856: .Em symbol_name
        !           857: is the name of the
        !           858: .Li struct policy_plugin
        !           859: or
        !           860: .Li struct io_plugin
        !           861: in the plugin shared object.
        !           862: The
        !           863: .Em path
        !           864: may be fully qualified or relative.
        !           865: If not fully qualified it is relative to the
        !           866: .Pa @prefix@/libexec
        !           867: directory.
        !           868: Any additional parameters after the
        !           869: .Em path
        !           870: are passed as arguments to the plugin's
        !           871: .Em open
        !           872: function.
        !           873: Lines that don't begin with
        !           874: .Li Plugin ,
        !           875: .Li Path ,
        !           876: .Li Debug ,
        !           877: or
        !           878: .Li Set
        !           879: are silently ignored.
        !           880: .Pp
        !           881: For more information, see the
        !           882: .Xr sudo_plugin @mansectsu@
        !           883: manual.
        !           884: .Sh PATHS
        !           885: A
        !           886: .Li Path
        !           887: line consists of the
        !           888: .Li Path
        !           889: keyword, followed by the name of the path to set and its value.
        !           890: E.g.
        !           891: .Bd -literal -offset indent
        !           892: Path noexec @noexec_file@
        !           893: Path askpass /usr/X11R6/bin/ssh-askpass
        !           894: .Ed
        !           895: .Pp
        !           896: The following plugin-agnostic paths may be set in the
        !           897: .Pa @sysconfdir@/sudo.conf
        !           898: file:
        !           899: .Bl -tag -width 8n
        !           900: .It askpass
        !           901: The fully qualified path to a helper program used to read the user's
        !           902: password when no terminal is available.
        !           903: This may be the case when
        !           904: .Nm sudo
        !           905: is executed from a graphical (as opposed to text-based) application.
        !           906: The program specified by
        !           907: .Em askpass
        !           908: should display the argument passed to it as the prompt and write
        !           909: the user's password to the standard output.
        !           910: The value of
        !           911: .Em askpass
        !           912: may be overridden by the
        !           913: .Ev SUDO_ASKPASS
        !           914: environment variable.
        !           915: .It noexec
        !           916: The fully-qualified path to a shared library containing dummy
        !           917: versions of the
        !           918: .Fn execv ,
        !           919: .Fn execve
        !           920: and
        !           921: .Fn fexecve
        !           922: library functions that just return an error.
        !           923: This is used to implement the
        !           924: .Em noexec
        !           925: functionality on systems that support
        !           926: .Ev LD_PRELOAD
        !           927: or its equivalent.
        !           928: Defaults to
        !           929: .Pa @noexec_file@ .
        !           930: .El
        !           931: .Sh DEBUG FLAGS
        !           932: .Nm sudo
        !           933: versions 1.8.4 and higher support a flexible debugging framework
        !           934: that can help track down what
        !           935: .Nm sudo
        !           936: is doing internally if there is a problem.
        !           937: .Pp
        !           938: A
        !           939: .Li Debug
        !           940: line consists of the
        !           941: .Li Debug
        !           942: keyword, followed by the name of the program to debug
        !           943: .Pq Nm sudo , Nm visudo , Nm sudoreplay ,
        !           944: the debug file name and a comma-separated list of debug flags.
        !           945: The debug flag syntax used by
        !           946: .Nm sudo
        !           947: and the
        !           948: .Em sudoers
        !           949: plugin is
        !           950: .Em subsystem Ns No @ Ns Em priority
        !           951: but the plugin is free to use a different format so long as it does
        !           952: not include a comma
        !           953: .Pq Ql \&, .
        !           954: .Pp
        !           955: For instance:
        !           956: .Bd -literal -offset indent
        !           957: Debug sudo /var/log/sudo_debug all@warn,plugin@info
        !           958: .Ed
        !           959: .Pp
        !           960: would log all debugging statements at the
        !           961: .Em warn
        !           962: level and higher in addition to those at the
        !           963: .Em info
        !           964: level for the plugin subsystem.
        !           965: .Pp
        !           966: Currently, only one
        !           967: .Li Debug
        !           968: entry per program is supported.
        !           969: The
        !           970: .Nm sudo
        !           971: .Li Debug
        !           972: entry is shared by the
        !           973: .Nm sudo
        !           974: front end,
        !           975: .Nm sudoedit
        !           976: and the plugins.
        !           977: A future release may add support for per-plugin
        !           978: .Li Debug
        !           979: lines and/or support for multiple debugging files for a single
        !           980: program.
        !           981: .Pp
        !           982: The priorities used by the
        !           983: .Nm sudo
        !           984: front end, in order of decreasing severity, are:
        !           985: .Em crit , err , warn , notice , diag , info , trace
        !           986: and
        !           987: .Em debug .
        !           988: Each priority, when specified, also includes all priorities higher
        !           989: than it.
        !           990: For example, a priority of
        !           991: .Em notice
        !           992: would include debug messages logged at
        !           993: .Em notice
        !           994: and higher.
        !           995: .Pp
        !           996: The following subsystems are used by the
        !           997: .Nm sudo
        !           998: front-end:
        !           999: .Bl -tag -width Fl
        !          1000: .It Em all
        !          1001: matches every subsystem
        !          1002: .It Em args
        !          1003: command line argument processing
        !          1004: .It Em conv
        !          1005: user conversation
        !          1006: .It Em edit
        !          1007: sudoedit
        !          1008: .It Em exec
        !          1009: command execution
        !          1010: .It Em main
        !          1011: .Nm sudo
        !          1012: main function
        !          1013: .It Em netif
        !          1014: network interface handling
        !          1015: .It Em pcomm
        !          1016: communication with the plugin
        !          1017: .It Em plugin
        !          1018: plugin configuration
        !          1019: .It Em pty
        !          1020: pseudo-tty related code
        !          1021: .It Em selinux
        !          1022: SELinux-specific handling
        !          1023: .It Em util
        !          1024: utility functions
        !          1025: .It Em utmp
        !          1026: utmp handling
        !          1027: .El
        !          1028: .Sh EXIT VALUE
        !          1029: Upon successful execution of a program, the exit status from
        !          1030: .Em sudo
        !          1031: will simply be the exit status of the program that was executed.
        !          1032: .Pp
        !          1033: Otherwise,
        !          1034: .Nm sudo
        !          1035: exits with a value of 1 if there is a configuration/permission
        !          1036: problem or if
        !          1037: .Nm sudo
        !          1038: cannot execute the given command.
        !          1039: In the latter case the error string is printed to the standard error.
        !          1040: If
        !          1041: .Nm sudo
        !          1042: cannot
        !          1043: .Xr stat 2
        !          1044: one or more entries in the user's
        !          1045: .Ev PATH ,
        !          1046: an error is printed on stderr.
        !          1047: (If the directory does not exist or if it is not really a directory,
        !          1048: the entry is ignored and no error is printed.)
        !          1049: This should not happen under normal circumstances.
        !          1050: The most common reason for
        !          1051: .Xr stat 2
        !          1052: to return
        !          1053: .Dq permission denied
        !          1054: is if you are running an automounter and one of the directories in
        !          1055: your
        !          1056: .Ev PATH
        !          1057: is on a machine that is currently unreachable.
        !          1058: .Sh SECURITY NOTES
        !          1059: .Nm sudo
        !          1060: tries to be safe when executing external commands.
        !          1061: .Pp
        !          1062: To prevent command spoofing,
        !          1063: .Nm sudo
        !          1064: checks "." and "" (both denoting current directory) last when
        !          1065: searching for a command in the user's
        !          1066: .Ev PATH
        !          1067: (if one or both are in the
        !          1068: .Ev PATH ) .
        !          1069: Note, however, that the actual
        !          1070: .Ev PATH
        !          1071: environment variable is
        !          1072: .Em not
        !          1073: modified and is passed unchanged to the program that
        !          1074: .Nm sudo
        !          1075: executes.
        !          1076: .Pp
        !          1077: Please note that
        !          1078: .Nm sudo
        !          1079: will normally only log the command it explicitly runs.
        !          1080: If a user runs a command such as
        !          1081: .Li sudo su
        !          1082: or
        !          1083: .Li sudo sh ,
        !          1084: subsequent commands run from that shell are not subject to
        !          1085: .Nm sudo Ns No 's
        !          1086: security policy.
        !          1087: The same is true for commands that offer shell escapes (including
        !          1088: most editors).
        !          1089: If I/O logging is enabled, subsequent commands will have their input and/or
        !          1090: output logged, but there will not be traditional logs for those commands.
        !          1091: Because of this, care must be taken when giving users access to commands via
        !          1092: .Nm sudo
        !          1093: to verify that the command does not inadvertently give the user an
        !          1094: effective root shell.
        !          1095: For more information, please see the
        !          1096: .Em PREVENTING SHELL ESCAPES
        !          1097: section in
        !          1098: .Xr sudoers @mansectform@ .
        !          1099: .Pp
        !          1100: To prevent the disclosure of potentially sensitive information,
        !          1101: .Nm sudo
        !          1102: disables core dumps by default while it is executing (they are
        !          1103: re-enabled for the command that is run).
        !          1104: To aid in debugging
        !          1105: .Nm sudo
        !          1106: crashes, you may wish to re-enable core dumps by setting
        !          1107: .Dq disable_coredump
        !          1108: to false in the
        !          1109: .Pa @sysconfdir@/sudo.conf
        !          1110: file as follows:
        !          1111: .Bd -literal -offset indent
        !          1112: Set disable_coredump false
        !          1113: .Ed
        !          1114: .Pp
        !          1115: Note that by default, most operating systems disable core dumps
        !          1116: from setuid programs, which includes
        !          1117: .Nm sudo .
        !          1118: To actually get a
        !          1119: .Nm sudo
        !          1120: core file you may need to enable core dumps for setuid processes.
        !          1121: On BSD and Linux systems this is accomplished via the sysctl command,
        !          1122: on Solaris the coreadm command can be used.
        !          1123: .Sh ENVIRONMENT
        !          1124: .Nm sudo
        !          1125: utilizes the following environment variables.
        !          1126: The security policy has control over the actual content of the command's
        !          1127: environment.
        !          1128: .Bl -tag -width 15n
        !          1129: .It Ev EDITOR
        !          1130: Default editor to use in
        !          1131: .Fl e
        !          1132: (sudoedit) mode if neither
        !          1133: .Ev SUDO_EDITOR
        !          1134: nor
        !          1135: .Ev VISUAL
        !          1136: is set.
        !          1137: .It Ev MAIL
        !          1138: In
        !          1139: .Fl i
        !          1140: mode or when
        !          1141: .Em env_reset
        !          1142: is enabled in
        !          1143: .Em sudoers ,
        !          1144: set to the mail spool of the target user.
        !          1145: .It Ev HOME
        !          1146: Set to the home directory of the target user if
        !          1147: .Fl i
        !          1148: or
        !          1149: .Fl H
        !          1150: are specified,
        !          1151: .Em env_reset
        !          1152: or
        !          1153: .Em always_set_home
        !          1154: are set in
        !          1155: .Em sudoers ,
        !          1156: or when the
        !          1157: .Fl s
        !          1158: option is specified and
        !          1159: .Em set_home
        !          1160: is set in
        !          1161: .Em sudoers .
        !          1162: .It Ev PATH
        !          1163: May be overridden by the security policy.
        !          1164: .It Ev SHELL
        !          1165: Used to determine shell to run with
        !          1166: .Fl s
        !          1167: option.
        !          1168: .It Ev SUDO_ASKPASS
        !          1169: Specifies the path to a helper program used to read the password
        !          1170: if no terminal is available or if the
        !          1171: .Fl A
        !          1172: option is specified.
        !          1173: .It Ev SUDO_COMMAND
        !          1174: Set to the command run by sudo.
        !          1175: .It Ev SUDO_EDITOR
        !          1176: Default editor to use in
        !          1177: .Fl e
        !          1178: (sudoedit) mode.
        !          1179: .It Ev SUDO_GID
        !          1180: Set to the group ID of the user who invoked sudo.
        !          1181: .It Ev SUDO_PROMPT
        !          1182: Used as the default password prompt.
        !          1183: .It Ev SUDO_PS1
        !          1184: If set,
        !          1185: .Ev PS1
        !          1186: will be set to its value for the program being run.
        !          1187: .It Ev SUDO_UID
        !          1188: Set to the user ID of the user who invoked sudo.
        !          1189: .It Ev SUDO_USER
        !          1190: Set to the login name of the user who invoked sudo.
        !          1191: .It Ev USER
        !          1192: Set to the target user (root unless the
        !          1193: .Fl u
        !          1194: option is specified).
        !          1195: .It Ev VISUAL
        !          1196: Default editor to use in
        !          1197: .Fl e
        !          1198: (sudoedit) mode if
        !          1199: .Ev SUDO_EDITOR
        !          1200: is not set.
        !          1201: .El
        !          1202: .Sh FILES
        !          1203: .Bl -tag -width 24n
        !          1204: .It Pa @sysconfdir@/sudo.conf
        !          1205: .Nm sudo
        !          1206: front end configuration
        !          1207: .El
        !          1208: .Sh EXAMPLES
        !          1209: Note: the following examples assume a properly configured security
        !          1210: policy.
        !          1211: .Pp
        !          1212: To get a file listing of an unreadable directory:
        !          1213: .Bd -literal -offset indent
        !          1214: $ sudo ls /usr/local/protected
        !          1215: .Ed
        !          1216: .Pp
        !          1217: To list the home directory of user yaz on a machine where the file
        !          1218: system holding ~yaz is not exported as root:
        !          1219: .Bd -literal -offset indent
        !          1220: $ sudo -u yaz ls ~yaz
        !          1221: .Ed
        !          1222: .Pp
        !          1223: To edit the
        !          1224: .Pa index.html
        !          1225: file as user www:
        !          1226: .Bd -literal -offset indent
        !          1227: $ sudo -u www vi ~www/htdocs/index.html
        !          1228: .Ed
        !          1229: .Pp
        !          1230: To view system logs only accessible to root and users in the adm
        !          1231: group:
        !          1232: .Bd -literal -offset indent
        !          1233: $ sudo -g adm view /var/log/syslog
        !          1234: .Ed
        !          1235: .Pp
        !          1236: To run an editor as jim with a different primary group:
        !          1237: .Bd -literal -offset indent
        !          1238: $ sudo -u jim -g audio vi ~jim/sound.txt
        !          1239: .Ed
        !          1240: .Pp
        !          1241: To shut down a machine:
        !          1242: .Bd -literal -offset indent
        !          1243: $ sudo shutdown -r +15 "quick reboot"
        !          1244: .Ed
        !          1245: .Pp
        !          1246: To make a usage listing of the directories in the /home partition.
        !          1247: Note that this runs the commands in a sub-shell to make the
        !          1248: .Li cd
        !          1249: and file redirection work.
        !          1250: .Bd -literal -offset indent
        !          1251: $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
        !          1252: .Ed
        !          1253: .Sh SEE ALSO
        !          1254: .Xr grep 1 ,
        !          1255: .Xr su 1 ,
        !          1256: .Xr stat 2 ,
        !          1257: .Xr login_cap 3 ,
        !          1258: .Xr passwd @mansectform@ ,
        !          1259: .Xr sudoers @mansectform@ ,
        !          1260: .Xr sudo_plugin @mansectsu@ ,
        !          1261: .Xr sudoreplay @mansectsu@ ,
        !          1262: .Xr visudo @mansectsu@
        !          1263: .Sh HISTORY
        !          1264: See the HISTORY file in the
        !          1265: .Nm sudo
        !          1266: distribution (http://www.sudo.ws/sudo/history.html) for a brief
        !          1267: history of sudo.
        !          1268: .Sh AUTHORS
        !          1269: Many people have worked on
        !          1270: .Nm sudo
        !          1271: over the years; this version consists of code written primarily by:
        !          1272: .Bd -ragged -offset indent
        !          1273: Todd C. Miller
        !          1274: .Ed
        !          1275: .Pp
        !          1276: See the CONTRIBUTORS file in the
        !          1277: .Nm sudo
        !          1278: distribution (http://www.sudo.ws/sudo/contributors.html) for an
        !          1279: exhaustive list of people who have contributed to
        !          1280: .Nm sudo .
        !          1281: .Sh CAVEATS
        !          1282: There is no easy way to prevent a user from gaining a root shell
        !          1283: if that user is allowed to run arbitrary commands via
        !          1284: .Nm sudo .
        !          1285: Also, many programs (such as editors) allow the user to run commands
        !          1286: via shell escapes, thus avoiding
        !          1287: .Nm sudo Ns No 's
        !          1288: checks.
        !          1289: However, on most systems it is possible to prevent shell escapes with the
        !          1290: .Xr sudoers @mansectform@
        !          1291: plugin's
        !          1292: .Em noexec
        !          1293: functionality.
        !          1294: .Pp
        !          1295: It is not meaningful to run the
        !          1296: .Li cd
        !          1297: command directly via sudo, e.g.,
        !          1298: .Bd -literal -offset indent
        !          1299: $ sudo cd /usr/local/protected
        !          1300: .Ed
        !          1301: .Pp
        !          1302: since when the command exits the parent process (your shell) will
        !          1303: still be the same.
        !          1304: Please see the
        !          1305: .Sx EXAMPLES
        !          1306: section for more information.
        !          1307: .Pp
        !          1308: Running shell scripts via
        !          1309: .Nm sudo
        !          1310: can expose the same kernel bugs that make setuid shell scripts
        !          1311: unsafe on some operating systems (if your OS has a /dev/fd/ directory,
        !          1312: setuid shell scripts are generally safe).
        !          1313: .Sh BUGS
        !          1314: If you feel you have found a bug in
        !          1315: .Nm sudo ,
        !          1316: please submit a bug report at http://www.sudo.ws/sudo/bugs/
        !          1317: .Sh SUPPORT
        !          1318: Limited free support is available via the sudo-users mailing list,
        !          1319: see http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
        !          1320: search the archives.
        !          1321: .Sh DISCLAIMER
        !          1322: .Nm sudo
        !          1323: is provided
        !          1324: .Dq AS IS
        !          1325: and any express or implied warranties, including, but not limited
        !          1326: to, the implied warranties of merchantability and fitness for a
        !          1327: particular purpose are disclaimed.
        !          1328: See the LICENSE file distributed with
        !          1329: .Nm sudo
        !          1330: or http://www.sudo.ws/sudo/license.html for complete details.

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