patch for only using selinux on Linux, prepare to upload
[debian/sudo] / doc / sudoers.ldap.cat
1 SUDOERS.LDAP(4)              MAINTENANCE COMMANDS              SUDOERS.LDAP(4)
2
3
4
5 N\bNA\bAM\bME\bE
6        sudoers.ldap - sudo LDAP configuration
7
8 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
9        In addition to the standard _\bs_\bu_\bd_\bo_\be_\br_\bs file, s\bsu\bud\bdo\bo may be configured via
10        LDAP.  This can be especially useful for synchronizing _\bs_\bu_\bd_\bo_\be_\br_\bs in a
11        large, distributed environment.
12
13        Using LDAP for _\bs_\bu_\bd_\bo_\be_\br_\bs has several benefits:
14
15        +\bo   s\bsu\bud\bdo\bo no longer needs to read _\bs_\bu_\bd_\bo_\be_\br_\bs in its entirety.  When LDAP is
16            used, there are only two or three LDAP queries per invocation.
17            This makes it especially fast and particularly usable in LDAP
18            environments.
19
20        +\bo   s\bsu\bud\bdo\bo no longer exits if there is a typo in _\bs_\bu_\bd_\bo_\be_\br_\bs.  It is not
21            possible to load LDAP data into the server that does not conform to
22            the sudoers schema, so proper syntax is guaranteed.  It is still
23            possible to have typos in a user or host name, but this will not
24            prevent s\bsu\bud\bdo\bo from running.
25
26        +\bo   It is possible to specify per-entry options that override the
27            global default options.  _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs only supports default options
28            and limited options associated with user/host/commands/aliases.
29            The syntax is complicated and can be difficult for users to
30            understand.  Placing the options directly in the entry is more
31            natural.
32
33        +\bo   The v\bvi\bis\bsu\bud\bdo\bo program is no longer needed.  v\bvi\bis\bsu\bud\bdo\bo provides locking
34            and syntax checking of the _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs file.  Since LDAP updates
35            are atomic, locking is no longer necessary.  Because syntax is
36            checked when the data is inserted into LDAP, there is no need for a
37            specialized tool to check syntax.
38
39        Another major difference between LDAP and file-based _\bs_\bu_\bd_\bo_\be_\br_\bs is that in
40        LDAP, s\bsu\bud\bdo\bo-specific Aliases are not supported.
41
42        For the most part, there is really no need for s\bsu\bud\bdo\bo-specific Aliases.
43        Unix groups or user netgroups can be used in place of User_Aliases and
44        Runas_Aliases.  Host netgroups can be used in place of Host_Aliases.
45        Since Unix groups and netgroups can also be stored in LDAP there is no
46        real need for s\bsu\bud\bdo\bo-specific aliases.
47
48        Cmnd_Aliases are not really required either since it is possible to
49        have multiple users listed in a sudoRole.  Instead of defining a
50        Cmnd_Alias that is referenced by multiple users, one can create a
51        sudoRole that contains the commands and assign multiple users to it.
52
53    S\bSU\bUD\bDO\bOe\ber\brs\bs L\bLD\bDA\bAP\bP c\bco\bon\bnt\bta\bai\bin\bne\ber\br
54        The _\bs_\bu_\bd_\bo_\be_\br_\bs configuration is contained in the ou=SUDOers LDAP
55        container.
56
57        Sudo first looks for the cn=default entry in the SUDOers container.  If
58        found, the multi-valued sudoOption attribute is parsed in the same
59        manner as a global Defaults line in _\b/_\be_\bt_\bc_\b/_\bs_\bu_\bd_\bo_\be_\br_\bs.  In the following
60        example, the SSH_AUTH_SOCK variable will be preserved in the
61        environment for all users.
62
63            dn: cn=defaults,ou=SUDOers,dc=example,dc=com
64            objectClass: top
65            objectClass: sudoRole
66            cn: defaults
67            description: Default sudoOption's go here
68            sudoOption: env_keep+=SSH_AUTH_SOCK
69
70        The equivalent of a sudoer in LDAP is a sudoRole.  It consists of the
71        following attributes:
72
73        s\bsu\bud\bdo\boU\bUs\bse\ber\br
74            A user name, uid (prefixed with '#'), Unix group (prefixed with a
75            '%') or user netgroup (prefixed with a '+').
76
77        s\bsu\bud\bdo\boH\bHo\bos\bst\bt
78            A host name, IP address, IP network, or host netgroup (prefixed
79            with a '+').  The special value ALL will match any host.
80
81        s\bsu\bud\bdo\boC\bCo\bom\bmm\bma\ban\bnd\bd
82            A Unix command with optional command line arguments, potentially
83            including globbing characters (aka wild cards).  The special value
84            ALL will match any command.  If a command is prefixed with an
85            exclamation point '!', the user will be prohibited from running
86            that command.
87
88        s\bsu\bud\bdo\boO\bOp\bpt\bti\bio\bon\bn
89            Identical in function to the global options described above, but
90            specific to the sudoRole in which it resides.
91
92        s\bsu\bud\bdo\boR\bRu\bun\bnA\bAs\bsU\bUs\bse\ber\br
93            A user name or uid (prefixed with '#') that commands may be run as
94            or a Unix group (prefixed with a '%') or user netgroup (prefixed
95            with a '+') that contains a list of users that commands may be run
96            as.  The special value ALL will match any user.
97
98            The sudoRunAsUser attribute is only available in s\bsu\bud\bdo\bo versions
99            1.7.0 and higher.  Older versions of s\bsu\bud\bdo\bo use the sudoRunAs
100            attribute instead.
101
102        s\bsu\bud\bdo\boR\bRu\bun\bnA\bAs\bsG\bGr\bro\bou\bup\bp
103            A Unix group or gid (prefixed with '#') that commands may be run
104            as.  The special value ALL will match any group.
105
106            The sudoRunAsGroup attribute is only available in s\bsu\bud\bdo\bo versions
107            1.7.0 and higher.
108
109        s\bsu\bud\bdo\boN\bNo\bot\btB\bBe\bef\bfo\bor\bre\be
110            A timestamp in the form yyyymmddHHMMSSZ that can be used to provide
111            a start date/time for when the sudoRole will be valid.  If multiple
112            sudoNotBefore entries are present, the earliest is used.  Note that
113            timestamps must be in Coordinated Universal Time (UTC), not the
114            local timezone.  The minute and seconds portions are optional, but
115            some LDAP servers require that they be present (contrary to the
116            RFC).
117
118            The sudoNotBefore attribute is only available in s\bsu\bud\bdo\bo versions
119            1.7.5 and higher and must be explicitly enabled via the
120            S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_T\bTI\bIM\bME\bED\bD option in _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf.
121
122        s\bsu\bud\bdo\boN\bNo\bot\btA\bAf\bft\bte\ber\br
123            A timestamp in the form yyyymmddHHMMSSZ that indicates an
124            expiration date/time, after which the sudoRole will no longer be
125            valid.  If multiple sudoNotBefore entries are present, the last one
126            is used.  Note that timestamps must be in Coordinated Universal
127            Time (UTC), not the local timezone.  The minute and seconds
128            portions are optional, but some LDAP servers require that they be
129            present (contrary to the RFC).
130
131            The sudoNotAfter attribute is only available in s\bsu\bud\bdo\bo versions 1.7.5
132            and higher and must be explicitly enabled via the S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_T\bTI\bIM\bME\bED\bD
133            option in _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf.
134
135        s\bsu\bud\bdo\boO\bOr\brd\bde\ber\br
136            The sudoRole entries retrieved from the LDAP directory have no
137            inherent order.  The sudoOrder attribute is an integer (or floating
138            point value for LDAP servers that support it) that is used to sort
139            the matching entries.  This allows LDAP-based sudoers entries to
140            more closely mimic the behaviour of the sudoers file, where the of
141            the entries influences the result.  If multiple entries match, the
142            entry with the highest sudoOrder attribute is chosen.  This
143            corresponds to the "last match" behavior of the sudoers file.  If
144            the sudoOrder attribute is not present, a value of 0 is assumed.
145
146            The sudoOrder attribute is only available in s\bsu\bud\bdo\bo versions 1.7.5
147            and higher.
148
149        Each attribute listed above should contain a single value, but there
150        may be multiple instances of each attribute type.  A sudoRole must
151        contain at least one sudoUser, sudoHost and sudoCommand.
152
153        The following example allows users in group wheel to run any command on
154        any host via s\bsu\bud\bdo\bo:
155
156            dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
157            objectClass: top
158            objectClass: sudoRole
159            cn: %wheel
160            sudoUser: %wheel
161            sudoHost: ALL
162            sudoCommand: ALL
163
164    A\bAn\bna\bat\bto\bom\bmy\by o\bof\bf L\bLD\bDA\bAP\bP s\bsu\bud\bdo\boe\ber\brs\bs l\blo\boo\bok\bku\bup\bp
165        When looking up a sudoer using LDAP there are only two or three LDAP
166        queries per invocation.  The first query is to parse the global
167        options.  The second is to match against the user's name and the groups
168        that the user belongs to.  (The special ALL tag is matched in this
169        query too.)  If no match is returned for the user's name and groups, a
170        third query returns all entries containing user netgroups and checks to
171        see if the user belongs to any of them.
172
173        If timed entries are enabled with the S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_T\bTI\bIM\bME\bED\bD configuration
174        directive, the LDAP queries include a subfilter that limits retrieval
175        to entries that satisfy the time constraints, if any.
176
177    D\bDi\bif\bff\bfe\ber\bre\ben\bnc\bce\bes\bs b\bbe\bet\btw\bwe\bee\ben\bn L\bLD\bDA\bAP\bP a\ban\bnd\bd n\bno\bon\bn-\b-L\bLD\bDA\bAP\bP s\bsu\bud\bdo\boe\ber\brs\bs
178        There are some subtle differences in the way sudoers is handled once in
179        LDAP.  Probably the biggest is that according to the RFC, LDAP ordering
180        is arbitrary and you cannot expect that Attributes and Entries are
181        returned in any specific order.
182
183        The order in which different entries are applied can be controlled
184        using the sudoOrder attribute, but there is no way to guarantee the
185        order of attributes within a specific entry.  If there are conflicting
186        command rules in an entry, the negative takes precedence.  This is
187        called paranoid behavior (not necessarily the most specific match).
188
189        Here is an example:
190
191            # /etc/sudoers:
192            # Allow all commands except shell
193            johnny  ALL=(root) ALL,!/bin/sh
194            # Always allows all commands because ALL is matched last
195            puddles ALL=(root) !/bin/sh,ALL
196
197            # LDAP equivalent of johnny
198            # Allows all commands except shell
199            dn: cn=role1,ou=Sudoers,dc=my-domain,dc=com
200            objectClass: sudoRole
201            objectClass: top
202            cn: role1
203            sudoUser: johnny
204            sudoHost: ALL
205            sudoCommand: ALL
206            sudoCommand: !/bin/sh
207
208            # LDAP equivalent of puddles
209            # Notice that even though ALL comes last, it still behaves like
210            # role1 since the LDAP code assumes the more paranoid configuration
211            dn: cn=role2,ou=Sudoers,dc=my-domain,dc=com
212            objectClass: sudoRole
213            objectClass: top
214            cn: role2
215            sudoUser: puddles
216            sudoHost: ALL
217            sudoCommand: !/bin/sh
218            sudoCommand: ALL
219
220        Another difference is that negations on the Host, User or Runas are
221        currently ignored.  For example, the following attributes do not behave
222        the way one might expect.
223
224            # does not match all but joe
225            # rather, does not match anyone
226            sudoUser: !joe
227
228            # does not match all but joe
229            # rather, matches everyone including Joe
230            sudoUser: ALL
231            sudoUser: !joe
232
233            # does not match all but web01
234            # rather, matches all hosts including web01
235            sudoHost: ALL
236            sudoHost: !web01
237
238    S\bSu\bud\bdo\boe\ber\brs\bs S\bSc\bch\bhe\bem\bma\ba
239        In order to use s\bsu\bud\bdo\bo's LDAP support, the s\bsu\bud\bdo\bo schema must be installed
240        on your LDAP server.  In addition, be sure to index the 'sudoUser'
241        attribute.
242
243        Three versions of the schema: one for OpenLDAP servers
244        (_\bs_\bc_\bh_\be_\bm_\ba_\b._\bO_\bp_\be_\bn_\bL_\bD_\bA_\bP), one for Netscape-derived servers (_\bs_\bc_\bh_\be_\bm_\ba_\b._\bi_\bP_\bl_\ba_\bn_\be_\bt),
245        and one for Microsoft Active Directory (_\bs_\bc_\bh_\be_\bm_\ba_\b._\bA_\bc_\bt_\bi_\bv_\be_\bD_\bi_\br_\be_\bc_\bt_\bo_\br_\by) may be
246        found in the s\bsu\bud\bdo\bo distribution.
247
248        The schema for s\bsu\bud\bdo\bo in OpenLDAP form is included in the EXAMPLES
249        section.
250
251    C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg l\bld\bda\bap\bp.\b.c\bco\bon\bnf\bf
252        Sudo reads the _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf file for LDAP-specific configuration.
253        Typically, this file is shared amongst different LDAP-aware clients.
254        As such, most of the settings are not s\bsu\bud\bdo\bo-specific.  Note that s\bsu\bud\bdo\bo
255        parses _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf itself and may support options that differ from
256        those described in the _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf(4) manual.
257
258        Also note that on systems using the OpenLDAP libraries, default values
259        specified in _\b/_\be_\bt_\bc_\b/_\bo_\bp_\be_\bn_\bl_\bd_\ba_\bp_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf or the user's _\b._\bl_\bd_\ba_\bp_\br_\bc files are
260        not used.
261
262        Only those options explicitly listed in _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf as being
263        supported by s\bsu\bud\bdo\bo are honored.  Configuration options are listed below
264        in upper case but are parsed in a case-independent manner.
265
266        U\bUR\bRI\bI ldap[s]://[hostname[:port]] ...
267            Specifies a whitespace-delimited list of one or more URIs
268            describing the LDAP server(s) to connect to.  The _\bp_\br_\bo_\bt_\bo_\bc_\bo_\bl may be
269            either l\bld\bda\bap\bp or l\bld\bda\bap\bps\bs, the latter being for servers that support TLS
270            (SSL) encryption.  If no _\bp_\bo_\br_\bt is specified, the default is port 389
271            for ldap:// or port 636 for ldaps://.  If no _\bh_\bo_\bs_\bt_\bn_\ba_\bm_\be is specified,
272            s\bsu\bud\bdo\bo will connect to l\blo\boc\bca\bal\blh\bho\bos\bst\bt.  Multiple U\bUR\bRI\bI lines are treated
273            identically to a U\bUR\bRI\bI line containing multiple entries.  Only
274            systems using the OpenSSL libraries support the mixing of ldap://
275            and ldaps:// URIs.  The Netscape-derived libraries used on most
276            commercial versions of Unix are only capable of supporting one or
277            the other.
278
279        H\bHO\bOS\bST\bT name[:port] ...
280            If no U\bUR\bRI\bI is specified, the H\bHO\bOS\bST\bT parameter specifies a whitespace-
281            delimited list of LDAP servers to connect to.  Each host may
282            include an optional _\bp_\bo_\br_\bt separated by a colon (':').  The H\bHO\bOS\bST\bT
283            parameter is deprecated in favor of the U\bUR\bRI\bI specification and is
284            included for backwards compatibility.
285
286        P\bPO\bOR\bRT\bT port_number
287            If no U\bUR\bRI\bI is specified, the P\bPO\bOR\bRT\bT parameter specifies the default
288            port to connect to on the LDAP server if a H\bHO\bOS\bST\bT parameter does not
289            specify the port itself.  If no P\bPO\bOR\bRT\bT parameter is used, the default
290            is port 389 for LDAP and port 636 for LDAP over TLS (SSL).  The
291            P\bPO\bOR\bRT\bT parameter is deprecated in favor of the U\bUR\bRI\bI specification and
292            is included for backwards compatibility.
293
294        B\bBI\bIN\bND\bD_\b_T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT seconds
295            The B\bBI\bIN\bND\bD_\b_T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT parameter specifies the amount of time, in
296            seconds, to wait while trying to connect to an LDAP server.  If
297            multiple U\bUR\bRI\bIs or H\bHO\bOS\bST\bTs are specified, this is the amount of time to
298            wait before trying the next one in the list.
299
300        N\bNE\bET\bTW\bWO\bOR\bRK\bK_\b_T\bTI\bIM\bME\bEO\bOU\bUT\bT seconds
301            An alias for B\bBI\bIN\bND\bD_\b_T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT for OpenLDAP compatibility.
302
303        T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT seconds
304            The T\bTI\bIM\bME\bEL\bLI\bIM\bMI\bIT\bT parameter specifies the amount of time, in seconds,
305            to wait for a response to an LDAP query.
306
307        T\bTI\bIM\bME\bEO\bOU\bUT\bT seconds
308            The T\bTI\bIM\bME\bEO\bOU\bUT\bT parameter specifies the amount of time, in seconds, to
309            wait for a response from the various LDAP APIs.
310
311        S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_B\bBA\bAS\bSE\bE base
312            The base DN to use when performing s\bsu\bud\bdo\bo LDAP queries.  Typically
313            this is of the form ou=SUDOers,dc=example,dc=com for the domain
314            example.com.  Multiple S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_B\bBA\bAS\bSE\bE lines may be specified, in
315            which case they are queried in the order specified.
316
317        S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_S\bSE\bEA\bAR\bRC\bCH\bH_\b_F\bFI\bIL\bLT\bTE\bER\bR ldap_filter
318            An LDAP filter which is used to restrict the set of records
319            returned when performing a s\bsu\bud\bdo\bo LDAP query.  Typically, this is of
320            the form attribute=value or
321            (&(attribute=value)(attribute2=value2)).
322
323        S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_T\bTI\bIM\bME\bED\bD on/true/yes/off/false/no
324            Whether or not to evaluate the sudoNotBefore and sudoNotAfter
325            attributes that implement time-dependent sudoers entries.
326
327        S\bSU\bUD\bDO\bOE\bER\bRS\bS_\b_D\bDE\bEB\bBU\bUG\bG debug_level
328            This sets the debug level for s\bsu\bud\bdo\bo LDAP queries.  Debugging
329            information is printed to the standard error.  A value of 1 results
330            in a moderate amount of debugging information.  A value of 2 shows
331            the results of the matches themselves.  This parameter should not
332            be set in a production environment as the extra information is
333            likely to confuse users.
334
335        B\bBI\bIN\bND\bDD\bDN\bN DN
336            The B\bBI\bIN\bND\bDD\bDN\bN parameter specifies the identity, in the form of a
337            Distinguished Name (DN), to use when performing LDAP operations.
338            If not specified, LDAP operations are performed with an anonymous
339            identity.  By default, most LDAP servers will allow anonymous
340            access.
341
342        B\bBI\bIN\bND\bDP\bPW\bW secret
343            The B\bBI\bIN\bND\bDP\bPW\bW parameter specifies the password to use when performing
344            LDAP operations.  This is typically used in conjunction with the
345            B\bBI\bIN\bND\bDD\bDN\bN parameter.
346
347        R\bRO\bOO\bOT\bTB\bBI\bIN\bND\bDD\bDN\bN DN
348            The R\bRO\bOO\bOT\bTB\bBI\bIN\bND\bDD\bDN\bN parameter specifies the identity, in the form of a
349            Distinguished Name (DN), to use when performing privileged LDAP
350            operations, such as _\bs_\bu_\bd_\bo_\be_\br_\bs queries.  The password corresponding to
351            the identity should be stored in _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bs_\be_\bc_\br_\be_\bt.  If not
352            specified, the B\bBI\bIN\bND\bDD\bDN\bN identity is used (if any).
353
354        L\bLD\bDA\bAP\bP_\b_V\bVE\bER\bRS\bSI\bIO\bON\bN number
355            The version of the LDAP protocol to use when connecting to the
356            server.  The default value is protocol version 3.
357
358        S\bSS\bSL\bL on/true/yes/off/false/no
359            If the S\bSS\bSL\bL parameter is set to on, true or yes, TLS (SSL)
360            encryption is always used when communicating with the LDAP server.
361            Typically, this involves connecting to the server on port 636
362            (ldaps).
363
364        S\bSS\bSL\bL start_tls
365            If the S\bSS\bSL\bL parameter is set to start_tls, the LDAP server
366            connection is initiated normally and TLS encryption is begun before
367            the bind credentials are sent.  This has the advantage of not
368            requiring a dedicated port for encrypted communications.  This
369            parameter is only supported by LDAP servers that honor the
370            start_tls extension, such as the OpenLDAP server.
371
372        T\bTL\bLS\bS_\b_C\bCH\bHE\bEC\bCK\bKP\bPE\bEE\bER\bR on/true/yes/off/false/no
373            If enabled, T\bTL\bLS\bS_\b_C\bCH\bHE\bEC\bCK\bKP\bPE\bEE\bER\bR will cause the LDAP server's TLS
374            certificated to be verified.  If the server's TLS certificate
375            cannot be verified (usually because it is signed by an unknown
376            certificate authority), s\bsu\bud\bdo\bo will be unable to connect to it.  If
377            T\bTL\bLS\bS_\b_C\bCH\bHE\bEC\bCK\bKP\bPE\bEE\bER\bR is disabled, no check is made.  Note that disabling
378            the check creates an opportunity for man-in-the-middle attacks
379            since the server's identity will not be authenticated.  If
380            possible, the CA's certificate should be installed locally so it
381            can be verified.
382
383        T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bT file name
384            An alias for T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTF\bFI\bIL\bLE\bE for OpenLDAP compatibility.
385
386        T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTF\bFI\bIL\bLE\bE file name
387            The path to a certificate authority bundle which contains the
388            certificates for all the Certificate Authorities the client knows
389            to be valid, e.g. _\b/_\be_\bt_\bc_\b/_\bs_\bs_\bl_\b/_\bc_\ba_\b-_\bb_\bu_\bn_\bd_\bl_\be_\b._\bp_\be_\bm.  This option is only
390            supported by the OpenLDAP libraries.  Netscape-derived LDAP
391            libraries use the same certificate database for CA and client
392            certificates (see T\bTL\bLS\bS_\b_C\bCE\bER\bRT\bT).
393
394        T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTD\bDI\bIR\bR directory
395            Similar to T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTF\bFI\bIL\bLE\bE but instead of a file, it is a directory
396            containing individual Certificate Authority certificates, e.g.
397            _\b/_\be_\bt_\bc_\b/_\bs_\bs_\bl_\b/_\bc_\be_\br_\bt_\bs.  The directory specified by T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTD\bDI\bIR\bR is
398            checked after T\bTL\bLS\bS_\b_C\bCA\bAC\bCE\bER\bRT\bTF\bFI\bIL\bLE\bE.  This option is only supported by the
399            OpenLDAP libraries.
400
401        T\bTL\bLS\bS_\b_C\bCE\bER\bRT\bT file name
402            The path to a file containing the client certificate which can be
403            used to authenticate the client to the LDAP server.  The
404            certificate type depends on the LDAP libraries used.
405
406            OpenLDAP:
407                tls_cert /etc/ssl/client_cert.pem
408
409            Netscape-derived:
410                tls_cert /var/ldap/cert7.db
411
412            When using Netscape-derived libraries, this file may also contain
413            Certificate Authority certificates.
414
415        T\bTL\bLS\bS_\b_K\bKE\bEY\bY file name
416            The path to a file containing the private key which matches the
417            certificate specified by T\bTL\bLS\bS_\b_C\bCE\bER\bRT\bT.  The private key must not be
418            password-protected.  The key type depends on the LDAP libraries
419            used.
420
421            OpenLDAP:
422                tls_key /etc/ssl/client_key.pem
423
424            Netscape-derived:
425                tls_key /var/ldap/key3.db
426
427        T\bTL\bLS\bS_\b_R\bRA\bAN\bND\bDF\bFI\bIL\bLE\bE file name
428            The T\bTL\bLS\bS_\b_R\bRA\bAN\bND\bDF\bFI\bIL\bLE\bE parameter specifies the path to an entropy source
429            for systems that lack a random device.  It is generally used in
430            conjunction with _\bp_\br_\bn_\bg_\bd or _\be_\bg_\bd.  This option is only supported by
431            the OpenLDAP libraries.
432
433        T\bTL\bLS\bS_\b_C\bCI\bIP\bPH\bHE\bER\bRS\bS cipher list
434            The T\bTL\bLS\bS_\b_C\bCI\bIP\bPH\bHE\bER\bRS\bS parameter allows the administer to restrict which
435            encryption algorithms may be used for TLS (SSL) connections.  See
436            the OpenSSL manual for a list of valid ciphers.  This option is
437            only supported by the OpenLDAP libraries.
438
439        U\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL on/true/yes/off/false/no
440            Enable U\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL for LDAP servers that support SASL authentication.
441
442        S\bSA\bAS\bSL\bL_\b_A\bAU\bUT\bTH\bH_\b_I\bID\bD identity
443            The SASL user name to use when connecting to the LDAP server.  By
444            default, s\bsu\bud\bdo\bo will use an anonymous connection.
445
446        R\bRO\bOO\bOT\bTU\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL on/true/yes/off/false/no
447            Enable R\bRO\bOO\bOT\bTU\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL to enable SASL authentication when connecting
448            to an LDAP server from a privileged process, such as s\bsu\bud\bdo\bo.
449
450        R\bRO\bOO\bOT\bTS\bSA\bAS\bSL\bL_\b_A\bAU\bUT\bTH\bH_\b_I\bID\bD identity
451            The SASL user name to use when R\bRO\bOO\bOT\bTU\bUS\bSE\bE_\b_S\bSA\bAS\bSL\bL is enabled.
452
453        S\bSA\bAS\bSL\bL_\b_S\bSE\bEC\bCP\bPR\bRO\bOP\bPS\bS none/properties
454            SASL security properties or _\bn_\bo_\bn_\be for no properties.  See the SASL
455            programmer's manual for details.
456
457        K\bKR\bRB\bB5\b5_\b_C\bCC\bCN\bNA\bAM\bME\bE file name
458            The path to the Kerberos 5 credential cache to use when
459            authenticating with the remote server.
460
461        D\bDE\bER\bRE\bEF\bF never/searching/finding/always
462            How alias dereferencing is to be performed when searching.  See the
463            _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf(4) manual for a full description of this option.
464
465        See the ldap.conf entry in the EXAMPLES section.
466
467    C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg n\bns\bss\bsw\bwi\bit\btc\bch\bh.\b.c\bco\bon\bnf\bf
468        Unless it is disabled at build time, s\bsu\bud\bdo\bo consults the Name Service
469        Switch file, _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf, to specify the _\bs_\bu_\bd_\bo_\be_\br_\bs search order.
470        Sudo looks for a line beginning with sudoers: and uses this to
471        determine the search order.  Note that s\bsu\bud\bdo\bo does not stop searching
472        after the first match and later matches take precedence over earlier
473        ones.
474
475        The following sources are recognized:
476
477            files       read sudoers from F</etc/sudoers>
478            ldap        read sudoers from LDAP
479
480        In addition, the entry [NOTFOUND=return] will short-circuit the search
481        if the user was not found in the preceding source.
482
483        To consult LDAP first followed by the local sudoers file (if it
484        exists), use:
485
486            sudoers: ldap files
487
488        The local _\bs_\bu_\bd_\bo_\be_\br_\bs file can be ignored completely by using:
489
490            sudoers: ldap
491
492        If the _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf file is not present or there is no sudoers
493        line, the following default is assumed:
494
495            sudoers: files
496
497        Note that _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf is supported even when the underlying
498        operating system does not use an nsswitch.conf file.
499
500    C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg n\bne\bet\bts\bsv\bvc\bc.\b.c\bco\bon\bnf\bf
501        On AIX systems, the _\b/_\be_\bt_\bc_\b/_\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf file is consulted instead of
502        _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf.  s\bsu\bud\bdo\bo simply treats _\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf as a variant of
503        _\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf; information in the previous section unrelated to the
504        file format itself still applies.
505
506        To consult LDAP first followed by the local sudoers file (if it
507        exists), use:
508
509            sudoers = ldap, files
510
511        The local _\bs_\bu_\bd_\bo_\be_\br_\bs file can be ignored completely by using:
512
513            sudoers = ldap
514
515        To treat LDAP as authoratative and only use the local sudoers file if
516        the user is not present in LDAP, use:
517
518            sudoers = ldap = auth, files
519
520        Note that in the above example, the auth qualfier only affects user
521        lookups; both LDAP and _\bs_\bu_\bd_\bo_\be_\br_\bs will be queried for Defaults entries.
522
523        If the _\b/_\be_\bt_\bc_\b/_\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf file is not present or there is no sudoers
524        line, the following default is assumed:
525
526            sudoers = files
527
528 F\bFI\bIL\bLE\bES\bS
529        _\b/_\be_\bt_\bc_\b/_\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf          LDAP configuration file
530
531        _\b/_\be_\bt_\bc_\b/_\bn_\bs_\bs_\bw_\bi_\bt_\bc_\bh_\b._\bc_\bo_\bn_\bf      determines sudoers source order
532
533        _\b/_\be_\bt_\bc_\b/_\bn_\be_\bt_\bs_\bv_\bc_\b._\bc_\bo_\bn_\bf        determines sudoers source order on AIX
534
535 E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
536    E\bEx\bxa\bam\bmp\bpl\ble\be l\bld\bda\bap\bp.\b.c\bco\bon\bnf\bf
537          # Either specify one or more URIs or one or more host:port pairs.
538          # If neither is specified sudo will default to localhost, port 389.
539          #
540          #host          ldapserver
541          #host          ldapserver1 ldapserver2:390
542          #
543          # Default port if host is specified without one, defaults to 389.
544          #port          389
545          #
546          # URI will override the host and port settings.
547          uri            ldap://ldapserver
548          #uri            ldaps://secureldapserver
549          #uri            ldaps://secureldapserver ldap://ldapserver
550          #
551          # The amount of time, in seconds, to wait while trying to connect to
552          # an LDAP server.
553          bind_timelimit 30
554          #
555          # The amount of time, in seconds, to wait while performing an LDAP query.
556          timelimit 30
557          #
558          # Must be set or sudo will ignore LDAP; may be specified multiple times.
559          sudoers_base   ou=SUDOers,dc=example,dc=com
560          #
561          # verbose sudoers matching from ldap
562          #sudoers_debug 2
563          #
564          # Enable support for time-based entries in sudoers.
565          #sudoers_timed yes
566          #
567          # optional proxy credentials
568          #binddn        <who to search as>
569          #bindpw        <password>
570          #rootbinddn    <who to search as, uses /etc/ldap.secret for bindpw>
571          #
572          # LDAP protocol version, defaults to 3
573          #ldap_version 3
574          #
575          # Define if you want to use an encrypted LDAP connection.
576          # Typically, you must also set the port to 636 (ldaps).
577          #ssl on
578          #
579          # Define if you want to use port 389 and switch to
580          # encryption before the bind credentials are sent.
581          # Only supported by LDAP servers that support the start_tls
582          # extension such as OpenLDAP.
583          #ssl start_tls
584          #
585          # Additional TLS options follow that allow tweaking of the
586          # SSL/TLS connection.
587          #
588          #tls_checkpeer yes # verify server SSL certificate
589          #tls_checkpeer no  # ignore server SSL certificate
590          #
591          # If you enable tls_checkpeer, specify either tls_cacertfile
592          # or tls_cacertdir.  Only supported when using OpenLDAP.
593          #
594          #tls_cacertfile /etc/certs/trusted_signers.pem
595          #tls_cacertdir  /etc/certs
596          #
597          # For systems that don't have /dev/random
598          # use this along with PRNGD or EGD.pl to seed the
599          # random number pool to generate cryptographic session keys.
600          # Only supported when using OpenLDAP.
601          #
602          #tls_randfile /etc/egd-pool
603          #
604          # You may restrict which ciphers are used.  Consult your SSL
605          # documentation for which options go here.
606          # Only supported when using OpenLDAP.
607          #
608          #tls_ciphers <cipher-list>
609          #
610          # Sudo can provide a client certificate when communicating to
611          # the LDAP server.
612          # Tips:
613          #   * Enable both lines at the same time.
614          #   * Do not password protect the key file.
615          #   * Ensure the keyfile is only readable by root.
616          #
617          # For OpenLDAP:
618          #tls_cert /etc/certs/client_cert.pem
619          #tls_key  /etc/certs/client_key.pem
620          #
621          # For SunONE or iPlanet LDAP, tls_cert and tls_key may specify either
622          # a directory, in which case the files in the directory must have the
623          # default names (e.g. cert8.db and key4.db), or the path to the cert
624          # and key files themselves.  However, a bug in version 5.0 of the LDAP
625          # SDK will prevent specific file names from working.  For this reason
626          # it is suggested that tls_cert and tls_key be set to a directory,
627          # not a file name.
628          #
629          # The certificate database specified by tls_cert may contain CA certs
630          # and/or the client's cert.  If the client's cert is included, tls_key
631          # should be specified as well.
632          # For backward compatibility, "sslpath" may be used in place of tls_cert.
633          #tls_cert /var/ldap
634          #tls_key /var/ldap
635          #
636          # If using SASL authentication for LDAP (OpenSSL)
637          # use_sasl yes
638          # sasl_auth_id <SASL user name>
639          # rootuse_sasl yes
640          # rootsasl_auth_id <SASL user name for root access>
641          # sasl_secprops none
642          # krb5_ccname /etc/.ldapcache
643
644    S\bSu\bud\bdo\bo s\bsc\bch\bhe\bem\bma\ba f\bfo\bor\br O\bOp\bpe\ben\bnL\bLD\bDA\bAP\bP
645        The following schema, in OpenLDAP format, is included with s\bsu\bud\bdo\bo source
646        and binary distributions as _\bs_\bc_\bh_\be_\bm_\ba_\b._\bO_\bp_\be_\bn_\bL_\bD_\bA_\bP.  Simply copy it to the
647        schema directory (e.g. _\b/_\be_\bt_\bc_\b/_\bo_\bp_\be_\bn_\bl_\bd_\ba_\bp_\b/_\bs_\bc_\bh_\be_\bm_\ba), add the proper include
648        line in slapd.conf and restart s\bsl\bla\bap\bpd\bd.
649
650         attributetype ( 1.3.6.1.4.1.15953.9.1.1
651            NAME 'sudoUser'
652            DESC 'User(s) who may  run sudo'
653            EQUALITY caseExactIA5Match
654            SUBSTR caseExactIA5SubstringsMatch
655            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
656
657         attributetype ( 1.3.6.1.4.1.15953.9.1.2
658            NAME 'sudoHost'
659            DESC 'Host(s) who may run sudo'
660            EQUALITY caseExactIA5Match
661            SUBSTR caseExactIA5SubstringsMatch
662            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
663
664         attributetype ( 1.3.6.1.4.1.15953.9.1.3
665            NAME 'sudoCommand'
666            DESC 'Command(s) to be executed by sudo'
667            EQUALITY caseExactIA5Match
668            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
669
670         attributetype ( 1.3.6.1.4.1.15953.9.1.4
671            NAME 'sudoRunAs'
672            DESC 'User(s) impersonated by sudo'
673            EQUALITY caseExactIA5Match
674            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
675
676         attributetype ( 1.3.6.1.4.1.15953.9.1.5
677            NAME 'sudoOption'
678            DESC 'Options(s) followed by sudo'
679            EQUALITY caseExactIA5Match
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.6
683            NAME 'sudoRunAsUser'
684            DESC 'User(s) impersonated 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.7
689            NAME 'sudoRunAsGroup'
690            DESC 'Group(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.8
695            NAME 'sudoNotBefore'
696            DESC 'Start of time interval for which the entry is valid'
697            EQUALITY generalizedTimeMatch
698            ORDERING generalizedTimeOrderingMatch
699            SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
700
701         attributetype ( 1.3.6.1.4.1.15953.9.1.9
702            NAME 'sudoNotAfter'
703            DESC 'End of time interval for which the entry is valid'
704            EQUALITY generalizedTimeMatch
705            ORDERING generalizedTimeOrderingMatch
706            SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
707
708         attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
709             NAME 'sudoOrder'
710             DESC 'an integer to order the sudoRole entries'
711             EQUALITY integerMatch
712             ORDERING integerOrderingMatch
713             SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
714
715         objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
716            DESC 'Sudoer Entries'
717            MUST ( cn )
718            MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
719                  sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
720                  sudoOrder $ description )
721            )
722
723 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
724        _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf(4), _\bs_\bu_\bd_\bo_\be_\br_\bs(4)
725
726 C\bCA\bAV\bVE\bEA\bAT\bTS\bS
727        Note that there are differences in the way that LDAP-based _\bs_\bu_\bd_\bo_\be_\br_\bs is
728        parsed compared to file-based _\bs_\bu_\bd_\bo_\be_\br_\bs.  See the "Differences between
729        LDAP and non-LDAP sudoers" section for more information.
730
731 B\bBU\bUG\bGS\bS
732        If you feel you have found a bug in s\bsu\bud\bdo\bo, please submit a bug report at
733        http://www.sudo.ws/sudo/bugs/
734
735 S\bSU\bUP\bPP\bPO\bOR\bRT\bT
736        Limited free support is available via the sudo-users mailing list, see
737        http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search
738        the archives.
739
740 D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
741        s\bsu\bud\bdo\bo is provided ``AS IS'' and any express or implied warranties,
742        including, but not limited to, the implied warranties of
743        merchantability and fitness for a particular purpose are disclaimed.
744        See the LICENSE file distributed with s\bsu\bud\bdo\bo or
745        http://www.sudo.ws/sudo/license.html for complete details.
746
747
748
749 1.8.3                         September 16, 2011               SUDOERS.LDAP(4)