Annotation of embedaddon/sudo/doc/sudoers.ldap.cat, revision 1.1.1.3
1.1.1.3 ! misho 1: SUDOERS.LDAP(1m) System Manager's Manual SUDOERS.LDAP(1m)
1.1 misho 2:
3: NNAAMMEE
1.1.1.3 ! misho 4: ssuuddooeerrss..llddaapp - sudo LDAP configuration
1.1 misho 5:
6: DDEESSCCRRIIPPTTIIOONN
1.1.1.3 ! misho 7: In addition to the standard _s_u_d_o_e_r_s file, ssuuddoo may be configured via
! 8: LDAP. This can be especially useful for synchronizing _s_u_d_o_e_r_s in a
! 9: large, distributed environment.
! 10:
! 11: Using LDAP for _s_u_d_o_e_r_s has several benefits:
! 12:
! 13: oo ssuuddoo no longer needs to read _s_u_d_o_e_r_s in its entirety. When LDAP is
! 14: used, there are only two or three LDAP queries per invocation. This
! 15: makes it especially fast and particularly usable in LDAP
! 16: environments.
! 17:
! 18: oo ssuuddoo no longer exits if there is a typo in _s_u_d_o_e_r_s. It is not
! 19: possible to load LDAP data into the server that does not conform to
! 20: the sudoers schema, so proper syntax is guaranteed. It is still
! 21: possible to have typos in a user or host name, but this will not
! 22: prevent ssuuddoo from running.
! 23:
! 24: oo It is possible to specify per-entry options that override the global
! 25: default options. _/_e_t_c_/_s_u_d_o_e_r_s only supports default options and
! 26: limited options associated with user/host/commands/aliases. The
! 27: syntax is complicated and can be difficult for users to understand.
! 28: Placing the options directly in the entry is more natural.
! 29:
! 30: oo The vviissuuddoo program is no longer needed. vviissuuddoo provides locking and
! 31: syntax checking of the _/_e_t_c_/_s_u_d_o_e_r_s file. Since LDAP updates are
! 32: atomic, locking is no longer necessary. Because syntax is checked
! 33: when the data is inserted into LDAP, there is no need for a
! 34: specialized tool to check syntax.
! 35:
! 36: Another major difference between LDAP and file-based _s_u_d_o_e_r_s is that in
! 37: LDAP, ssuuddoo-specific Aliases are not supported.
! 38:
! 39: For the most part, there is really no need for ssuuddoo-specific Aliases.
! 40: Unix groups or user netgroups can be used in place of User_Aliases and
! 41: Runas_Aliases. Host netgroups can be used in place of Host_Aliases.
! 42: Since Unix groups and netgroups can also be stored in LDAP there is no
! 43: real need for ssuuddoo-specific aliases.
! 44:
! 45: Cmnd_Aliases are not really required either since it is possible to have
! 46: multiple users listed in a sudoRole. Instead of defining a Cmnd_Alias
! 47: that is referenced by multiple users, one can create a sudoRole that
! 48: contains the commands and assign multiple users to it.
1.1 misho 49:
50: SSUUDDOOeerrss LLDDAAPP ccoonnttaaiinneerr
1.1.1.3 ! misho 51: The _s_u_d_o_e_r_s configuration is contained in the ou=SUDOers LDAP container.
1.1 misho 52:
1.1.1.3 ! misho 53: Sudo first looks for the cn=default entry in the SUDOers container. If
! 54: found, the multi-valued sudoOption attribute is parsed in the same manner
! 55: as a global Defaults line in _/_e_t_c_/_s_u_d_o_e_r_s. In the following example, the
! 56: SSH_AUTH_SOCK variable will be preserved in the environment for all
! 57: users.
! 58:
! 59: dn: cn=defaults,ou=SUDOers,dc=example,dc=com
! 60: objectClass: top
! 61: objectClass: sudoRole
! 62: cn: defaults
! 63: description: Default sudoOption's go here
! 64: sudoOption: env_keep+=SSH_AUTH_SOCK
! 65:
! 66: The equivalent of a sudoer in LDAP is a sudoRole. It consists of the
! 67: following attributes:
! 68:
! 69: ssuuddooUUsseerr
! 70: A user name, user ID (prefixed with `#'), Unix group (prefixed with
! 71: `%'), Unix group ID (prefixed with `%#'), or user netgroup
! 72: (prefixed with `+').
1.1 misho 73:
1.1.1.3 ! misho 74: ssuuddooHHoosstt
1.1 misho 75: A host name, IP address, IP network, or host netgroup (prefixed
1.1.1.3 ! misho 76: with a `+'). The special value ALL will match any host.
1.1 misho 77:
1.1.1.3 ! misho 78: ssuuddooCCoommmmaanndd
1.1 misho 79: A Unix command with optional command line arguments, potentially
80: including globbing characters (aka wild cards). The special value
81: ALL will match any command. If a command is prefixed with an
1.1.1.3 ! misho 82: exclamation point `!', the user will be prohibited from running
1.1 misho 83: that command.
84:
1.1.1.3 ! misho 85: ssuuddooOOppttiioonn
1.1 misho 86: Identical in function to the global options described above, but
87: specific to the sudoRole in which it resides.
88:
1.1.1.3 ! misho 89: ssuuddooRRuunnAAssUUsseerr
! 90: A user name or uid (prefixed with `#') that commands may be run as
! 91: or a Unix group (prefixed with a `%') or user netgroup (prefixed
! 92: with a `+') that contains a list of users that commands may be run
1.1 misho 93: as. The special value ALL will match any user.
94:
95: The sudoRunAsUser attribute is only available in ssuuddoo versions
96: 1.7.0 and higher. Older versions of ssuuddoo use the sudoRunAs
97: attribute instead.
98:
1.1.1.3 ! misho 99: ssuuddooRRuunnAAssGGrroouupp
! 100: A Unix group or gid (prefixed with `#') that commands may be run
1.1 misho 101: as. The special value ALL will match any group.
102:
103: The sudoRunAsGroup attribute is only available in ssuuddoo versions
104: 1.7.0 and higher.
105:
1.1.1.3 ! misho 106: ssuuddooNNoottBBeeffoorree
1.1 misho 107: A timestamp in the form yyyymmddHHMMSSZ that can be used to provide
108: a start date/time for when the sudoRole will be valid. If multiple
109: sudoNotBefore entries are present, the earliest is used. Note that
110: timestamps must be in Coordinated Universal Time (UTC), not the
111: local timezone. The minute and seconds portions are optional, but
112: some LDAP servers require that they be present (contrary to the
113: RFC).
114:
115: The sudoNotBefore attribute is only available in ssuuddoo versions
116: 1.7.5 and higher and must be explicitly enabled via the
117: SSUUDDOOEERRSS__TTIIMMEEDD option in _/_e_t_c_/_l_d_a_p_._c_o_n_f.
118:
1.1.1.3 ! misho 119: ssuuddooNNoottAAfftteerr
1.1 misho 120: A timestamp in the form yyyymmddHHMMSSZ that indicates an
121: expiration date/time, after which the sudoRole will no longer be
122: valid. If multiple sudoNotBefore entries are present, the last one
123: is used. Note that timestamps must be in Coordinated Universal
124: Time (UTC), not the local timezone. The minute and seconds
125: portions are optional, but some LDAP servers require that they be
126: present (contrary to the RFC).
127:
128: The sudoNotAfter attribute is only available in ssuuddoo versions 1.7.5
129: and higher and must be explicitly enabled via the SSUUDDOOEERRSS__TTIIMMEEDD
130: option in _/_e_t_c_/_l_d_a_p_._c_o_n_f.
131:
1.1.1.3 ! misho 132: ssuuddooOOrrddeerr
1.1 misho 133: The sudoRole entries retrieved from the LDAP directory have no
134: inherent order. The sudoOrder attribute is an integer (or floating
135: point value for LDAP servers that support it) that is used to sort
136: the matching entries. This allows LDAP-based sudoers entries to
137: more closely mimic the behaviour of the sudoers file, where the of
138: the entries influences the result. If multiple entries match, the
139: entry with the highest sudoOrder attribute is chosen. This
1.1.1.3 ! misho 140: corresponds to the ``last match'' behavior of the sudoers file. If
1.1 misho 141: the sudoOrder attribute is not present, a value of 0 is assumed.
142:
143: The sudoOrder attribute is only available in ssuuddoo versions 1.7.5
144: and higher.
145:
1.1.1.3 ! misho 146: Each attribute listed above should contain a single value, but there may
! 147: be multiple instances of each attribute type. A sudoRole must contain at
! 148: least one sudoUser, sudoHost and sudoCommand.
! 149:
! 150: The following example allows users in group wheel to run any command on
! 151: any host via ssuuddoo:
! 152:
! 153: dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
! 154: objectClass: top
! 155: objectClass: sudoRole
! 156: cn: %wheel
! 157: sudoUser: %wheel
! 158: sudoHost: ALL
! 159: sudoCommand: ALL
1.1 misho 160:
161: AAnnaattoommyy ooff LLDDAAPP ssuuddooeerrss llooookkuupp
1.1.1.3 ! misho 162: When looking up a sudoer using LDAP there are only two or three LDAP
! 163: queries per invocation. The first query is to parse the global options.
! 164: The second is to match against the user's name and the groups that the
! 165: user belongs to. (The special ALL tag is matched in this query too.) If
! 166: no match is returned for the user's name and groups, a third query
! 167: returns all entries containing user netgroups and checks to see if the
! 168: user belongs to any of them.
! 169:
! 170: If timed entries are enabled with the SSUUDDOOEERRSS__TTIIMMEEDD configuration
! 171: directive, the LDAP queries include a subfilter that limits retrieval to
! 172: entries that satisfy the time constraints, if any.
1.1 misho 173:
174: DDiiffffeerreenncceess bbeettwweeeenn LLDDAAPP aanndd nnoonn--LLDDAAPP ssuuddooeerrss
1.1.1.3 ! misho 175: There are some subtle differences in the way sudoers is handled once in
! 176: LDAP. Probably the biggest is that according to the RFC, LDAP ordering
! 177: is arbitrary and you cannot expect that Attributes and Entries are
! 178: returned in any specific order.
! 179:
! 180: The order in which different entries are applied can be controlled using
! 181: the sudoOrder attribute, but there is no way to guarantee the order of
! 182: attributes within a specific entry. If there are conflicting command
! 183: rules in an entry, the negative takes precedence. This is called
! 184: paranoid behavior (not necessarily the most specific match).
! 185:
! 186: Here is an example:
! 187:
! 188: # /etc/sudoers:
! 189: # Allow all commands except shell
! 190: johnny ALL=(root) ALL,!/bin/sh
! 191: # Always allows all commands because ALL is matched last
! 192: puddles ALL=(root) !/bin/sh,ALL
! 193:
! 194: # LDAP equivalent of johnny
! 195: # Allows all commands except shell
! 196: dn: cn=role1,ou=Sudoers,dc=my-domain,dc=com
! 197: objectClass: sudoRole
! 198: objectClass: top
! 199: cn: role1
! 200: sudoUser: johnny
! 201: sudoHost: ALL
! 202: sudoCommand: ALL
! 203: sudoCommand: !/bin/sh
! 204:
! 205: # LDAP equivalent of puddles
! 206: # Notice that even though ALL comes last, it still behaves like
! 207: # role1 since the LDAP code assumes the more paranoid configuration
! 208: dn: cn=role2,ou=Sudoers,dc=my-domain,dc=com
! 209: objectClass: sudoRole
! 210: objectClass: top
! 211: cn: role2
! 212: sudoUser: puddles
! 213: sudoHost: ALL
! 214: sudoCommand: !/bin/sh
! 215: sudoCommand: ALL
! 216:
! 217: Another difference is that negations on the Host, User or Runas are
! 218: currently ignored. For example, the following attributes do not behave
! 219: the way one might expect.
! 220:
! 221: # does not match all but joe
! 222: # rather, does not match anyone
! 223: sudoUser: !joe
! 224:
! 225: # does not match all but joe
! 226: # rather, matches everyone including Joe
! 227: sudoUser: ALL
! 228: sudoUser: !joe
! 229:
! 230: # does not match all but web01
! 231: # rather, matches all hosts including web01
! 232: sudoHost: ALL
! 233: sudoHost: !web01
! 234:
! 235: SSuuddooeerrss sscchheemmaa
! 236: In order to use ssuuddoo's LDAP support, the ssuuddoo schema must be installed on
! 237: your LDAP server. In addition, be sure to index the sudoUser attribute.
! 238:
! 239: Three versions of the schema: one for OpenLDAP servers (_s_c_h_e_m_a_._O_p_e_n_L_D_A_P),
! 240: one for Netscape-derived servers (_s_c_h_e_m_a_._i_P_l_a_n_e_t), and one for Microsoft
! 241: Active Directory (_s_c_h_e_m_a_._A_c_t_i_v_e_D_i_r_e_c_t_o_r_y) may be found in the ssuuddoo
! 242: distribution.
1.1 misho 243:
1.1.1.3 ! misho 244: The schema for ssuuddoo in OpenLDAP form is also included in the _E_X_A_M_P_L_E_S
! 245: section.
1.1 misho 246:
247: CCoonnffiigguurriinngg llddaapp..ccoonnff
1.1.1.3 ! misho 248: Sudo reads the _/_e_t_c_/_l_d_a_p_._c_o_n_f file for LDAP-specific configuration.
! 249: Typically, this file is shared amongst different LDAP-aware clients. As
! 250: such, most of the settings are not ssuuddoo-specific. Note that ssuuddoo parses
! 251: _/_e_t_c_/_l_d_a_p_._c_o_n_f itself and may support options that differ from those
! 252: described in the system's ldap.conf(1m) manual.
! 253:
! 254: Also note that on systems using the OpenLDAP libraries, default values
! 255: specified in _/_e_t_c_/_o_p_e_n_l_d_a_p_/_l_d_a_p_._c_o_n_f or the user's _._l_d_a_p_r_c files are not
! 256: used.
! 257:
! 258: Only those options explicitly listed in _/_e_t_c_/_l_d_a_p_._c_o_n_f as being supported
! 259: by ssuuddoo are honored. Configuration options are listed below in upper
! 260: case but are parsed in a case-independent manner.
1.1 misho 261:
1.1.1.3 ! misho 262: UURRII _l_d_a_p_[_s_]_:_/_/_[_h_o_s_t_n_a_m_e_[_:_p_o_r_t_]_] _._._.
1.1 misho 263: Specifies a whitespace-delimited list of one or more URIs
264: describing the LDAP server(s) to connect to. The _p_r_o_t_o_c_o_l may be
1.1.1.3 ! misho 265: either _l_d_a_p _l_d_a_p_s, the latter being for servers that support TLS
1.1 misho 266: (SSL) encryption. If no _p_o_r_t is specified, the default is port 389
267: for ldap:// or port 636 for ldaps://. If no _h_o_s_t_n_a_m_e is specified,
1.1.1.3 ! misho 268: ssuuddoo will connect to _l_o_c_a_l_h_o_s_t. Multiple UURRII lines are treated
1.1 misho 269: identically to a UURRII line containing multiple entries. Only
270: systems using the OpenSSL libraries support the mixing of ldap://
1.1.1.3 ! misho 271: and ldaps:// URIs. Both the Netscape-derived and Tivoli LDAP
! 272: libraries used on most commercial versions of Unix are only capable
! 273: of supporting one or the other.
1.1 misho 274:
1.1.1.3 ! misho 275: HHOOSSTT _n_a_m_e_[_:_p_o_r_t_] _._._.
1.1 misho 276: If no UURRII is specified, the HHOOSSTT parameter specifies a whitespace-
277: delimited list of LDAP servers to connect to. Each host may
1.1.1.3 ! misho 278: include an optional _p_o_r_t separated by a colon (`:'). The HHOOSSTT
1.1 misho 279: parameter is deprecated in favor of the UURRII specification and is
280: included for backwards compatibility.
281:
1.1.1.3 ! misho 282: PPOORRTT _p_o_r_t___n_u_m_b_e_r
1.1 misho 283: If no UURRII is specified, the PPOORRTT parameter specifies the default
284: port to connect to on the LDAP server if a HHOOSSTT parameter does not
285: specify the port itself. If no PPOORRTT parameter is used, the default
286: is port 389 for LDAP and port 636 for LDAP over TLS (SSL). The
287: PPOORRTT parameter is deprecated in favor of the UURRII specification and
288: is included for backwards compatibility.
289:
1.1.1.3 ! misho 290: BBIINNDD__TTIIMMEELLIIMMIITT _s_e_c_o_n_d_s
1.1 misho 291: The BBIINNDD__TTIIMMEELLIIMMIITT parameter specifies the amount of time, in
292: seconds, to wait while trying to connect to an LDAP server. If
293: multiple UURRIIs or HHOOSSTTs are specified, this is the amount of time to
294: wait before trying the next one in the list.
295:
1.1.1.3 ! misho 296: NNEETTWWOORRKK__TTIIMMEEOOUUTT _s_e_c_o_n_d_s
1.1 misho 297: An alias for BBIINNDD__TTIIMMEELLIIMMIITT for OpenLDAP compatibility.
298:
1.1.1.3 ! misho 299: TTIIMMEELLIIMMIITT _s_e_c_o_n_d_s
1.1 misho 300: The TTIIMMEELLIIMMIITT parameter specifies the amount of time, in seconds,
301: to wait for a response to an LDAP query.
302:
1.1.1.3 ! misho 303: TTIIMMEEOOUUTT _s_e_c_o_n_d_s
1.1 misho 304: The TTIIMMEEOOUUTT parameter specifies the amount of time, in seconds, to
305: wait for a response from the various LDAP APIs.
306:
1.1.1.3 ! misho 307: SSUUDDOOEERRSS__BBAASSEE _b_a_s_e
1.1 misho 308: The base DN to use when performing ssuuddoo LDAP queries. Typically
309: this is of the form ou=SUDOers,dc=example,dc=com for the domain
310: example.com. Multiple SSUUDDOOEERRSS__BBAASSEE lines may be specified, in
311: which case they are queried in the order specified.
312:
1.1.1.3 ! misho 313: SSUUDDOOEERRSS__SSEEAARRCCHH__FFIILLTTEERR _l_d_a_p___f_i_l_t_e_r
1.1 misho 314: An LDAP filter which is used to restrict the set of records
315: returned when performing a ssuuddoo LDAP query. Typically, this is of
316: the form attribute=value or
317: (&(attribute=value)(attribute2=value2)).
318:
1.1.1.3 ! misho 319: SSUUDDOOEERRSS__TTIIMMEEDD _o_n_/_t_r_u_e_/_y_e_s_/_o_f_f_/_f_a_l_s_e_/_n_o
1.1 misho 320: Whether or not to evaluate the sudoNotBefore and sudoNotAfter
321: attributes that implement time-dependent sudoers entries.
322:
1.1.1.3 ! misho 323: SSUUDDOOEERRSS__DDEEBBUUGG _d_e_b_u_g___l_e_v_e_l
1.1 misho 324: This sets the debug level for ssuuddoo LDAP queries. Debugging
325: information is printed to the standard error. A value of 1 results
326: in a moderate amount of debugging information. A value of 2 shows
327: the results of the matches themselves. This parameter should not
328: be set in a production environment as the extra information is
329: likely to confuse users.
330:
1.1.1.3 ! misho 331: BBIINNDDDDNN _D_N
1.1 misho 332: The BBIINNDDDDNN parameter specifies the identity, in the form of a
333: Distinguished Name (DN), to use when performing LDAP operations.
334: If not specified, LDAP operations are performed with an anonymous
335: identity. By default, most LDAP servers will allow anonymous
336: access.
337:
1.1.1.3 ! misho 338: BBIINNDDPPWW _s_e_c_r_e_t
1.1 misho 339: The BBIINNDDPPWW parameter specifies the password to use when performing
340: LDAP operations. This is typically used in conjunction with the
341: BBIINNDDDDNN parameter.
342:
1.1.1.3 ! misho 343: RROOOOTTBBIINNDDDDNN _D_N
1.1 misho 344: The RROOOOTTBBIINNDDDDNN parameter specifies the identity, in the form of a
345: Distinguished Name (DN), to use when performing privileged LDAP
346: operations, such as _s_u_d_o_e_r_s queries. The password corresponding to
347: the identity should be stored in _/_e_t_c_/_l_d_a_p_._s_e_c_r_e_t. If not
348: specified, the BBIINNDDDDNN identity is used (if any).
349:
1.1.1.3 ! misho 350: LLDDAAPP__VVEERRSSIIOONN _n_u_m_b_e_r
1.1 misho 351: The version of the LDAP protocol to use when connecting to the
352: server. The default value is protocol version 3.
353:
1.1.1.3 ! misho 354: SSSSLL _o_n_/_t_r_u_e_/_y_e_s_/_o_f_f_/_f_a_l_s_e_/_n_o
1.1 misho 355: If the SSSSLL parameter is set to on, true or yes, TLS (SSL)
356: encryption is always used when communicating with the LDAP server.
357: Typically, this involves connecting to the server on port 636
358: (ldaps).
359:
1.1.1.3 ! misho 360: SSSSLL _s_t_a_r_t___t_l_s
1.1 misho 361: If the SSSSLL parameter is set to start_tls, the LDAP server
362: connection is initiated normally and TLS encryption is begun before
363: the bind credentials are sent. This has the advantage of not
364: requiring a dedicated port for encrypted communications. This
365: parameter is only supported by LDAP servers that honor the
1.1.1.3 ! misho 366: _s_t_a_r_t___t_l_s extension, such as the OpenLDAP and Tivoli Directory
! 367: servers.
1.1 misho 368:
1.1.1.3 ! misho 369: TTLLSS__CCHHEECCKKPPEEEERR _o_n_/_t_r_u_e_/_y_e_s_/_o_f_f_/_f_a_l_s_e_/_n_o
1.1 misho 370: If enabled, TTLLSS__CCHHEECCKKPPEEEERR will cause the LDAP server's TLS
371: certificated to be verified. If the server's TLS certificate
372: cannot be verified (usually because it is signed by an unknown
373: certificate authority), ssuuddoo will be unable to connect to it. If
374: TTLLSS__CCHHEECCKKPPEEEERR is disabled, no check is made. Note that disabling
375: the check creates an opportunity for man-in-the-middle attacks
376: since the server's identity will not be authenticated. If
377: possible, the CA's certificate should be installed locally so it
1.1.1.3 ! misho 378: can be verified. This option is not supported by the Tivoli
! 379: Directory Server LDAP libraries.
1.1 misho 380:
1.1.1.3 ! misho 381: TTLLSS__CCAACCEERRTT _f_i_l_e _n_a_m_e
1.1 misho 382: An alias for TTLLSS__CCAACCEERRTTFFIILLEE for OpenLDAP compatibility.
383:
1.1.1.3 ! misho 384: TTLLSS__CCAACCEERRTTFFIILLEE _f_i_l_e _n_a_m_e
1.1 misho 385: The path to a certificate authority bundle which contains the
386: certificates for all the Certificate Authorities the client knows
387: to be valid, e.g. _/_e_t_c_/_s_s_l_/_c_a_-_b_u_n_d_l_e_._p_e_m. This option is only
388: supported by the OpenLDAP libraries. Netscape-derived LDAP
389: libraries use the same certificate database for CA and client
390: certificates (see TTLLSS__CCEERRTT).
391:
1.1.1.3 ! misho 392: TTLLSS__CCAACCEERRTTDDIIRR _d_i_r_e_c_t_o_r_y
1.1 misho 393: Similar to TTLLSS__CCAACCEERRTTFFIILLEE but instead of a file, it is a directory
394: containing individual Certificate Authority certificates, e.g.
395: _/_e_t_c_/_s_s_l_/_c_e_r_t_s. The directory specified by TTLLSS__CCAACCEERRTTDDIIRR is
396: checked after TTLLSS__CCAACCEERRTTFFIILLEE. This option is only supported by the
397: OpenLDAP libraries.
398:
1.1.1.3 ! misho 399: TTLLSS__CCEERRTT _f_i_l_e _n_a_m_e
1.1 misho 400: The path to a file containing the client certificate which can be
401: used to authenticate the client to the LDAP server. The
402: certificate type depends on the LDAP libraries used.
403:
404: OpenLDAP:
1.1.1.3 ! misho 405: tls_cert /etc/ssl/client_cert.pem
1.1 misho 406:
407: Netscape-derived:
1.1.1.3 ! misho 408: tls_cert /var/ldap/cert7.db
1.1 misho 409:
1.1.1.3 ! misho 410: Tivoli Directory Server:
! 411: Unused, the key database specified by TTLLSS__KKEEYY contains both
! 412: keys and certificates.
1.1 misho 413:
1.1.1.3 ! misho 414: When using Netscape-derived libraries, this file may also
! 415: contain Certificate Authority certificates.
! 416:
! 417: TTLLSS__KKEEYY _f_i_l_e _n_a_m_e
1.1 misho 418: The path to a file containing the private key which matches the
419: certificate specified by TTLLSS__CCEERRTT. The private key must not be
420: password-protected. The key type depends on the LDAP libraries
421: used.
422:
423: OpenLDAP:
1.1.1.3 ! misho 424: tls_key /etc/ssl/client_key.pem
1.1 misho 425:
426: Netscape-derived:
1.1.1.3 ! misho 427: tls_key /var/ldap/key3.db
! 428:
! 429: Tivoli Directory Server:
! 430: tls_cert /usr/ldap/ldapkey.kdb
! 431: When using Tivoli LDAP libraries, this file may also contain
! 432: Certificate Authority and client certificates and may be encrypted.
! 433:
! 434: TTLLSS__KKEEYYPPWW _s_e_c_r_e_t
! 435: The TTLLSS__KKEEYYPPWW contains the password used to decrypt the key
! 436: database on clients using the Tivoli Directory Server LDAP library.
! 437: If no TTLLSS__KKEEYYPPWW is specified, a _s_t_a_s_h _f_i_l_e will be used if it
! 438: exists. The _s_t_a_s_h _f_i_l_e must have the same path as the file
! 439: specified by TTLLSS__KKEEYY, but use a .sth file extension instead of
! 440: .kdb, e.g. ldapkey.sth. The default ldapkey.kdb that ships with
! 441: Tivoli Directory Server is encrypted with the password
! 442: ssl_password. This option is only supported by the Tivoli LDAP
! 443: libraries.
1.1 misho 444:
1.1.1.3 ! misho 445: TTLLSS__RRAANNDDFFIILLEE _f_i_l_e _n_a_m_e
1.1 misho 446: The TTLLSS__RRAANNDDFFIILLEE parameter specifies the path to an entropy source
447: for systems that lack a random device. It is generally used in
448: conjunction with _p_r_n_g_d or _e_g_d. This option is only supported by
449: the OpenLDAP libraries.
450:
1.1.1.3 ! misho 451: TTLLSS__CCIIPPHHEERRSS _c_i_p_h_e_r _l_i_s_t
1.1 misho 452: The TTLLSS__CCIIPPHHEERRSS parameter allows the administer to restrict which
453: encryption algorithms may be used for TLS (SSL) connections. See
1.1.1.3 ! misho 454: the OpenLDAP or Tivoli Directory Server manual for a list of valid
! 455: ciphers. This option is not supported by Netscape-derived
! 456: libraries.
1.1 misho 457:
1.1.1.3 ! misho 458: UUSSEE__SSAASSLL _o_n_/_t_r_u_e_/_y_e_s_/_o_f_f_/_f_a_l_s_e_/_n_o
1.1 misho 459: Enable UUSSEE__SSAASSLL for LDAP servers that support SASL authentication.
460:
1.1.1.3 ! misho 461: SSAASSLL__AAUUTTHH__IIDD _i_d_e_n_t_i_t_y
1.1 misho 462: The SASL user name to use when connecting to the LDAP server. By
463: default, ssuuddoo will use an anonymous connection.
464:
1.1.1.3 ! misho 465: RROOOOTTUUSSEE__SSAASSLL _o_n_/_t_r_u_e_/_y_e_s_/_o_f_f_/_f_a_l_s_e_/_n_o
1.1 misho 466: Enable RROOOOTTUUSSEE__SSAASSLL to enable SASL authentication when connecting
467: to an LDAP server from a privileged process, such as ssuuddoo.
468:
1.1.1.3 ! misho 469: RROOOOTTSSAASSLL__AAUUTTHH__IIDD _i_d_e_n_t_i_t_y
1.1 misho 470: The SASL user name to use when RROOOOTTUUSSEE__SSAASSLL is enabled.
471:
1.1.1.3 ! misho 472: SSAASSLL__SSEECCPPRROOPPSS _n_o_n_e_/_p_r_o_p_e_r_t_i_e_s
1.1 misho 473: SASL security properties or _n_o_n_e for no properties. See the SASL
474: programmer's manual for details.
475:
1.1.1.3 ! misho 476: KKRRBB55__CCCCNNAAMMEE _f_i_l_e _n_a_m_e
1.1 misho 477: The path to the Kerberos 5 credential cache to use when
478: authenticating with the remote server.
479:
1.1.1.3 ! misho 480: DDEERREEFF _n_e_v_e_r_/_s_e_a_r_c_h_i_n_g_/_f_i_n_d_i_n_g_/_a_l_w_a_y_s
1.1 misho 481: How alias dereferencing is to be performed when searching. See the
1.1.1.3 ! misho 482: ldap.conf(1m) manual for a full description of this option.
1.1 misho 483:
1.1.1.3 ! misho 484: See the _l_d_a_p_._c_o_n_f entry in the _E_X_A_M_P_L_E_S section.
1.1 misho 485:
486: CCoonnffiigguurriinngg nnsssswwiittcchh..ccoonnff
1.1.1.3 ! misho 487: Unless it is disabled at build time, ssuuddoo consults the Name Service
! 488: Switch file, _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f, to specify the _s_u_d_o_e_r_s search order.
! 489: Sudo looks for a line beginning with sudoers: and uses this to determine
! 490: the search order. Note that ssuuddoo does not stop searching after the first
! 491: match and later matches take precedence over earlier ones. The following
! 492: sources are recognized:
1.1 misho 493:
1.1.1.3 ! misho 494: files read sudoers from _/_e_t_c_/_s_u_d_o_e_r_s
! 495: ldap read sudoers from LDAP
1.1 misho 496:
1.1.1.3 ! misho 497: In addition, the entry [NOTFOUND=return] will short-circuit the search if
! 498: the user was not found in the preceding source.
1.1 misho 499:
1.1.1.3 ! misho 500: To consult LDAP first followed by the local sudoers file (if it exists),
! 501: use:
1.1 misho 502:
1.1.1.3 ! misho 503: sudoers: ldap files
1.1 misho 504:
1.1.1.3 ! misho 505: The local _s_u_d_o_e_r_s file can be ignored completely by using:
1.1 misho 506:
1.1.1.3 ! misho 507: sudoers: ldap
1.1 misho 508:
1.1.1.3 ! misho 509: If the _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f file is not present or there is no sudoers
! 510: line, the following default is assumed:
1.1 misho 511:
1.1.1.3 ! misho 512: sudoers: files
1.1 misho 513:
1.1.1.3 ! misho 514: Note that _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f is supported even when the underlying
! 515: operating system does not use an nsswitch.conf file, except on AIX (see
! 516: below).
1.1 misho 517:
518: CCoonnffiigguurriinngg nneettssvvcc..ccoonnff
1.1.1.3 ! misho 519: On AIX systems, the _/_e_t_c_/_n_e_t_s_v_c_._c_o_n_f file is consulted instead of
! 520: _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f. ssuuddoo simply treats _n_e_t_s_v_c_._c_o_n_f as a variant of
! 521: _n_s_s_w_i_t_c_h_._c_o_n_f; information in the previous section unrelated to the file
! 522: format itself still applies.
1.1 misho 523:
1.1.1.3 ! misho 524: To consult LDAP first followed by the local sudoers file (if it exists),
! 525: use:
1.1 misho 526:
1.1.1.3 ! misho 527: sudoers = ldap, files
1.1 misho 528:
1.1.1.3 ! misho 529: The local _s_u_d_o_e_r_s file can be ignored completely by using:
1.1 misho 530:
1.1.1.3 ! misho 531: sudoers = ldap
1.1 misho 532:
1.1.1.3 ! misho 533: To treat LDAP as authoratative and only use the local sudoers file if the
! 534: user is not present in LDAP, use:
1.1 misho 535:
1.1.1.3 ! misho 536: sudoers = ldap = auth, files
1.1 misho 537:
1.1.1.3 ! misho 538: Note that in the above example, the auth qualfier only affects user
! 539: lookups; both LDAP and _s_u_d_o_e_r_s will be queried for Defaults entries.
1.1 misho 540:
1.1.1.3 ! misho 541: If the _/_e_t_c_/_n_e_t_s_v_c_._c_o_n_f file is not present or there is no sudoers line,
! 542: the following default is assumed:
1.1 misho 543:
1.1.1.3 ! misho 544: sudoers = files
1.1 misho 545:
546: FFIILLEESS
1.1.1.3 ! misho 547: _/_e_t_c_/_l_d_a_p_._c_o_n_f LDAP configuration file
1.1 misho 548:
1.1.1.3 ! misho 549: _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f determines sudoers source order
1.1 misho 550:
1.1.1.3 ! misho 551: _/_e_t_c_/_n_e_t_s_v_c_._c_o_n_f determines sudoers source order on AIX
1.1 misho 552:
553: EEXXAAMMPPLLEESS
554: EExxaammppllee llddaapp..ccoonnff
1.1.1.3 ! misho 555: # Either specify one or more URIs or one or more host:port pairs.
! 556: # If neither is specified sudo will default to localhost, port 389.
! 557: #
! 558: #host ldapserver
! 559: #host ldapserver1 ldapserver2:390
! 560: #
! 561: # Default port if host is specified without one, defaults to 389.
! 562: #port 389
! 563: #
! 564: # URI will override the host and port settings.
! 565: uri ldap://ldapserver
! 566: #uri ldaps://secureldapserver
! 567: #uri ldaps://secureldapserver ldap://ldapserver
! 568: #
! 569: # The amount of time, in seconds, to wait while trying to connect to
! 570: # an LDAP server.
! 571: bind_timelimit 30
! 572: #
! 573: # The amount of time, in seconds, to wait while performing an LDAP query.
! 574: timelimit 30
! 575: #
! 576: # Must be set or sudo will ignore LDAP; may be specified multiple times.
! 577: sudoers_base ou=SUDOers,dc=example,dc=com
! 578: #
! 579: # verbose sudoers matching from ldap
! 580: #sudoers_debug 2
! 581: #
! 582: # Enable support for time-based entries in sudoers.
! 583: #sudoers_timed yes
! 584: #
! 585: # optional proxy credentials
! 586: #binddn <who to search as>
! 587: #bindpw <password>
! 588: #rootbinddn <who to search as, uses /etc/ldap.secret for bindpw>
! 589: #
! 590: # LDAP protocol version, defaults to 3
! 591: #ldap_version 3
! 592: #
! 593: # Define if you want to use an encrypted LDAP connection.
! 594: # Typically, you must also set the port to 636 (ldaps).
! 595: #ssl on
! 596: #
! 597: # Define if you want to use port 389 and switch to
! 598: # encryption before the bind credentials are sent.
! 599: # Only supported by LDAP servers that support the start_tls
! 600: # extension such as OpenLDAP.
! 601: #ssl start_tls
! 602: #
! 603: # Additional TLS options follow that allow tweaking of the
! 604: # SSL/TLS connection.
! 605: #
! 606: #tls_checkpeer yes # verify server SSL certificate
! 607: #tls_checkpeer no # ignore server SSL certificate
! 608: #
! 609: # If you enable tls_checkpeer, specify either tls_cacertfile
! 610: # or tls_cacertdir. Only supported when using OpenLDAP.
! 611: #
! 612: #tls_cacertfile /etc/certs/trusted_signers.pem
! 613: #tls_cacertdir /etc/certs
! 614: #
! 615: # For systems that don't have /dev/random
! 616: # use this along with PRNGD or EGD.pl to seed the
! 617: # random number pool to generate cryptographic session keys.
! 618: # Only supported when using OpenLDAP.
! 619: #
! 620: #tls_randfile /etc/egd-pool
! 621: #
! 622: # You may restrict which ciphers are used. Consult your SSL
! 623: # documentation for which options go here.
! 624: # Only supported when using OpenLDAP.
! 625: #
! 626: #tls_ciphers <cipher-list>
! 627: #
! 628: # Sudo can provide a client certificate when communicating to
! 629: # the LDAP server.
! 630: # Tips:
! 631: # * Enable both lines at the same time.
! 632: # * Do not password protect the key file.
! 633: # * Ensure the keyfile is only readable by root.
! 634: #
! 635: # For OpenLDAP:
! 636: #tls_cert /etc/certs/client_cert.pem
! 637: #tls_key /etc/certs/client_key.pem
! 638: #
! 639: # For SunONE or iPlanet LDAP, tls_cert and tls_key may specify either
! 640: # a directory, in which case the files in the directory must have the
! 641: # default names (e.g. cert8.db and key4.db), or the path to the cert
! 642: # and key files themselves. However, a bug in version 5.0 of the LDAP
! 643: # SDK will prevent specific file names from working. For this reason
! 644: # it is suggested that tls_cert and tls_key be set to a directory,
! 645: # not a file name.
! 646: #
! 647: # The certificate database specified by tls_cert may contain CA certs
! 648: # and/or the client's cert. If the client's cert is included, tls_key
! 649: # should be specified as well.
! 650: # For backward compatibility, "sslpath" may be used in place of tls_cert.
! 651: #tls_cert /var/ldap
! 652: #tls_key /var/ldap
! 653: #
! 654: # If using SASL authentication for LDAP (OpenSSL)
! 655: # use_sasl yes
! 656: # sasl_auth_id <SASL user name>
! 657: # rootuse_sasl yes
! 658: # rootsasl_auth_id <SASL user name for root access>
! 659: # sasl_secprops none
! 660: # krb5_ccname /etc/.ldapcache
1.1 misho 661:
662: SSuuddoo sscchheemmaa ffoorr OOppeennLLDDAAPP
1.1.1.3 ! misho 663: The following schema, in OpenLDAP format, is included with ssuuddoo source
! 664: and binary distributions as _s_c_h_e_m_a_._O_p_e_n_L_D_A_P. Simply copy it to the
! 665: schema directory (e.g. _/_e_t_c_/_o_p_e_n_l_d_a_p_/_s_c_h_e_m_a), add the proper include line
! 666: in _s_l_a_p_d_._c_o_n_f and restart ssllaappdd.
! 667:
! 668: attributetype ( 1.3.6.1.4.1.15953.9.1.1
! 669: NAME 'sudoUser'
! 670: DESC 'User(s) who may run sudo'
! 671: EQUALITY caseExactIA5Match
! 672: SUBSTR caseExactIA5SubstringsMatch
! 673: SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
! 674:
! 675: attributetype ( 1.3.6.1.4.1.15953.9.1.2
! 676: NAME 'sudoHost'
! 677: DESC 'Host(s) who may run sudo'
! 678: EQUALITY caseExactIA5Match
! 679: SUBSTR caseExactIA5SubstringsMatch
! 680: SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
! 681:
! 682: attributetype ( 1.3.6.1.4.1.15953.9.1.3
! 683: NAME 'sudoCommand'
! 684: DESC 'Command(s) to be executed by sudo'
! 685: EQUALITY caseExactIA5Match
! 686: SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
! 687:
! 688: attributetype ( 1.3.6.1.4.1.15953.9.1.4
! 689: NAME 'sudoRunAs'
! 690: DESC 'User(s) impersonated by sudo'
! 691: EQUALITY caseExactIA5Match
! 692: SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
! 693:
! 694: attributetype ( 1.3.6.1.4.1.15953.9.1.5
! 695: NAME 'sudoOption'
! 696: DESC 'Options(s) followed by sudo'
! 697: EQUALITY caseExactIA5Match
! 698: SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
! 699:
! 700: attributetype ( 1.3.6.1.4.1.15953.9.1.6
! 701: NAME 'sudoRunAsUser'
! 702: DESC 'User(s) impersonated by sudo'
! 703: EQUALITY caseExactIA5Match
! 704: SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
! 705:
! 706: attributetype ( 1.3.6.1.4.1.15953.9.1.7
! 707: NAME 'sudoRunAsGroup'
! 708: DESC 'Group(s) impersonated by sudo'
! 709: EQUALITY caseExactIA5Match
! 710: SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
! 711:
! 712: attributetype ( 1.3.6.1.4.1.15953.9.1.8
! 713: NAME 'sudoNotBefore'
! 714: DESC 'Start of time interval for which the entry is valid'
! 715: EQUALITY generalizedTimeMatch
! 716: ORDERING generalizedTimeOrderingMatch
! 717: SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
! 718:
! 719: attributetype ( 1.3.6.1.4.1.15953.9.1.9
! 720: NAME 'sudoNotAfter'
! 721: DESC 'End of time interval for which the entry is valid'
! 722: EQUALITY generalizedTimeMatch
! 723: ORDERING generalizedTimeOrderingMatch
! 724: SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
! 725:
! 726: attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
! 727: NAME 'sudoOrder'
! 728: DESC 'an integer to order the sudoRole entries'
! 729: EQUALITY integerMatch
! 730: ORDERING integerOrderingMatch
! 731: SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
! 732:
! 733: objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
! 734: DESC 'Sudoer Entries'
! 735: MUST ( cn )
! 736: MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
! 737: sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
! 738: sudoOrder $ description )
! 739: )
1.1 misho 740:
741: SSEEEE AALLSSOO
1.1.1.3 ! misho 742: ldap.conf(1m), sudoers(1m)
1.1 misho 743:
744: CCAAVVEEAATTSS
1.1.1.3 ! misho 745: Note that there are differences in the way that LDAP-based _s_u_d_o_e_r_s is
! 746: parsed compared to file-based _s_u_d_o_e_r_s. See the _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _L_D_A_P
! 747: _a_n_d _n_o_n_-_L_D_A_P _s_u_d_o_e_r_s section for more information.
1.1 misho 748:
749: BBUUGGSS
1.1.1.3 ! misho 750: If you feel you have found a bug in ssuuddoo, please submit a bug report at
! 751: http://www.sudo.ws/sudo/bugs/
1.1 misho 752:
753: SSUUPPPPOORRTT
1.1.1.3 ! misho 754: Limited free support is available via the sudo-users mailing list, see
! 755: http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search the
! 756: archives.
1.1 misho 757:
758: DDIISSCCLLAAIIMMEERR
1.1.1.3 ! misho 759: ssuuddoo is provided ``AS IS'' and any express or implied warranties,
! 760: including, but not limited to, the implied warranties of merchantability
! 761: and fitness for a particular purpose are disclaimed. See the LICENSE
! 762: file distributed with ssuuddoo or http://www.sudo.ws/sudo/license.html for
! 763: complete details.
1.1 misho 764:
1.1.1.3 ! misho 765: Sudo 1.8.6 July 12, 2012 Sudo 1.8.6
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>