Я следил за этим учебником здесь:
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