Пытаюсь заставить sudoers работать на openldap/centos7

Я следовал этому руководству здесь:

https://kifarunix.com/how-to-configure-sudo-via-openldap-server/

Многое из этого имело смысл, но я все еще новичок в openldap, так что кое-что из этого тоже загадочно. Я запустил openldap с аутентификацией пользователей на других машинах, даже работал с phpldapadmin. Так что пришло время заставить sudoers работать для некоторых пользователей. Я выполнил команду sudoers2ldif и получил файл, похожий на тот, что был показан в учебнике, и отредактировал его соответствующим образом. Когда пришло время выполнить ldapadd -Y EXTERNAL -H ldapi:/// -f sudoers_modified.ldif, произошел сбой с ошибкой:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=defaults,ou=SUDOers,dc=apo,dc=local"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #1 invalid per syntax

Является ли 21 номером строки файла .ldif? Или какой-то другой код ошибки... также не знаю, что является недействительным в команде objectClass... выложил файл ldif ниже.

dn: cn=defaults,ou=SUDOers,dc=bbb,dc=local
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: match_group_by_gid
sudoOption: always_query_group_plugin
sudoOption: env_reset
sudoOption: env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
sudoOption: env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
sudoOption: env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
sudoOption: env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
sudoOption: env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
sudoOption: secure_path = /sbin:/bin:/usr/sbin:/usr/bin

dn: cn=sudo,OU=SUDOers,dc=bbb,dc=local
objectClass: top
objectClass: sudoRole
cn: sudo
sudoUser: bobby
sudoHost: ALL
sudoRunAsUser: ALL
sudoCommand: ALL

Может быть, sudoRole нужно как-то добавить? Другой ldif, который я успешно добавил для этого, был:

dn: ou=SUDOers,dc=bbb,dc=local
objectCLass: top
objectClass: organizationalUnit
ou: SUDOers
description: BBB SUDOers container

Я нашел другой учебник здесь:

https://forums.centos.org/viewtopic.php?t=73807

С похожей информацией, немного отличающейся, я не использовал этот, потому что один из ldif файлов, который был размещен, имел тонну материала, который говорил, что он был "автогенерирован", и я понятия не имел, как или откуда он взялся.

После одного ответа, я полагаю, что файл, показанный по вышеуказанной ссылке, содержит данные:

vi /testfolder/sudoers.ldif
#------------------------
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 b181185c
dn: cn=sudoers,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudoers
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s
) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substrin
gsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s
) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substring
sMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {2}( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Com
mand(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4
.1.1466.115.121.1.26 )
olcAttributeTypes: {3}( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(
s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3
.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {4}( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Opti
ons(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466
.115.121.1.26 )
olcAttributeTypes: {5}( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'U
ser(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.
1466.115.121.1.26 )
olcAttributeTypes: {6}( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC '
Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.
1.1466.115.121.1.26 )
olcAttributeTypes: {7}( 1.3.6.1.4.1.15953.9.1.8 NAME 'sudoNotBefore' DESC 'S
tart of time interval for which the entry is valid' EQUALITY generalizedTim
eMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.12
1.1.24 )
olcAttributeTypes: {8}( 1.3.6.1.4.1.15953.9.1.9 NAME 'sudoNotAfter' DESC 'En
d of time interval for which the entry is valid' EQUALITY generalizedTimeMa
tch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1
.24 )
olcAttributeTypes: {9}( 1.3.6.1.4.1.15953.9.1.10 NAME 'sudoOrder' DESC 'an i
nteger to order the sudoRole entries' EQUALITY integerMatch ORDERING intege
rOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcObjectClasses: {0}( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' DESC 'Sudoer
Entries' SUP top STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand
$ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoOrder $ su
doNotBefore $ sudoNotAfter $ description ) )

Как только я понял, что этот файл был схемой, я добавил его и, наконец, заставил все это работать, так что, в некотором смысле, я принял ответ, хотя мне пришлось еще немного покопаться в том, что я делал. Btw файл схемы не использовался в моем ldap, мне пришлось добавить его через ldapadd

0
задан 15 June 2021 в 22:30
1 ответ

Является ли цифра 21 номером строки файла .ldif? Или какой-то другой код ошибки

Это код возврата для Invalid Syntax.

LDAP_INVALID_SYNTAX - 21 (0x15)
An attribute value specified on an LDAP client request does not have a valid syntax specified. 
For example, if an attribute type in the schema has an integer syntax, an integer value must be specified on an add or modify request.

Можете ли вы сделать следующее для дальнейшего устранения неполадок?

  • Проверьте, присутствуют ли файлы схемы sudoers на хосте. Если нет, скопируйте их из сюда
    # ls -l /etc/openldap/schema/sudo.schema
    
  • Проверьте, добавлен ли файл sudo.schema (или эквивалентный файл) в соответствующий файл конфигурации сервера openldap.
    # grep sudo.schema /etc/openldap/slapd.conf
    include /etc/openldap/schema/sudo.schema
    
  • Проверьте, существует ли sudoers OU!
    # ldapsearch -H ldap://localhost -x -LLL -s one -b "OU=SUDOers,dc=bbb,dc=local"
    
    Если его нет, добавьте его с помощью ldapadd (1)
  • Проверьте, нет ли синтаксических ошибок в файле ldif, используя
    # /usr/bin/cvtsudoers /tmp/sample.ldif -i ldif -f sudoers
    

Вероятно, вам следует обратиться к официальной документации по sudo ссылка, которая содержит объяснения некоторых из вышеперечисленных вещей.

1
ответ дан 28 July 2021 в 14:06

Теги

Похожие вопросы