Annotation of embedaddon/sudo/doc/sudo.cat, revision 1.1.1.3

1.1.1.3 ! misho       1: SUDO(1m)                     System Manager's Manual                    SUDO(1m)
1.1       misho       2: 
                      3: NNAAMMEE
1.1.1.3 ! misho       4:      ssuuddoo, ssuuddooeeddiitt - execute a command as another user
1.1       misho       5: 
                      6: SSYYNNOOPPSSIISS
1.1.1.3 ! misho       7:      ssuuddoo --hh | --KK | --kk | --VV
        !             8:      ssuuddoo --vv [--AAkknnSS] [--aa _a_u_t_h___t_y_p_e] [--gg _g_r_o_u_p _n_a_m_e | _#_g_i_d] [--pp _p_r_o_m_p_t]
        !             9:           [--uu _u_s_e_r _n_a_m_e | _#_u_i_d]
        !            10:      ssuuddoo --ll[_l] [--AAkknnSS] [--aa _a_u_t_h___t_y_p_e] [--gg _g_r_o_u_p _n_a_m_e | _#_g_i_d] [--pp _p_r_o_m_p_t]
        !            11:           [--UU _u_s_e_r _n_a_m_e] [--uu _u_s_e_r _n_a_m_e | _#_u_i_d] [_c_o_m_m_a_n_d]
        !            12:      ssuuddoo [--AAbbEEHHnnPPSS] [--aa _a_u_t_h___t_y_p_e] [--CC _f_d] [--cc _c_l_a_s_s | _-]
        !            13:           [--gg _g_r_o_u_p _n_a_m_e | _#_g_i_d] [--pp _p_r_o_m_p_t] [--rr _r_o_l_e] [--tt _t_y_p_e]
        !            14:           [--uu _u_s_e_r _n_a_m_e | _#_u_i_d] [VVAARR=_v_a_l_u_e] --ii | --ss [_c_o_m_m_a_n_d]
        !            15:      ssuuddooeeddiitt [--AAnnSS] [--aa _a_u_t_h___t_y_p_e] [--CC _f_d] [--cc _c_l_a_s_s | _-]
        !            16:               [--gg _g_r_o_u_p _n_a_m_e | _#_g_i_d] [--pp _p_r_o_m_p_t] [--uu _u_s_e_r _n_a_m_e | _#_u_i_d] file
        !            17:               ...
1.1       misho      18: 
                     19: DDEESSCCRRIIPPTTIIOONN
1.1.1.3 ! misho      20:      ssuuddoo allows a permitted user to execute a _c_o_m_m_a_n_d as the superuser or
        !            21:      another user, as specified by the security policy.
        !            22: 
        !            23:      ssuuddoo supports a plugin architecture for security policies and
        !            24:      input/output logging.  Third parties can develop and distribute their own
        !            25:      policy and I/O logging plugins to work seamlessly with the ssuuddoo front
        !            26:      end.  The default security policy is _s_u_d_o_e_r_s, which is configured via the
        !            27:      file _/_e_t_c_/_s_u_d_o_e_r_s, or via LDAP.  See the _P_L_U_G_I_N_S section for more
        !            28:      information.
        !            29: 
        !            30:      The security policy determines what privileges, if any, a user has to run
        !            31:      ssuuddoo.  The policy may require that users authenticate themselves with a
        !            32:      password or another authentication mechanism.  If authentication is
        !            33:      required, ssuuddoo will exit if the user's password is not entered within a
        !            34:      configurable time limit.  This limit is policy-specific; the default
        !            35:      password prompt timeout for the _s_u_d_o_e_r_s security policy is 5 minutes.
        !            36: 
        !            37:      Security policies may support credential caching to allow the user to run
        !            38:      ssuuddoo again for a period of time without requiring authentication.  The
        !            39:      _s_u_d_o_e_r_s policy caches credentials for 5 minutes, unless overridden in
        !            40:      sudoers(4).  By running ssuuddoo with the --vv option, a user can update the
        !            41:      cached credentials without running a _c_o_m_m_a_n_d.
        !            42: 
        !            43:      When invoked as ssuuddooeeddiitt, the --ee option (described below), is implied.
        !            44: 
        !            45:      Security policies may log successful and failed attempts to use ssuuddoo.  If
        !            46:      an I/O plugin is configured, the running command's input and output may
        !            47:      be logged as well.
        !            48: 
        !            49:      The options are as follows:
        !            50: 
        !            51:      --AA          Normally, if ssuuddoo requires a password, it will read it from
        !            52:                  the user's terminal.  If the --AA (_a_s_k_p_a_s_s) option is
        !            53:                  specified, a (possibly graphical) helper program is executed
        !            54:                  to read the user's password and output the password to the
        !            55:                  standard output.  If the SUDO_ASKPASS environment variable is
        !            56:                  set, it specifies the path to the helper program.  Otherwise,
        !            57:                  if _/_e_t_c_/_s_u_d_o_._c_o_n_f contains a line specifying the askpass
        !            58:                  program, that value will be used.  For example:
        !            59: 
        !            60:                      # Path to askpass helper program
        !            61:                      Path askpass /usr/X11R6/bin/ssh-askpass
        !            62: 
        !            63:                  If no askpass program is available, ssuuddoo will exit with an
        !            64:                  error.
        !            65: 
        !            66:      --aa _t_y_p_e     The --aa (_a_u_t_h_e_n_t_i_c_a_t_i_o_n _t_y_p_e) option causes ssuuddoo to use the
        !            67:                  specified authentication type when validating the user, as
        !            68:                  allowed by _/_e_t_c_/_l_o_g_i_n_._c_o_n_f.  The system administrator may
        !            69:                  specify a list of sudo-specific authentication methods by
        !            70:                  adding an ``auth-sudo'' entry in _/_e_t_c_/_l_o_g_i_n_._c_o_n_f.  This
        !            71:                  option is only available on systems that support BSD
        !            72:                  authentication.
        !            73: 
        !            74:      --bb          The --bb (_b_a_c_k_g_r_o_u_n_d) option tells ssuuddoo to run the given
        !            75:                  command in the background.  Note that if you use the --bb
        !            76:                  option you cannot use shell job control to manipulate the
        !            77:                  process.  Most interactive commands will fail to work
        !            78:                  properly in background mode.
        !            79: 
        !            80:      --CC _f_d       Normally, ssuuddoo will close all open file descriptors other
        !            81:                  than standard input, standard output and standard error.  The
        !            82:                  --CC (_c_l_o_s_e _f_r_o_m) option allows the user to specify a starting
        !            83:                  point above the standard error (file descriptor three).
        !            84:                  Values less than three are not permitted.  The security
        !            85:                  policy may restrict the user's ability to use the --CC option.
        !            86:                  The _s_u_d_o_e_r_s policy only permits use of the --CC option when the
        !            87:                  administrator has enabled the _c_l_o_s_e_f_r_o_m___o_v_e_r_r_i_d_e option.
        !            88: 
        !            89:      --cc _c_l_a_s_s    The --cc (_c_l_a_s_s) option causes ssuuddoo to run the specified
        !            90:                  command with resources limited by the specified login class.
        !            91:                  The _c_l_a_s_s argument can be either a class name as defined in
        !            92:                  _/_e_t_c_/_l_o_g_i_n_._c_o_n_f, or a single `-' character.  Specifying a
        !            93:                  _c_l_a_s_s of - indicates that the command should be run
        !            94:                  restricted by the default login capabilities for the user the
        !            95:                  command is run as.  If the _c_l_a_s_s argument specifies an
        !            96:                  existing user class, the command must be run as root, or the
        !            97:                  ssuuddoo command must be run from a shell that is already root.
        !            98:                  This option is only available on systems with BSD login
        !            99:                  classes.
        !           100: 
        !           101:      --EE          The --EE (_p_r_e_s_e_r_v_e _e_n_v_i_r_o_n_m_e_n_t) option indicates to the
        !           102:                  security policy that the user wishes to preserve their
        !           103:                  existing environment variables.  The security policy may
        !           104:                  return an error if the --EE option is specified and the user
        !           105:                  does not have permission to preserve the environment.
        !           106: 
        !           107:      --ee          The --ee (_e_d_i_t) option indicates that, instead of running a
        !           108:                  command, the user wishes to edit one or more files.  In lieu
        !           109:                  of a command, the string "sudoedit" is used when consulting
        !           110:                  the security policy.  If the user is authorized by the
        !           111:                  policy, the following steps are taken:
1.1       misho     112: 
1.1.1.3 ! misho     113:                   1.   Temporary copies are made of the files to be edited
1.1       misho     114:                        with the owner set to the invoking user.
                    115: 
1.1.1.3 ! misho     116:                   2.   The editor specified by the policy is run to edit the
1.1       misho     117:                        temporary files.  The _s_u_d_o_e_r_s policy uses the
                    118:                        SUDO_EDITOR, VISUAL and EDITOR environment variables
                    119:                        (in that order).  If none of SUDO_EDITOR, VISUAL or
                    120:                        EDITOR are set, the first program listed in the _e_d_i_t_o_r
1.1.1.3 ! misho     121:                        sudoers(4) option is used.
1.1       misho     122: 
1.1.1.3 ! misho     123:                   3.   If they have been modified, the temporary files are
1.1       misho     124:                        copied back to their original location and the
                    125:                        temporary versions are removed.
                    126: 
1.1.1.3 ! misho     127:                  If the specified file does not exist, it will be created.
        !           128:                  Note that unlike most commands run by _s_u_d_o, the editor is run
        !           129:                  with the invoking user's environment unmodified.  If, for
        !           130:                  some reason, ssuuddoo is unable to update a file with its edited
        !           131:                  version, the user will receive a warning and the edited copy
        !           132:                  will remain in a temporary file.
        !           133: 
        !           134:      --gg _g_r_o_u_p    Normally, ssuuddoo runs a command with the primary group set to
        !           135:                  the one specified by the password database for the user the
        !           136:                  command is being run as (by default, root).  The --gg (_g_r_o_u_p)
        !           137:                  option causes ssuuddoo to run the command with the primary group
        !           138:                  set to _g_r_o_u_p instead.  To specify a _g_i_d instead of a _g_r_o_u_p
        !           139:                  _n_a_m_e, use _#_g_i_d.  When running commands as a _g_i_d, many shells
        !           140:                  require that the `#' be escaped with a backslash (`\').  If
        !           141:                  no --uu option is specified, the command will be run as the
        !           142:                  invoking user (not root).  In either case, the primary group
        !           143:                  will be set to _g_r_o_u_p.
        !           144: 
        !           145:      --HH          The --HH (_H_O_M_E) option requests that the security policy set
        !           146:                  the HOME environment variable to the home directory of the
        !           147:                  target user (root by default) as specified by the password
        !           148:                  database.  Depending on the policy, this may be the default
        !           149:                  behavior.
        !           150: 
        !           151:      --hh          The --hh (_h_e_l_p) option causes ssuuddoo to print a short help
        !           152:                  message to the standard output and exit.
        !           153: 
        !           154:      --ii [_c_o_m_m_a_n_d]
        !           155:                  The --ii (_s_i_m_u_l_a_t_e _i_n_i_t_i_a_l _l_o_g_i_n) option runs the shell
        !           156:                  specified by the password database entry of the target user
        !           157:                  as a login shell.  This means that login-specific resource
        !           158:                  files such as _._p_r_o_f_i_l_e or _._l_o_g_i_n will be read by the shell.
        !           159:                  If a command is specified, it is passed to the shell for
        !           160:                  execution via the shell's --cc option.  If no command is
        !           161:                  specified, an interactive shell is executed.  ssuuddoo attempts
        !           162:                  to change to that user's home directory before running the
        !           163:                  shell.  The security policy shall initialize the environment
        !           164:                  to a minimal set of variables, similar to what is present
        !           165:                  when a user logs in.  The _C_o_m_m_a_n_d _E_n_v_i_r_o_n_m_e_n_t section in the
        !           166:                  sudoers(4) manual documents how the --ii option affects the
        !           167:                  environment in which a command is run when the _s_u_d_o_e_r_s policy
        !           168:                  is in use.
        !           169: 
        !           170:      --KK          The --KK (sure _k_i_l_l) option is like --kk except that it removes
        !           171:                  the user's cached credentials entirely and may not be used in
        !           172:                  conjunction with a command or other option.  This option does
        !           173:                  not require a password.  Not all security policies support
        !           174:                  credential caching.
        !           175: 
        !           176:      --kk [_c_o_m_m_a_n_d]
        !           177:                  When used alone, the --kk (_k_i_l_l) option to ssuuddoo invalidates the
        !           178:                  user's cached credentials.  The next time ssuuddoo is run a
        !           179:                  password will be required.  This option does not require a
        !           180:                  password and was added to allow a user to revoke ssuuddoo
        !           181:                  permissions from a _._l_o_g_o_u_t file.  Not all security policies
        !           182:                  support credential caching.
        !           183: 
        !           184:                  When used in conjunction with a command or an option that may
        !           185:                  require a password, the --kk option will cause ssuuddoo to ignore
        !           186:                  the user's cached credentials.  As a result, ssuuddoo will prompt
        !           187:                  for a password (if one is required by the security policy)
        !           188:                  and will not update the user's cached credentials.
        !           189: 
        !           190:      --ll[ll] [_c_o_m_m_a_n_d]
        !           191:                  If no _c_o_m_m_a_n_d is specified, the --ll (_l_i_s_t) option will list
        !           192:                  the allowed (and forbidden) commands for the invoking user
        !           193:                  (or the user specified by the --UU option) on the current host.
        !           194:                  If a _c_o_m_m_a_n_d is specified and is permitted by the security
        !           195:                  policy, the fully-qualified path to the command is displayed
        !           196:                  along with any command line arguments.  If _c_o_m_m_a_n_d is
        !           197:                  specified but not allowed, ssuuddoo will exit with a status value
        !           198:                  of 1.  If the --ll option is specified with an _l argument (i.e.
        !           199:                  --llll), or if --ll is specified multiple times, a longer list
        !           200:                  format is used.
        !           201: 
        !           202:      --nn          The --nn (_n_o_n_-_i_n_t_e_r_a_c_t_i_v_e) option prevents ssuuddoo from prompting
        !           203:                  the user for a password.  If a password is required for the
        !           204:                  command to run, ssuuddoo will display an error message and exit.
        !           205: 
        !           206:      --PP          The --PP (_p_r_e_s_e_r_v_e _g_r_o_u_p _v_e_c_t_o_r) option causes ssuuddoo to preserve
        !           207:                  the invoking user's group vector unaltered.  By default, the
        !           208:                  _s_u_d_o_e_r_s policy will initialize the group vector to the list
        !           209:                  of groups the target user is in.  The real and effective
        !           210:                  group IDs, however, are still set to match the target user.
        !           211: 
        !           212:      --pp _p_r_o_m_p_t   The --pp (_p_r_o_m_p_t) option allows you to override the default
        !           213:                  password prompt and use a custom one.  The following percent
        !           214:                  (`%') escapes are supported by the _s_u_d_o_e_r_s policy:
        !           215: 
        !           216:                  %H  expanded to the host name including the domain name (on
        !           217:                      if the machine's host name is fully qualified or the _f_q_d_n
        !           218:                      option is set in sudoers(4))
        !           219: 
        !           220:                  %h  expanded to the local host name without the domain name
        !           221: 
        !           222:                  %p  expanded to the name of the user whose password is being
        !           223:                      requested (respects the _r_o_o_t_p_w, _t_a_r_g_e_t_p_w, and _r_u_n_a_s_p_w
        !           224:                      flags in sudoers(4))
        !           225: 
        !           226:                  %U  expanded to the login name of the user the command will
        !           227:                      be run as (defaults to root unless the --uu option is also
        !           228:                      specified)
        !           229: 
        !           230:                  %u  expanded to the invoking user's login name
        !           231: 
        !           232:                  %%  two consecutive `%' characters are collapsed into a
        !           233:                      single `%' character
        !           234: 
        !           235:                  The prompt specified by the --pp option will override the
        !           236:                  system password prompt on systems that support PAM unless the
        !           237:                  _p_a_s_s_p_r_o_m_p_t___o_v_e_r_r_i_d_e flag is disabled in _s_u_d_o_e_r_s.
        !           238: 
        !           239:      --rr _r_o_l_e     The --rr (_r_o_l_e) option causes the new (SELinux) security
        !           240:                  context to have the role specified by _r_o_l_e.
        !           241: 
        !           242:      --SS          The --SS (_s_t_d_i_n) option causes ssuuddoo to read the password from
        !           243:                  the standard input instead of the terminal device.  The
        !           244:                  password must be followed by a newline character.
        !           245: 
        !           246:      --ss [_c_o_m_m_a_n_d]
        !           247:                  The --ss (_s_h_e_l_l) option runs the shell specified by the SHELL
        !           248:                  environment variable if it is set or the shell as specified
        !           249:                  in the password database.  If a command is specified, it is
        !           250:                  passed to the shell for execution via the shell's --cc option.
        !           251:                  If no command is specified, an interactive shell is executed.
        !           252: 
        !           253:      --tt _t_y_p_e     The --tt (_t_y_p_e) option causes the new (SELinux) security
        !           254:                  context to have the type specified by _t_y_p_e.  If no type is
        !           255:                  specified, the default type is derived from the specified
        !           256:                  role.
        !           257: 
        !           258:      --UU _u_s_e_r     The --UU (_o_t_h_e_r _u_s_e_r) option is used in conjunction with the --ll
        !           259:                  option to specify the user whose privileges should be listed.
        !           260:                  The security policy may restrict listing other users'
        !           261:                  privileges.  The _s_u_d_o_e_r_s policy only allows root or a user
        !           262:                  with the ALL privilege on the current host to use this
        !           263:                  option.
        !           264: 
        !           265:      --uu _u_s_e_r     The --uu (_u_s_e_r) option causes ssuuddoo to run the specified command
        !           266:                  as a user other than _r_o_o_t.  To specify a _u_i_d instead of a
        !           267:                  _u_s_e_r _n_a_m_e, _#_u_i_d.  When running commands as a _u_i_d, many shells
        !           268:                  require that the `#' be escaped with a backslash (`\').
        !           269:                  Security policies may restrict _u_i_ds to those listed in the
        !           270:                  password database.  The _s_u_d_o_e_r_s policy allows _u_i_ds that are
        !           271:                  not in the password database as long as the _t_a_r_g_e_t_p_w option
        !           272:                  is not set.  Other security policies may not support this.
        !           273: 
        !           274:      --VV          The --VV (_v_e_r_s_i_o_n) option causes ssuuddoo to print its version
        !           275:                  string and the version string of the security policy plugin
        !           276:                  and any I/O plugins.  If the invoking user is already root
        !           277:                  the --VV option will display the arguments passed to configure
        !           278:                  when ssuuddoo was built and plugins may display more verbose
        !           279:                  information such as default options.
        !           280: 
        !           281:      --vv          When given the --vv (_v_a_l_i_d_a_t_e) option, ssuuddoo will update the
        !           282:                  user's cached credentials, authenticating the user's password
        !           283:                  if necessary.  For the _s_u_d_o_e_r_s plugin, this extends the ssuuddoo
        !           284:                  timeout for another 5 minutes (or whatever the timeout is set
        !           285:                  to by the security policy) but does not run a command.  Not
        !           286:                  all security policies support cached credentials.
        !           287: 
        !           288:      ----          The ---- option indicates that ssuuddoo should stop processing
        !           289:                  command line arguments.
        !           290: 
        !           291:      Environment variables to be set for the command may also be passed on the
        !           292:      command line in the form of VVAARR=_v_a_l_u_e, e.g.
        !           293:      LLDD__LLIIBBRRAARRYY__PPAATTHH=_/_u_s_r_/_l_o_c_a_l_/_p_k_g_/_l_i_b.  Variables passed on the command line
        !           294:      are subject to the same restrictions as normal environment variables with
        !           295:      one important exception.  If the _s_e_t_e_n_v option is set in _s_u_d_o_e_r_s, the
        !           296:      command to be run has the SETENV tag set or the command matched is ALL,
        !           297:      the user may set variables that would otherwise be forbidden.  See
        !           298:      sudoers(4) for more information.
        !           299: 
        !           300: CCOOMMMMAANNDD EEXXEECCUUTTIIOONN
        !           301:      When ssuuddoo executes a command, the security policy specifies the execution
        !           302:      envionment for the command.  Typically, the real and effective uid and
        !           303:      gid are set to match those of the target user, as specified in the
        !           304:      password database, and the group vector is initialized based on the group
        !           305:      database (unless the --PP option was specified).
        !           306: 
        !           307:      The following parameters may be specified by security policy:
        !           308: 
        !           309:      oo   real and effective user ID
        !           310: 
        !           311:      oo   real and effective group ID
        !           312: 
        !           313:      oo   supplementary group IDs
        !           314: 
        !           315:      oo   the environment list
        !           316: 
        !           317:      oo   current working directory
        !           318: 
        !           319:      oo   file creation mode mask (umask)
        !           320: 
        !           321:      oo   SELinux role and type
        !           322: 
        !           323:      oo   Solaris project
        !           324: 
        !           325:      oo   Solaris privileges
        !           326: 
        !           327:      oo   BSD login class
        !           328: 
        !           329:      oo   scheduling priority (aka nice value)
        !           330: 
        !           331:    PPrroocceessss mmooddeell
        !           332:      When ssuuddoo runs a command, it calls fork(2), sets up the execution
        !           333:      environment as described above, and calls the execve system call in the
        !           334:      child process.  The main ssuuddoo process waits until the command has
        !           335:      completed, then passes the command's exit status to the security policy's
        !           336:      close method and exits.  If an I/O logging plugin is configured, a new
        !           337:      pseudo-terminal (``pty'') is created and a second ssuuddoo process is used to
        !           338:      relay job control signals between the user's existing pty and the new pty
        !           339:      the command is being run in.  This extra process makes it possible to,
        !           340:      for example, suspend and resume the command.  Without it, the command
        !           341:      would be in what POSIX terms an ``orphaned process group'' and it would
        !           342:      not receive any job control signals.
        !           343: 
        !           344:    SSiiggnnaall hhaannddlliinngg
        !           345:      Because the command is run as a child of the ssuuddoo process, ssuuddoo will
        !           346:      relay signals it receives to the command.  Unless the command is being
        !           347:      run in a new pty, the SIGHUP, SIGINT and SIGQUIT signals are not relayed
        !           348:      unless they are sent by a user process, not the kernel.  Otherwise, the
        !           349:      command would receive SIGINT twice every time the user entered control-C.
        !           350:      Some signals, such as SIGSTOP and SIGKILL, cannot be caught and thus will
        !           351:      not be relayed to the command.  As a general rule, SIGTSTP should be used
        !           352:      instead of SIGSTOP when you wish to suspend a command being run by ssuuddoo.
        !           353: 
        !           354:      As a special case, ssuuddoo will not relay signals that were sent by the
        !           355:      command it is running.  This prevents the command from accidentally
        !           356:      killing itself.  On some systems, the reboot(1m) command sends SIGTERM to
        !           357:      all non-system processes other than itself before rebooting the systyem.
        !           358:      This prevents ssuuddoo from relaying the SIGTERM signal it received back to
        !           359:      reboot(1m), which might then exit before the system was actually rebooted,
        !           360:      leaving it in a half-dead state similar to single user mode.  Note,
        !           361:      however, that this check only applies to the command run by ssuuddoo and not
        !           362:      any other processes that the command may create.  As a result, running a
        !           363:      script that calls reboot(1m) or shutdown(1m) via ssuuddoo may cause the system
        !           364:      to end up in this undefined state unless the reboot(1m) or shutdown(1m) are
        !           365:      run using the eexxeecc() family of functions instead of ssyysstteemm() (which
        !           366:      interposes a shell between the command and the calling process).
1.1       misho     367: 
                    368: PPLLUUGGIINNSS
1.1.1.3 ! misho     369:      Plugins are dynamically loaded based on the contents of the
        !           370:      _/_e_t_c_/_s_u_d_o_._c_o_n_f file.  If no _/_e_t_c_/_s_u_d_o_._c_o_n_f file is present, or it
        !           371:      contains no Plugin lines, ssuuddoo will use the traditional _s_u_d_o_e_r_s security
        !           372:      policy and I/O logging, which corresponds to the following _/_e_t_c_/_s_u_d_o_._c_o_n_f
        !           373:      file.
        !           374: 
        !           375:      #
        !           376:      # Default /etc/sudo.conf file
        !           377:      #
        !           378:      # Format:
        !           379:      #   Plugin plugin_name plugin_path plugin_options ...
        !           380:      #   Path askpass /path/to/askpass
        !           381:      #   Path noexec /path/to/sudo_noexec.so
        !           382:      #   Debug sudo /var/log/sudo_debug all@warn
        !           383:      #   Set disable_coredump true
        !           384:      #
        !           385:      # The plugin_path is relative to /usr/local/libexec unless
        !           386:      #   fully qualified.
        !           387:      # The plugin_name corresponds to a global symbol in the plugin
        !           388:      #   that contains the plugin interface structure.
        !           389:      # The plugin_options are optional.
        !           390:      #
        !           391:      Plugin policy_plugin sudoers.so
        !           392:      Plugin io_plugin sudoers.so
        !           393: 
        !           394:      A Plugin line consists of the Plugin keyword, followed by the _s_y_m_b_o_l___n_a_m_e
        !           395:      and the _p_a_t_h to the shared object containing the plugin.  The _s_y_m_b_o_l___n_a_m_e
        !           396:      is the name of the struct policy_plugin or struct io_plugin in the plugin
        !           397:      shared object.  The _p_a_t_h may be fully qualified or relative.  If not
        !           398:      fully qualified it is relative to the _/_u_s_r_/_l_o_c_a_l_/_l_i_b_e_x_e_c directory.  Any
        !           399:      additional parameters after the _p_a_t_h are passed as arguments to the
        !           400:      plugin's _o_p_e_n function.  Lines that don't begin with Plugin, Path, Debug,
        !           401:      or Set are silently ignored.
1.1       misho     402: 
1.1.1.3 ! misho     403:      For more information, see the sudo_plugin(1m) manual.
1.1       misho     404: 
                    405: PPAATTHHSS
1.1.1.3 ! misho     406:      A Path line consists of the Path keyword, followed by the name of the
        !           407:      path to set and its value.  E.g.
1.1       misho     408: 
1.1.1.3 ! misho     409:            Path noexec /usr/local/libexec/sudo_noexec.so
        !           410:            Path askpass /usr/X11R6/bin/ssh-askpass
1.1       misho     411: 
1.1.1.3 ! misho     412:      The following plugin-agnostic paths may be set in the _/_e_t_c_/_s_u_d_o_._c_o_n_f
        !           413:      file:
1.1       misho     414: 
1.1.1.3 ! misho     415:      askpass   The fully qualified path to a helper program used to read the
        !           416:                user's password when no terminal is available.  This may be the
        !           417:                case when ssuuddoo is executed from a graphical (as opposed to
        !           418:                text-based) application.  The program specified by _a_s_k_p_a_s_s
        !           419:                should display the argument passed to it as the prompt and
        !           420:                write the user's password to the standard output.  The value of
        !           421:                _a_s_k_p_a_s_s may be overridden by the SUDO_ASKPASS environment
        !           422:                variable.
        !           423: 
        !           424:      noexec    The fully-qualified path to a shared library containing dummy
        !           425:                versions of the eexxeeccvv(), eexxeeccvvee() and ffeexxeeccvvee() library
        !           426:                functions that just return an error.  This is used to implement
        !           427:                the _n_o_e_x_e_c functionality on systems that support LD_PRELOAD or
        !           428:                its equivalent.  Defaults to _/_u_s_r_/_l_o_c_a_l_/_l_i_b_e_x_e_c_/_s_u_d_o___n_o_e_x_e_c_._s_o.
1.1       misho     429: 
1.1.1.2   misho     430: DDEEBBUUGG FFLLAAGGSS
1.1.1.3 ! misho     431:      ssuuddoo versions 1.8.4 and higher support a flexible debugging framework
        !           432:      that can help track down what ssuuddoo is doing internally if there is a
        !           433:      problem.
1.1.1.2   misho     434: 
1.1.1.3 ! misho     435:      A Debug line consists of the Debug keyword, followed by the name of the
        !           436:      program to debug (ssuuddoo, vviissuuddoo, ssuuddoorreeppllaayy), the debug file name and a
        !           437:      comma-separated list of debug flags.  The debug flag syntax used by ssuuddoo
        !           438:      and the _s_u_d_o_e_r_s plugin is _s_u_b_s_y_s_t_e_m@_p_r_i_o_r_i_t_y but the plugin is free to
        !           439:      use a different format so long as it does not include a comma (`,').
1.1.1.2   misho     440: 
1.1.1.3 ! misho     441:      For instance:
1.1.1.2   misho     442: 
1.1.1.3 ! misho     443:            Debug sudo /var/log/sudo_debug all@warn,plugin@info
1.1.1.2   misho     444: 
1.1.1.3 ! misho     445:      would log all debugging statements at the _w_a_r_n level and higher in
        !           446:      addition to those at the _i_n_f_o level for the plugin subsystem.
1.1.1.2   misho     447: 
1.1.1.3 ! misho     448:      Currently, only one Debug entry per program is supported.  The ssuuddoo Debug
        !           449:      entry is shared by the ssuuddoo front end, ssuuddooeeddiitt and the plugins.  A
        !           450:      future release may add support for per-plugin Debug lines and/or support
        !           451:      for multiple debugging files for a single program.
1.1.1.2   misho     452: 
1.1.1.3 ! misho     453:      The priorities used by the ssuuddoo front end, in order of decreasing
        !           454:      severity, are: _c_r_i_t, _e_r_r, _w_a_r_n, _n_o_t_i_c_e, _d_i_a_g, _i_n_f_o, _t_r_a_c_e and _d_e_b_u_g.
        !           455:      Each priority, when specified, also includes all priorities higher than
        !           456:      it.  For example, a priority of _n_o_t_i_c_e would include debug messages
        !           457:      logged at _n_o_t_i_c_e and higher.
1.1.1.2   misho     458: 
1.1.1.3 ! misho     459:      The following subsystems are used by the ssuuddoo front-end:
1.1.1.2   misho     460: 
1.1.1.3 ! misho     461:      _a_l_l         matches every subsystem
1.1.1.2   misho     462: 
1.1.1.3 ! misho     463:      _a_r_g_s        command line argument processing
1.1.1.2   misho     464: 
1.1.1.3 ! misho     465:      _c_o_n_v        user conversation
1.1.1.2   misho     466: 
1.1.1.3 ! misho     467:      _e_d_i_t        sudoedit
1.1.1.2   misho     468: 
1.1.1.3 ! misho     469:      _e_x_e_c        command execution
1.1.1.2   misho     470: 
1.1.1.3 ! misho     471:      _m_a_i_n        ssuuddoo main function
1.1.1.2   misho     472: 
1.1.1.3 ! misho     473:      _n_e_t_i_f       network interface handling
1.1.1.2   misho     474: 
1.1.1.3 ! misho     475:      _p_c_o_m_m       communication with the plugin
1.1.1.2   misho     476: 
1.1.1.3 ! misho     477:      _p_l_u_g_i_n      plugin configuration
1.1.1.2   misho     478: 
1.1.1.3 ! misho     479:      _p_t_y         pseudo-tty related code
1.1.1.2   misho     480: 
1.1.1.3 ! misho     481:      _s_e_l_i_n_u_x     SELinux-specific handling
1.1.1.2   misho     482: 
1.1.1.3 ! misho     483:      _u_t_i_l        utility functions
1.1.1.2   misho     484: 
1.1.1.3 ! misho     485:      _u_t_m_p        utmp handling
1.1.1.2   misho     486: 
1.1.1.3 ! misho     487: EEXXIITT VVAALLUUEE
        !           488:      Upon successful execution of a program, the exit status from _s_u_d_o will
        !           489:      simply be the exit status of the program that was executed.
1.1       misho     490: 
1.1.1.3 ! misho     491:      Otherwise, ssuuddoo exits with a value of 1 if there is a
        !           492:      configuration/permission problem or if ssuuddoo cannot execute the given
        !           493:      command.  In the latter case the error string is printed to the standard
        !           494:      error.  If ssuuddoo cannot stat(2) one or more entries in the user's PATH, an
        !           495:      error is printed on stderr.  (If the directory does not exist or if it is
        !           496:      not really a directory, the entry is ignored and no error is printed.)
        !           497:      This should not happen under normal circumstances.  The most common
        !           498:      reason for stat(2) to return ``permission denied'' is if you are running
        !           499:      an automounter and one of the directories in your PATH is on a machine
        !           500:      that is currently unreachable.
1.1       misho     501: 
                    502: SSEECCUURRIITTYY NNOOTTEESS
1.1.1.3 ! misho     503:      ssuuddoo tries to be safe when executing external commands.
1.1       misho     504: 
1.1.1.3 ! misho     505:      To prevent command spoofing, ssuuddoo checks "." and "" (both denoting
        !           506:      current directory) last when searching for a command in the user's PATH
        !           507:      (if one or both are in the PATH).  Note, however, that the actual PATH
        !           508:      environment variable is _n_o_t modified and is passed unchanged to the
        !           509:      program that ssuuddoo executes.
        !           510: 
        !           511:      Please note that ssuuddoo will normally only log the command it explicitly
        !           512:      runs.  If a user runs a command such as sudo su or sudo sh, subsequent
        !           513:      commands run from that shell are not subject to ssuuddoo's security policy.
        !           514:      The same is true for commands that offer shell escapes (including most
        !           515:      editors).  If I/O logging is enabled, subsequent commands will have their
        !           516:      input and/or output logged, but there will not be traditional logs for
        !           517:      those commands.  Because of this, care must be taken when giving users
        !           518:      access to commands via ssuuddoo to verify that the command does not
        !           519:      inadvertently give the user an effective root shell.  For more
        !           520:      information, please see the _P_R_E_V_E_N_T_I_N_G _S_H_E_L_L _E_S_C_A_P_E_S section in
        !           521:      sudoers(4).
        !           522: 
        !           523:      To prevent the disclosure of potentially sensitive information, ssuuddoo
        !           524:      disables core dumps by default while it is executing (they are re-enabled
        !           525:      for the command that is run).  To aid in debugging ssuuddoo crashes, you may
        !           526:      wish to re-enable core dumps by setting ``disable_coredump'' to false in
        !           527:      the _/_e_t_c_/_s_u_d_o_._c_o_n_f file as follows:
        !           528: 
        !           529:            Set disable_coredump false
        !           530: 
        !           531:      Note that by default, most operating systems disable core dumps from
        !           532:      setuid programs, which includes ssuuddoo.  To actually get a ssuuddoo core file
        !           533:      you may need to enable core dumps for setuid processes.  On BSD and Linux
        !           534:      systems this is accomplished via the sysctl command, on Solaris the
        !           535:      coreadm command can be used.
1.1.1.2   misho     536: 
1.1       misho     537: EENNVVIIRROONNMMEENNTT
1.1.1.3 ! misho     538:      ssuuddoo utilizes the following environment variables.  The security policy
        !           539:      has control over the actual content of the command's environment.
1.1       misho     540: 
1.1.1.3 ! misho     541:      EDITOR           Default editor to use in --ee (sudoedit) mode if neither
        !           542:                       SUDO_EDITOR nor VISUAL is set.
1.1       misho     543: 
1.1.1.3 ! misho     544:      MAIL             In --ii mode or when _e_n_v___r_e_s_e_t is enabled in _s_u_d_o_e_r_s, set
        !           545:                       to the mail spool of the target user.
1.1       misho     546: 
1.1.1.3 ! misho     547:      HOME             Set to the home directory of the target user if --ii or --HH
        !           548:                       are specified, _e_n_v___r_e_s_e_t or _a_l_w_a_y_s___s_e_t___h_o_m_e are set in
        !           549:                       _s_u_d_o_e_r_s, or when the --ss option is specified and _s_e_t___h_o_m_e
        !           550:                       is set in _s_u_d_o_e_r_s.
1.1       misho     551: 
1.1.1.3 ! misho     552:      PATH             May be overridden by the security policy.
1.1       misho     553: 
1.1.1.3 ! misho     554:      SHELL            Used to determine shell to run with --ss option.
1.1       misho     555: 
1.1.1.3 ! misho     556:      SUDO_ASKPASS     Specifies the path to a helper program used to read the
        !           557:                       password if no terminal is available or if the --AA option
        !           558:                       is specified.
1.1       misho     559: 
1.1.1.3 ! misho     560:      SUDO_COMMAND     Set to the command run by sudo.
1.1       misho     561: 
1.1.1.3 ! misho     562:      SUDO_EDITOR      Default editor to use in --ee (sudoedit) mode.
1.1       misho     563: 
1.1.1.3 ! misho     564:      SUDO_GID         Set to the group ID of the user who invoked sudo.
1.1       misho     565: 
1.1.1.3 ! misho     566:      SUDO_PROMPT      Used as the default password prompt.
1.1       misho     567: 
1.1.1.3 ! misho     568:      SUDO_PS1         If set, PS1 will be set to its value for the program
        !           569:                       being run.
1.1       misho     570: 
1.1.1.3 ! misho     571:      SUDO_UID         Set to the user ID of the user who invoked sudo.
1.1       misho     572: 
1.1.1.3 ! misho     573:      SUDO_USER        Set to the login name of the user who invoked sudo.
1.1       misho     574: 
1.1.1.3 ! misho     575:      USER             Set to the target user (root unless the --uu option is
        !           576:                       specified).
1.1       misho     577: 
1.1.1.3 ! misho     578:      VISUAL           Default editor to use in --ee (sudoedit) mode if
        !           579:                       SUDO_EDITOR is not set.
1.1       misho     580: 
                    581: FFIILLEESS
1.1.1.3 ! misho     582:      _/_e_t_c_/_s_u_d_o_._c_o_n_f            ssuuddoo front end configuration
1.1       misho     583: 
                    584: EEXXAAMMPPLLEESS
1.1.1.3 ! misho     585:      Note: the following examples assume a properly configured security
        !           586:      policy.
1.1       misho     587: 
1.1.1.3 ! misho     588:      To get a file listing of an unreadable directory:
1.1       misho     589: 
1.1.1.3 ! misho     590:            $ sudo ls /usr/local/protected
1.1       misho     591: 
1.1.1.3 ! misho     592:      To list the home directory of user yaz on a machine where the file system
        !           593:      holding ~yaz is not exported as root:
1.1       misho     594: 
1.1.1.3 ! misho     595:            $ sudo -u yaz ls ~yaz
1.1       misho     596: 
1.1.1.3 ! misho     597:      To edit the _i_n_d_e_x_._h_t_m_l file as user www:
1.1       misho     598: 
1.1.1.3 ! misho     599:            $ sudo -u www vi ~www/htdocs/index.html
1.1       misho     600: 
1.1.1.3 ! misho     601:      To view system logs only accessible to root and users in the adm group:
1.1       misho     602: 
1.1.1.3 ! misho     603:            $ sudo -g adm view /var/log/syslog
1.1       misho     604: 
1.1.1.3 ! misho     605:      To run an editor as jim with a different primary group:
1.1       misho     606: 
1.1.1.3 ! misho     607:            $ sudo -u jim -g audio vi ~jim/sound.txt
1.1       misho     608: 
1.1.1.3 ! misho     609:      To shut down a machine:
1.1       misho     610: 
1.1.1.3 ! misho     611:            $ sudo shutdown -r +15 "quick reboot"
1.1       misho     612: 
1.1.1.3 ! misho     613:      To make a usage listing of the directories in the /home partition.  Note
        !           614:      that this runs the commands in a sub-shell to make the cd and file
        !           615:      redirection work.
1.1       misho     616: 
1.1.1.3 ! misho     617:            $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
1.1       misho     618: 
                    619: SSEEEE AALLSSOO
1.1.1.3 ! misho     620:      grep(1), su(1), stat(2), login_cap(3), passwd(4), sudoers(4),
        !           621:      sudo_plugin(1m), sudoreplay(1m), visudo(1m)
1.1       misho     622: 
1.1.1.3 ! misho     623: HHIISSTTOORRYY
        !           624:      See the HISTORY file in the ssuuddoo distribution
        !           625:      (http://www.sudo.ws/sudo/history.html) for a brief history of sudo.
1.1       misho     626: 
1.1.1.3 ! misho     627: AAUUTTHHOORRSS
        !           628:      Many people have worked on ssuuddoo over the years; this version consists of
        !           629:      code written primarily by:
1.1       misho     630: 
1.1.1.3 ! misho     631:            Todd C. Miller
1.1.1.2   misho     632: 
1.1.1.3 ! misho     633:      See the CONTRIBUTORS file in the ssuuddoo distribution
        !           634:      (http://www.sudo.ws/sudo/contributors.html) for an exhaustive list of
        !           635:      people who have contributed to ssuuddoo.
1.1       misho     636: 
                    637: CCAAVVEEAATTSS
1.1.1.3 ! misho     638:      There is no easy way to prevent a user from gaining a root shell if that
        !           639:      user is allowed to run arbitrary commands via ssuuddoo.  Also, many programs
        !           640:      (such as editors) allow the user to run commands via shell escapes, thus
        !           641:      avoiding ssuuddoo's checks.  However, on most systems it is possible to
        !           642:      prevent shell escapes with the sudoers(4) plugin's _n_o_e_x_e_c functionality.
        !           643: 
        !           644:      It is not meaningful to run the cd command directly via sudo, e.g.,
        !           645: 
        !           646:            $ sudo cd /usr/local/protected
        !           647: 
        !           648:      since when the command exits the parent process (your shell) will still
        !           649:      be the same.  Please see the _E_X_A_M_P_L_E_S section for more information.
        !           650: 
        !           651:      Running shell scripts via ssuuddoo can expose the same kernel bugs that make
        !           652:      setuid shell scripts unsafe on some operating systems (if your OS has a
        !           653:      /dev/fd/ directory, setuid shell scripts are generally safe).
1.1       misho     654: 
                    655: BBUUGGSS
1.1.1.3 ! misho     656:      If you feel you have found a bug in ssuuddoo, please submit a bug report at
        !           657:      http://www.sudo.ws/sudo/bugs/
1.1       misho     658: 
                    659: SSUUPPPPOORRTT
1.1.1.3 ! misho     660:      Limited free support is available via the sudo-users mailing list, see
        !           661:      http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search the
        !           662:      archives.
1.1       misho     663: 
                    664: DDIISSCCLLAAIIMMEERR
1.1.1.3 ! misho     665:      ssuuddoo is provided ``AS IS'' and any express or implied warranties,
        !           666:      including, but not limited to, the implied warranties of merchantability
        !           667:      and fitness for a particular purpose are disclaimed.  See the LICENSE
        !           668:      file distributed with ssuuddoo or http://www.sudo.ws/sudo/license.html for
        !           669:      complete details.
1.1       misho     670: 
1.1.1.3 ! misho     671: Sudo 1.8.6                       July 10, 2012                      Sudo 1.8.6

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