Annotation of embedaddon/sudo/doc/sudoers.ldap.cat, revision 1.1.1.1

1.1       misho       1: SUDOERS.LDAP(4)              MAINTENANCE COMMANDS              SUDOERS.LDAP(4)
                      2: 
                      3: 
                      4: 
                      5: NNAAMMEE
                      6:        sudoers.ldap - sudo LDAP configuration
                      7: 
                      8: DDEESSCCRRIIPPTTIIOONN
                      9:        In addition to the standard _s_u_d_o_e_r_s file, ssuuddoo may be configured via
                     10:        LDAP.  This can be especially useful for synchronizing _s_u_d_o_e_r_s in a
                     11:        large, distributed environment.
                     12: 
                     13:        Using LDAP for _s_u_d_o_e_r_s has several benefits:
                     14: 
                     15:        +o   ssuuddoo no longer needs to read _s_u_d_o_e_r_s 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:        +o   ssuuddoo no longer exits if there is a typo in _s_u_d_o_e_r_s.  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 ssuuddoo from running.
                     25: 
                     26:        +o   It is possible to specify per-entry options that override the
                     27:            global default options.  _/_e_t_c_/_s_u_d_o_e_r_s 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:        +o   The vviissuuddoo program is no longer needed.  vviissuuddoo provides locking
                     34:            and syntax checking of the _/_e_t_c_/_s_u_d_o_e_r_s 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 _s_u_d_o_e_r_s is that in
                     40:        LDAP, ssuuddoo-specific Aliases are not supported.
                     41: 
                     42:        For the most part, there is really no need for ssuuddoo-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 ssuuddoo-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:    SSUUDDOOeerrss LLDDAAPP ccoonnttaaiinneerr
                     54:        The _s_u_d_o_e_r_s 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 _/_e_t_c_/_s_u_d_o_e_r_s.  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:        ssuuddooUUsseerr
                     74:            A user name, uid (prefixed with '#'), Unix group (prefixed with a
                     75:            '%') or user netgroup (prefixed with a '+').
                     76: 
                     77:        ssuuddooHHoosstt
                     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:        ssuuddooCCoommmmaanndd
                     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:        ssuuddooOOppttiioonn
                     89:            Identical in function to the global options described above, but
                     90:            specific to the sudoRole in which it resides.
                     91: 
                     92:        ssuuddooRRuunnAAssUUsseerr
                     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 ssuuddoo versions
                     99:            1.7.0 and higher.  Older versions of ssuuddoo use the sudoRunAs
                    100:            attribute instead.
                    101: 
                    102:        ssuuddooRRuunnAAssGGrroouupp
                    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 ssuuddoo versions
                    107:            1.7.0 and higher.
                    108: 
                    109:        ssuuddooNNoottBBeeffoorree
                    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 ssuuddoo versions
                    119:            1.7.5 and higher and must be explicitly enabled via the
                    120:            SSUUDDOOEERRSS__TTIIMMEEDD option in _/_e_t_c_/_l_d_a_p_._c_o_n_f.
                    121: 
                    122:        ssuuddooNNoottAAfftteerr
                    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 ssuuddoo versions 1.7.5
                    132:            and higher and must be explicitly enabled via the SSUUDDOOEERRSS__TTIIMMEEDD
                    133:            option in _/_e_t_c_/_l_d_a_p_._c_o_n_f.
                    134: 
                    135:        ssuuddooOOrrddeerr
                    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 ssuuddoo 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 ssuuddoo:
                    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:    AAnnaattoommyy ooff LLDDAAPP ssuuddooeerrss llooookkuupp
                    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 SSUUDDOOEERRSS__TTIIMMEEDD configuration
                    174:        directive, the LDAP queries include a subfilter that limits retrieval
                    175:        to entries that satisfy the time constraints, if any.
                    176: 
                    177:    DDiiffffeerreenncceess bbeettwweeeenn LLDDAAPP aanndd nnoonn--LLDDAAPP ssuuddooeerrss
                    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:    SSuuddooeerrss SScchheemmaa
                    239:        In order to use ssuuddoo's LDAP support, the ssuuddoo 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:        (_s_c_h_e_m_a_._O_p_e_n_L_D_A_P), one for Netscape-derived servers (_s_c_h_e_m_a_._i_P_l_a_n_e_t),
                    245:        and one for Microsoft 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
                    246:        found in the ssuuddoo distribution.
                    247: 
                    248:        The schema for ssuuddoo in OpenLDAP form is included in the EXAMPLES
                    249:        section.
                    250: 
                    251:    CCoonnffiigguurriinngg llddaapp..ccoonnff
                    252:        Sudo reads the _/_e_t_c_/_l_d_a_p_._c_o_n_f 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 ssuuddoo-specific.  Note that ssuuddoo
                    255:        parses _/_e_t_c_/_l_d_a_p_._c_o_n_f itself and may support options that differ from
                    256:        those described in the _l_d_a_p_._c_o_n_f(4) manual.
                    257: 
                    258:        Also note that on systems using the OpenLDAP libraries, default values
                    259:        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
                    260:        not used.
                    261: 
                    262:        Only those options explicitly listed in _/_e_t_c_/_l_d_a_p_._c_o_n_f as being
                    263:        supported by ssuuddoo are honored.  Configuration options are listed below
                    264:        in upper case but are parsed in a case-independent manner.
                    265: 
                    266:        UURRII 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 _p_r_o_t_o_c_o_l may be
                    269:            either llddaapp or llddaappss, the latter being for servers that support TLS
                    270:            (SSL) encryption.  If no _p_o_r_t is specified, the default is port 389
                    271:            for ldap:// or port 636 for ldaps://.  If no _h_o_s_t_n_a_m_e is specified,
                    272:            ssuuddoo will connect to llooccaallhhoosstt.  Multiple UURRII lines are treated
                    273:            identically to a UURRII 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:        HHOOSSTT name[:port] ...
                    280:            If no UURRII is specified, the HHOOSSTT parameter specifies a whitespace-
                    281:            delimited list of LDAP servers to connect to.  Each host may
                    282:            include an optional _p_o_r_t separated by a colon (':').  The HHOOSSTT
                    283:            parameter is deprecated in favor of the UURRII specification and is
                    284:            included for backwards compatibility.
                    285: 
                    286:        PPOORRTT port_number
                    287:            If no UURRII is specified, the PPOORRTT parameter specifies the default
                    288:            port to connect to on the LDAP server if a HHOOSSTT parameter does not
                    289:            specify the port itself.  If no PPOORRTT parameter is used, the default
                    290:            is port 389 for LDAP and port 636 for LDAP over TLS (SSL).  The
                    291:            PPOORRTT parameter is deprecated in favor of the UURRII specification and
                    292:            is included for backwards compatibility.
                    293: 
                    294:        BBIINNDD__TTIIMMEELLIIMMIITT seconds
                    295:            The BBIINNDD__TTIIMMEELLIIMMIITT parameter specifies the amount of time, in
                    296:            seconds, to wait while trying to connect to an LDAP server.  If
                    297:            multiple UURRIIs or HHOOSSTTs are specified, this is the amount of time to
                    298:            wait before trying the next one in the list.
                    299: 
                    300:        NNEETTWWOORRKK__TTIIMMEEOOUUTT seconds
                    301:            An alias for BBIINNDD__TTIIMMEELLIIMMIITT for OpenLDAP compatibility.
                    302: 
                    303:        TTIIMMEELLIIMMIITT seconds
                    304:            The TTIIMMEELLIIMMIITT parameter specifies the amount of time, in seconds,
                    305:            to wait for a response to an LDAP query.
                    306: 
                    307:        TTIIMMEEOOUUTT seconds
                    308:            The TTIIMMEEOOUUTT parameter specifies the amount of time, in seconds, to
                    309:            wait for a response from the various LDAP APIs.
                    310: 
                    311:        SSUUDDOOEERRSS__BBAASSEE base
                    312:            The base DN to use when performing ssuuddoo LDAP queries.  Typically
                    313:            this is of the form ou=SUDOers,dc=example,dc=com for the domain
                    314:            example.com.  Multiple SSUUDDOOEERRSS__BBAASSEE lines may be specified, in
                    315:            which case they are queried in the order specified.
                    316: 
                    317:        SSUUDDOOEERRSS__SSEEAARRCCHH__FFIILLTTEERR ldap_filter
                    318:            An LDAP filter which is used to restrict the set of records
                    319:            returned when performing a ssuuddoo LDAP query.  Typically, this is of
                    320:            the form attribute=value or
                    321:            (&(attribute=value)(attribute2=value2)).
                    322: 
                    323:        SSUUDDOOEERRSS__TTIIMMEEDD 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:        SSUUDDOOEERRSS__DDEEBBUUGG debug_level
                    328:            This sets the debug level for ssuuddoo 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:        BBIINNDDDDNN DN
                    336:            The BBIINNDDDDNN 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:        BBIINNDDPPWW secret
                    343:            The BBIINNDDPPWW parameter specifies the password to use when performing
                    344:            LDAP operations.  This is typically used in conjunction with the
                    345:            BBIINNDDDDNN parameter.
                    346: 
                    347:        RROOOOTTBBIINNDDDDNN DN
                    348:            The RROOOOTTBBIINNDDDDNN parameter specifies the identity, in the form of a
                    349:            Distinguished Name (DN), to use when performing privileged LDAP
                    350:            operations, such as _s_u_d_o_e_r_s queries.  The password corresponding to
                    351:            the identity should be stored in _/_e_t_c_/_l_d_a_p_._s_e_c_r_e_t.  If not
                    352:            specified, the BBIINNDDDDNN identity is used (if any).
                    353: 
                    354:        LLDDAAPP__VVEERRSSIIOONN 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:        SSSSLL on/true/yes/off/false/no
                    359:            If the SSSSLL 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:        SSSSLL start_tls
                    365:            If the SSSSLL 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:        TTLLSS__CCHHEECCKKPPEEEERR on/true/yes/off/false/no
                    373:            If enabled, TTLLSS__CCHHEECCKKPPEEEERR 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), ssuuddoo will be unable to connect to it.  If
                    377:            TTLLSS__CCHHEECCKKPPEEEERR 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:        TTLLSS__CCAACCEERRTT file name
                    384:            An alias for TTLLSS__CCAACCEERRTTFFIILLEE for OpenLDAP compatibility.
                    385: 
                    386:        TTLLSS__CCAACCEERRTTFFIILLEE 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. _/_e_t_c_/_s_s_l_/_c_a_-_b_u_n_d_l_e_._p_e_m.  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 TTLLSS__CCEERRTT).
                    393: 
                    394:        TTLLSS__CCAACCEERRTTDDIIRR directory
                    395:            Similar to TTLLSS__CCAACCEERRTTFFIILLEE but instead of a file, it is a directory
                    396:            containing individual Certificate Authority certificates, e.g.
                    397:            _/_e_t_c_/_s_s_l_/_c_e_r_t_s.  The directory specified by TTLLSS__CCAACCEERRTTDDIIRR is
                    398:            checked after TTLLSS__CCAACCEERRTTFFIILLEE.  This option is only supported by the
                    399:            OpenLDAP libraries.
                    400: 
                    401:        TTLLSS__CCEERRTT 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:        TTLLSS__KKEEYY file name
                    416:            The path to a file containing the private key which matches the
                    417:            certificate specified by TTLLSS__CCEERRTT.  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:        TTLLSS__RRAANNDDFFIILLEE file name
                    428:            The TTLLSS__RRAANNDDFFIILLEE parameter specifies the path to an entropy source
                    429:            for systems that lack a random device.  It is generally used in
                    430:            conjunction with _p_r_n_g_d or _e_g_d.  This option is only supported by
                    431:            the OpenLDAP libraries.
                    432: 
                    433:        TTLLSS__CCIIPPHHEERRSS cipher list
                    434:            The TTLLSS__CCIIPPHHEERRSS 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:        UUSSEE__SSAASSLL on/true/yes/off/false/no
                    440:            Enable UUSSEE__SSAASSLL for LDAP servers that support SASL authentication.
                    441: 
                    442:        SSAASSLL__AAUUTTHH__IIDD identity
                    443:            The SASL user name to use when connecting to the LDAP server.  By
                    444:            default, ssuuddoo will use an anonymous connection.
                    445: 
                    446:        RROOOOTTUUSSEE__SSAASSLL on/true/yes/off/false/no
                    447:            Enable RROOOOTTUUSSEE__SSAASSLL to enable SASL authentication when connecting
                    448:            to an LDAP server from a privileged process, such as ssuuddoo.
                    449: 
                    450:        RROOOOTTSSAASSLL__AAUUTTHH__IIDD identity
                    451:            The SASL user name to use when RROOOOTTUUSSEE__SSAASSLL is enabled.
                    452: 
                    453:        SSAASSLL__SSEECCPPRROOPPSS none/properties
                    454:            SASL security properties or _n_o_n_e for no properties.  See the SASL
                    455:            programmer's manual for details.
                    456: 
                    457:        KKRRBB55__CCCCNNAAMMEE file name
                    458:            The path to the Kerberos 5 credential cache to use when
                    459:            authenticating with the remote server.
                    460: 
                    461:        DDEERREEFF never/searching/finding/always
                    462:            How alias dereferencing is to be performed when searching.  See the
                    463:            _l_d_a_p_._c_o_n_f(4) manual for a full description of this option.
                    464: 
                    465:        See the ldap.conf entry in the EXAMPLES section.
                    466: 
                    467:    CCoonnffiigguurriinngg nnsssswwiittcchh..ccoonnff
                    468:        Unless it is disabled at build time, ssuuddoo consults the Name Service
                    469:        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.
                    470:        Sudo looks for a line beginning with sudoers: and uses this to
                    471:        determine the search order.  Note that ssuuddoo 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 _s_u_d_o_e_r_s file can be ignored completely by using:
                    489: 
                    490:            sudoers: ldap
                    491: 
                    492:        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
                    493:        line, the following default is assumed:
                    494: 
                    495:            sudoers: files
                    496: 
                    497:        Note that _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f is supported even when the underlying
                    498:        operating system does not use an nsswitch.conf file.
                    499: 
                    500:    CCoonnffiigguurriinngg nneettssvvcc..ccoonnff
                    501:        On AIX systems, the _/_e_t_c_/_n_e_t_s_v_c_._c_o_n_f file is consulted instead of
                    502:        _/_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
                    503:        _n_s_s_w_i_t_c_h_._c_o_n_f; 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 _s_u_d_o_e_r_s 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 _s_u_d_o_e_r_s will be queried for Defaults entries.
                    522: 
                    523:        If the _/_e_t_c_/_n_e_t_s_v_c_._c_o_n_f file is not present or there is no sudoers
                    524:        line, the following default is assumed:
                    525: 
                    526:            sudoers = files
                    527: 
                    528: FFIILLEESS
                    529:        _/_e_t_c_/_l_d_a_p_._c_o_n_f          LDAP configuration file
                    530: 
                    531:        _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f      determines sudoers source order
                    532: 
                    533:        _/_e_t_c_/_n_e_t_s_v_c_._c_o_n_f        determines sudoers source order on AIX
                    534: 
                    535: EEXXAAMMPPLLEESS
                    536:    EExxaammppllee llddaapp..ccoonnff
                    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:    SSuuddoo sscchheemmaa ffoorr OOppeennLLDDAAPP
                    645:        The following schema, in OpenLDAP format, is included with ssuuddoo source
                    646:        and binary distributions as _s_c_h_e_m_a_._O_p_e_n_L_D_A_P.  Simply copy it to the
                    647:        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
                    648:        line in slapd.conf and restart ssllaappdd.
                    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: SSEEEE AALLSSOO
                    724:        _l_d_a_p_._c_o_n_f(4), _s_u_d_o_e_r_s(4)
                    725: 
                    726: CCAAVVEEAATTSS
                    727:        Note that there are differences in the way that LDAP-based _s_u_d_o_e_r_s is
                    728:        parsed compared to file-based _s_u_d_o_e_r_s.  See the "Differences between
                    729:        LDAP and non-LDAP sudoers" section for more information.
                    730: 
                    731: BBUUGGSS
                    732:        If you feel you have found a bug in ssuuddoo, please submit a bug report at
                    733:        http://www.sudo.ws/sudo/bugs/
                    734: 
                    735: SSUUPPPPOORRTT
                    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: DDIISSCCLLAAIIMMEERR
                    741:        ssuuddoo 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 ssuuddoo 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)

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