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

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

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