Рейтинг:0

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

флаг in

Я следил за этим учебником здесь:

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

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

SASL/ВНЕШНЯЯ аутентификация запущена
Имя пользователя SASL: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
САСЛ ССФ: 0
добавление новой записи "cn=defaults,ou=SUDOers,dc=apo,dc=local"
ldap_add: неверный синтаксис (21)
    дополнительная информация: objectClass: значение #1 неверно для синтаксиса

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

dn: cn=значения по умолчанию,ou=SUDOers,dc=bbb,dc=local
класс объекта: верхний
класс объекта: sudoRole
Сп: по умолчанию
описание: sudoOption по умолчанию идет сюда
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: match_group_by_gid
sudoOption: always_query_group_plugin
sudoOption: env_reset
sudoOption: env_keep = "ЦВЕТА ОТОБРАЖЕНИЯ ИМЯ ХОСТА 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
класс объекта: верхний
класс объекта: sudoRole
Сп: судо
sudoUser: Бобби
sudoHost: ВСЕ
sudoRunAsUser: ВСЕ
Судокоманда: ВСЕ

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

DN: ou=SUDOers,dc=bbb,dc=local
объектный класс: верхний
objectClass: организационная единица
ou: SUDOers
описание: Контейнер BBB SUDOers

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

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

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

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

vi /testfolder/sudoers.ldif
#-------------------------
# ФАЙЛ СОЗДАЕТСЯ АВТОМАТИЧЕСКИ - НЕ РЕДАКТИРОВАНИЕ!! Используйте ldapmodify.
# CRC32 b181185c
DN: cn=sudoers,cn=схема,cn=config
объектный класс: olcSchemaConfig
Сп: Судоерс
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'Пользователи
) кто может запускать sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substrin
gsMatch СИНТАКСИС 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 'Хосты
) кто может запускать sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substring
sMatch СИНТАКСИС 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
команда(ы), которые должны быть выполнены sudo' EQUALITY caseExactIA5Match СИНТАКСИС 1.3.6.1.4
.1.1466.115.121.1.26 )
olcAttributeTypes: {3}( 1.3.6.1.4.1.15953.9.1.4 ИМЯ 'sudoRunAs' DESC 'Пользователь(
s) олицетворяется sudo (устарело)' РАВЕНСТВО caseExactIA5Match СИНТАКСИС 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), за которыми следует sudo' EQUALITY caseExactIA5Match СИНТАКСИС 1.3.6.1.4.1.1466
.115.121.1.26 )
olcAttributeTypes: {5}( 1.3.6.1.4.1.15953.9.1.6 ИМЯ 'sudoRunAsUser' DESC 'U
ser(s), олицетворяемый sudo' EQUALITY caseExactIA5Match СИНТАКСИС 1.3.6.1.4.1.
1466.115.121.1.26 )
olcAttributeTypes: {6}( 1.3.6.1.4.1.15953.9.1.7 ИМЯ 'sudoRunAsGroup' DESC '
Группа(ы), олицетворяемая sudo' EQUALITY caseExactIA5Match СИНТАКСИС 1.3.6.1.4.
1.1466.115.121.1.26 )
olcAttributeTypes: {7}( 1.3.6.1.4.1.15953.9.1.8 ИМЯ 'sudoNotBefore' DESC 'S
начало временного интервала, для которого запись действительна' EQUALITY generalizedTim
eMatch ORDERING generalizedTimeOrderingMatch СИНТАКСИС 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 интервала времени, для которого запись действительна' EQUALITY generalizedTimeMa
tch ORDERING generalizedTimeOrderingMatch СИНТАКСИС 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 'я
целое число, чтобы упорядочить записи sudoRole EQUALITY integerMatch ORDERING intege
rOrderingMatch СИНТАКСИС 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
SUP записей сверху СТРУКТУРНЫЙ ДОЛЖЕН cn МОЖЕТ ( sudoUser $ sudoHost $ sudoCommand
$ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoOrder $ su
doNotBefore $ sudoNotAfter $ описание ))

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

Richard Salts avatar
флаг cn
Вы используете динамическую конфигурацию для openldap, а не slapd.conf и связанные файлы *.schema. Доступ к конфигурации сервера осуществляется через ldap, и вы можете просмотреть ее с помощью `ldapsearch -Y EXTERNAL -d "cn=config" ldapi:///`. встроенный в сервер ldap.
Рейтинг:1
флаг no

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

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

LDAP_INVALID_SYNTAX — 21 (0x15)
Для значения атрибута, указанного в запросе клиента LDAP, не указан допустимый синтаксис. 
Например, если тип атрибута в схеме имеет целочисленный синтаксис, целочисленное значение должно быть указано в запросе на добавление или изменение.

Можете ли вы сделать следующее, чтобы устранить эту проблему дальше?

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

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

флаг in
Я заметил, что у меня вообще нет файла slapd.conf, но я думаю, это потому, что он устарел, а я запускаю новую версию?
флаг no
Поскольку вы используете Centos, можете ли вы проверить версию openldap, которую вы сейчас используете, используя что-то вроде этого `rpm -qi openldap-servers`?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.