Рейтинг:0

Что мне не хватает для настройки доступа sudo с помощью openldap?

флаг cf

Я использую контейнеры lxd/lxc (Oracle Linux 8) для быстрого развертывания среды (поэтому, если у вас есть настройка lxd, вы можете изменить схему ip, чтобы она соответствовала подсети/DNS моста lxd, а затем вставить код в отдельные контейнеры lxc).

Я могу аутентифицироваться как мой тестовый пользователь «адам», но когда я пытаюсь настроить sudo для адам, он говорит мне

Адам не может запускать sudo на <hostname>

Насколько я могу судить, у меня все настроено правильно [для sudo].

LDAP: https://www.server-world.info/en/note?os=CentOS_7&p=openldap / https://kifarunix.com/install-and-setup-openldap-on-rocky-linux-8/

СССД: https://kifarunix.com/configure-sssd-for-openldap-authentication-on-centos-8/

СУДО: https://kifarunix.com/how-to-configure-sudo-via-openldap-server/

LDAP-контейнер

lxc остановить ldapmaster --force; lxc удалить ldapmaster; Образы запуска lxc: oracle/8/amd64 ldapmaster; lxc exec ldapmaster пароль; консоль lxc ldapmaster

вставить в контейнер LDAP

ldaphostname="ldapmaster"
домен = "пример"
суффикс = "com"
olcRootPW = 1234
пароль пользователя=1234
привязкаdnpw = 1234
мгрп=1234
DNS1=192.168.3.1
DNS2=192.168.3.2
LDAPMASTERIP=10.175.235.220
СССДIP=10.175.235.210
СЕТЕВАЯ МАСКА=255.255.255.0
ШЛЮЗIP=10.175.235.1


кошка <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
УСТРОЙСТВО=eth0
BOOTPROTO=статический
IPADDR=$LDAPMASTERIP
СЕТЕВАЯ МАСКА=$NETMASKIP
ШЛЮЗ=$ШЛЮЗIP
DNS1=$DNS1
DNS2=$DNS2
ONBOOT=да
HOSTNAME=`cat /proc/sys/kernel/hostname`
ТИП=Ethernet
МТУ=
DHCP_HOSTNAME=`cat /proc/sys/kernel/hostname`
IPV6INIT=да
EOF

еслидаун eth0

если eth0

кошка <<EOF > /etc/yum.repos.d/appstream.repo
[приложение]
имя = Оракул Линукс
baseurl=http://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/
включено=1
gpgcheck=1
gpgkey=файл:///etc/pki/rpm-gpg/RPM-GPG-KEY-оракул

EOF

кошка <<EOF > /etc/yum.repos.d/base.repo
[база]
имя = Оракул Линукс
базовый URL=https://yum.oracle.com/repo/OracleLinux/OL8/3/baseos/base/x86_64/
включено=1
gpgcheck=1
gpgkey=файл:///etc/pki/rpm-gpg/RPM-GPG-KEY-оракул
прокси=http://www-proxy.web.boeing.com:31060
EOF

кошка <<EOF > /etc/yum.repos.d/powertools.repo
[электроинструменты]
имя = Оракул Линукс
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL8/codeready/builder/x86_64/
включено=1
gpgcheck=1
gpgkey=файл:///etc/pki/rpm-gpg/RPM-GPG-KEY-оракул

EOF

echo "10.175.235.220 $ldaphostname $ldaphostname.$domain.$suffix" >> /etc/hosts

#https://www.server-world.info/en/note?os=CentOS_7&p=openldap
yum -y установить openldap-servers openldap-clients firewalld mlocate man openssl hostname sssd-tools openssh-server nss-pam-ldapd nano --nobest

кот <<EOF > /etc/sudo-ldap.conf
binddn cn=менеджер,dc=$домен,dc=$суффикс
привязка 1234
ssl start_tls
tls_cacertfile = /etc/pki/tls/cacert.crt
sudoers_base = ou=SUDOers,DC=$домен,DC=$суффикс
tls_checkpeer yesuri ldaps://$ldaphostname:636
bind_timelimit 5
срок 15
EOF

обновленоb
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG 
чаун лдап. /var/lib/ldap/DB_CONFIG 
systemctl включить --now sshd
systemctl включить --now slapd 

кошка <<EOF > chrootpw.ldif 
# указываем сгенерированный выше пароль для раздела "olcRootPW"
DN: olcDatabase={0}config,cn=config
тип изменения: изменить
добавить: olcRootPW
olcRootPW: $(slappasswd -s $olcRootPW)
EOF

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/ldapserver.key -out /etc/pki/tls/ldapserver.crt -subj "/C=XX/L=Город по умолчанию /O=Компания по умолчанию/CN=$ldaphostname"

chown ldap:ldap /etc/pki/tls/{ldapserver.crt,ldapserver.key}

кошка > add-tls.ldif << 'EOL'
DN: cn=config
тип изменения: изменить
добавить: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/pki/tls/ldapserver.crt
-
добавить: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/pki/tls/ldapserver.key
-
добавить: olcTLSCertificateFile
olcTLSCertificateFile: /etc/pki/tls/ldapserver.crt
EOL

кошка <<EOF > /etc/openldap/ldap.conf
#
# LDAP по умолчанию
#

# Подробности смотрите в ldap.conf(5)
# Этот файл должен быть доступен для чтения всем, но не для записи.

БАЗА dc=$domain,dc=$суффикс
URI ldaps://$ldaphostname:636
#ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT 12
#ВРЕМЯЛИМИТ 15
#ДЕРЕФ никогда

# Если сертификаты ЦС не указаны, разделяемые системные сертификаты
# используются. Чтобы они были доступны вместе с указанными
# по TLS_CACERTDIR их нужно включать явно:
#TLS_CACERT /etc/pki/tls/cert.pem
TLS_CACERT /etc/pki/tls/ldapserver.crt

# Общесистемные политики шифрования предоставляют актуальный набор шифров, который
# можно использовать, если только не требуется более тщательный выбор шифров. Следовательно
# Значение PROFILE=SYSTEM представляет поведение по умолчанию, которое установлено
# когда не используется явная настройка. (дополнительную информацию см. в openssl-ciphers(1)).
#TLS_CIPHER_SUITE ПРОФИЛЬ=СИСТЕМА

# Отключение прерывает использование GSSAPI с krb5, когда rdns = false
SASL_NOCANON на
sudoers_base ou=SUDOers,dc=$домен,dc=$суффикс
SUDOERS_DEBUG 1
EOF

кошка << 'EOF' > /etc/openldap/schema/sudo.ldif
DN: cn=sudo,cn=схема,cn=config
объектный класс: olcSchemaConfig
Сп: судо
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'Пользователи, которые могут запускать sudo' РАВЕНСТВО caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch СИНТАКСИС 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Хосты, которые могут запускать sudo' РАВЕНСТВО caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch СИНТАКСИС 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Команда(ы) для выполнения sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 ИМЯ 'sudoRunAs' DESC 'Пользователи, представленные sudo (устаревшие)' РАВЕНСТВО caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Параметры (ы), за которыми следует sudo' РАВЕНСТВО caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 ИМЯ 'sudoRunAsUser' DESC 'Пользователи, представленные sudo' РАВЕНСТВО caseExactIA5Match СИНТАКСИС 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Группы, олицетворяемые sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 ИМЯ 'sudoRole' SUP top СТРУКТУРНОЕ DESC 'Sudoer Entries' ДОЛЖЕН ( cn ) МОЖЕТ ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ описание ) )
EOF

cp /usr/share/doc/sudo/schema.OpenLDAP /etc/openldap/schema/sudo.schema

ldapadd -Y ВНЕШНИЙ -H ldapi:/// -f /etc/openldap/schema/sudo.ldif
ldapadd -Y ВНЕШНИЙ -H ldapi:/// -f add-tls.ldif
ldapadd -Y ВНЕШНИЙ -H ldapi:/// -f chrootpw.ldif 
ldapadd -Y ВНЕШНИЙ -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y ВНЕШНИЙ -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y ВНЕШНИЙ -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

mkdir /var/lib/openldap
чаун лдап. /var/lib/openldap

кошка > rootdn.ldif << 'EOL'
DN: olcDatabase=mdb,cn=config
класс объекта: олкдатабасеконфиг
класс объекта: олкмдбконфиг
olcDatabase: mdb
Олкдбмаксизизе: 42949672960
olcSuffix: dc=$домен,dc=$суффикс
olcRootDN: cn=менеджер,dc=$домен,dc=$суффикс
olcRootPW: секрет
olcDbDirectory: /var/lib/openldap
olcDbIndex: uid pres,eq
olcDbIndex: cn, sn pres, eq, приблизительно, sub
olcDbIndex: почта pres,eq,sub
olcDbIndex: объектный класс pres,eq
olcDbIndex: loginShell pres,eq
olcDbIndex: sudoUser, sudoHost pres, eq
EOL

ldapdd -Y ВНЕШНИЙ -H ldapi:/// -f rootdn.ldif


кошка <<EOF > chdomain.ldif

DN: olcDatabase={1}монитор,cn=config
тип изменения: изменить
заменить: olcAccess
olcAccess: {0}к * по dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  прочитано dn.base="cn=Manager,dc=$domain,dc=$suffix" прочитано * нет

DN: olcDatabase={2}mdb,cn=config
тип изменения: изменить
заменить: olcSuffix
olcSuffix: dc=$домен,dc=$суффикс

DN: olcDatabase={2}mdb,cn=config
тип изменения: изменить
заменить: olcRootDN
olcRootDN: cn=менеджер,dc=$домен,dc=$суффикс

DN: olcDatabase={2}mdb,cn=config
тип изменения: изменить
добавить: olcRootPW
olcRootPW: $(slappasswd -s $olcRootPW)

DN: olcDatabase={2}mdb,cn=config
тип изменения: изменить
добавить: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=$domain,dc=$suffix" написать анонимно авторизоваться самостоятельно написать * none
olcAccess: {1}к dn.base="" по * read
olcAccess: {2}в * от dn="cn=Manager,dc=$domain,dc=$suffix" запись от * чтение
olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire
  самостоятельно написать
  по анонимной авторизации
  по dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" управлять 
  по dn.subtree="ou=System,dc=$domain,dc=$suffix" читать
  по * нет
olcAccess: к dn.subtree="ou=System,dc=$domain,dc=$suffix" через dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" управлять
  по * нет
olcAccess: для управления dn.subtree="dc=$domain,dc=$suffix" по dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  пользователями прочитано 
  по * нет
EOF

ldapmodify -Y ВНЕШНИЙ -H ldapi:/// -f chdomain.ldif

cat <<EOF > на основедомена.ldif
# замените на свое доменное имя для раздела "dc=***,dc=***"

DN: dc=$домен,dc=$суффикс
класс объекта: верхний
объектный класс: dcObject
класс объекта: организация
o: суффикс $domain $
DC: $ домен

DN: cn=менеджер,dc=$домен,dc=$суффикс
objectClass: организационная роль
Сп: менеджер
описание: Диспетчер каталогов

DN: ou=System,dc=$domain,dc=$suffix
objectClass: организационная единица
класс объекта: верхний
или: система

DN: ou=Users,dc=$domain,dc=$suffix
objectClass: организационная единица
класс объекта: верхний
или: Пользователи

DN: ou=группы,dc=$домен,dc=$суффикс
objectClass: организационная единица
класс объекта: верхний
или: Группы

EOF

ldapadd -x -w $olcRootPW -D cn=Manager,dc=$domain,dc=$suffix -f на основедомена.ldif

systemctl запустить firewalld
systemctl включить firewalld
firewall-cmd --add-service={ldap,ldaps} --постоянный 
брандмауэр-cmd --перезагрузить

кошка <<EOF > sudoersou.ldif
dn: ou=SUDOers,dc=$domain,dc=$suffix
objectClass: организационная единица
ou: SUDOers
описание: $domain-$suffix LDAP SUDO Entry
EOF

ldapadd -x -w $olcRootPW -D cn=Manager,dc=$domain,dc=$suffix -f sudoersou.ldif

кошка <<EOF > users_n_groups.ldif

dn: cn=только для чтения,ou=система,dc=$домен,dc=$суффикс
objectClass: организационная роль
класс объекта: простой объект безопасности
сп: только для чтения
пароль пользователя: $(slappasswd -s $binddnpw)
описание: Привязать DN пользователя для операций LDAP

DN: uid=adam,ou=Users,dc=$domain,dc=$suffix
класс объекта: верхний
класс объекта: учетная запись
класс объекта: posixAccount
класс объекта: shadowAccount
Сп: Адам
ИД: Адам
uidNumber: 16859
номер_гида: 100
homeDirectory: /home/adam
логинShell: /bin/bash
gecos: Адам
пароль пользователя: $(slappasswd -s $userpw)
теньластчанже: 0
теньМакс.: 0
теньПредупреждение: 0
EOF
ldapdd -x -w $olcRootPW -D "cn=Manager,dc=$domain,dc=$suffix" -f users_n_groups.ldif

#cvtsudoers -b ou=SUDOers,dc=$domain,dc=$suffix -o sudoers.ldif /etc/sudoers

кошка <<EOF > sudoers.ldif
dn: cn=defaults,ou=SUDOers,dc=$domain,dc=$suffix
класс объекта: верхний
класс объекта: 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
EOF

ldapadd -x -w $olcRootPW -D cn=Manager,dc=$domain,dc=$suffix -f sudoers.ldif

кошка <<EOF > indsudoers.ldif
dn: cn=sudo,ou=SUDOers,dc=$domain,dc=$suffix
класс объекта: верхний
класс объекта: sudoRole
Сп: судо
sudoUser: Адам
sudoHost: ВСЕ
sudoRunAsUser: ВСЕ
Судокоманда: ВСЕ
EOF

ldapadd -x -w $olcRootPW -D cn=Manager,dc=$domain,dc=$suffix -f indsudoers.ldif

#ldappasswd -s $olcRootPW -w $userpw -D "cn=Manager,dc=$domain,dc=$suffix" -x "uid=adam,ou=Users,dc=$domain,dc=$suffix"

#ldappasswd -s $olcRootPW -w $binddnpw -D "cn=Manager,dc=$domain,dc=$suffix" -x "cn=readonly,ou=System,dc=$domain,dc=$suffix"

SSD-контейнер

lxc остановить ldap-sssd-try2 --force; lxc удалить ldap-sssd-try2; Образы запуска lxc: oracle/8/amd64 ldap-sssd-try2; lxc exec ldap-sssd-try2 пароль; консоль lxc ldap-sssd-try2;

вставить в контейнер SSSD

ldaphostname="ldapmaster"
домен = "пример"
суффикс = "com"
olcRootPW = 1234
пароль пользователя=1234
привязкаdnpw = 1234
мгрп=1234
DNS1=192.168.3.1
DNS2=192.168.3.2
LDAPMASTERIP=10.175.235.220
СССДIP=10.175.235.210
СЕТЕВАЯ МАСКА=255.255.255.0
ШЛЮЗIP=10.175.235.1

кошка <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
УСТРОЙСТВО=eth0
BOOTPROTO=статический
IPADDR=$SSSDIP
СЕТЕВАЯ МАСКА=$NETMASKIP
ШЛЮЗ=$ШЛЮЗIP
DNS1=$DNS1
DNS2=$DNS2
ONBOOT=да
HOSTNAME=`cat /proc/sys/kernel/hostname`
ТИП=Ethernet
МТУ=
DHCP_HOSTNAME=`cat /proc/sys/kernel/hostname`
IPV6INIT=да
EOF

еслидаун eth0

если eth0

кошка <<EOF > /etc/yum.repos.d/appstream.repo
[приложение]
имя = Оракул Линукс
baseurl=http://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/
включено=1
gpgcheck=1
gpgkey=файл:///etc/pki/rpm-gpg/RPM-GPG-KEY-оракул
EOF

кошка <<EOF > /etc/yum.repos.d/base.repo
[база]
имя = Оракул Линукс
базовый URL=https://yum.oracle.com/repo/OracleLinux/OL8/3/baseos/base/x86_64/
включено=1
gpgcheck=1
gpgkey=файл:///etc/pki/rpm-gpg/RPM-GPG-KEY-оракул
прокси=http://www-proxy.web.boeing.com:31060
EOF

кошка <<EOF > /etc/yum.repos.d/powertools.repo
[электроинструменты]
имя = Оракул Линукс
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL8/codeready/builder/x86_64/
включено=1
gpgcheck=1
gpgkey=файл:///etc/pki/rpm-gpg/RPM-GPG-KEY-оракул
EOF

echo "10.175.235.220 $ldaphostname $ldaphostname.$domain.$suffix" >> /etc/hosts

yum install -y hostname openssh-server nmap openssl sssd sssd-tools oddjob-mkhomedir authselect openldap-clients openldap-servers sssd-tools nss-pam-ldapd bind-utils nano mlocate --nobest

systemctl включить --now sshd

кот <<EOF > /etc/sudo-ldap.conf
binddn cn=менеджер,dc=$домен,dc=$суффикс
привязка 1234
ssl start_tls
tls_cacertfile = /etc/pki/tls/cacert.crt
sudoers_base = ou=SUDOers,DC=$домен,DC=$суффикс
tls_checkpeer yesuri ldaps://$ldaphostname:636
bind_timelimit 5
срок 15
EOF

кот <<EOF > /etc/sssd/sssd.conf
[СССД]
сервисы = nss, pam, sudo
config_file_version = 2
домены = LDAP

[судо]

[нсс]

[пэм]
offline_credentials_expiration = 60

[домен/LDAP]
ldap_id_use_start_tls = Истина
cache_credentials = Ложь
ldap_search_base = dc=$домен,dc=$суффикс
id_provider = лдап
auth_provider = ldap
chpass_provider = ldap
провайдер_доступа = ldap
sudo_provider = ldap
ldap_uri = ldaps://$ldaphostname:636
ldap_chpass_uri = ldaps://$ldaphostname:636
#ldap_default_bind_dn = cn=менеджер,dc=$домен,dc=$суффикс
#ldap_default_authtok = $olcRootPW
ldap_default_bind_dn = cn=только для чтения,ou=система,dc=$домен,dc=$суффикс
# кажется, не имеет значения, использую ли я mapldap_default_authtok_type
#mapldap_default_authtok_type = пароль
ldap_default_authtok = $binddnpw
ldap_user_search_base = ou=Пользователи,DC=$домен,DC=$суффикс
ldap_tls_reqcert = спрос
ldap_tls_cacert = /etc/pki/tls/cacert.crt
ldap_tls_cacertdir = /etc/pki/tls
ldap_search_timeout = 50
ldap_network_timeout = 60
ldap_sudo_search_base = ou=SUDOers,DC=$domain,DC=$suffix
ldap_access_order = фильтр
ldap_access_filter = (objectClass=posixAccount)
EOF

authselect выбрать sssd --force

chown -R корень: /etc/sssd

chmod 600 -R /etc/sssd

systemctl включить --now sssd

кошка <<EOF > /etc/openldap/ldap.conf
#
# LDAP по умолчанию
#

# Подробности смотрите в ldap.conf(5)
# Этот файл должен быть доступен для чтения с суффиксом $, но не для записи с суффиксом $.

БАЗА dc=$domain,dc=$суффикс
URI ldaps://$ldaphostname:636
#SUDOers_BASE ou=SUDOers,dc=ldapmaster,dc=ldapmaster,dc=com

#SIZELIMIT 12
#ВРЕМЯЛИМИТ 15
#ДЕРЕФ никогда

# Если сертификаты ЦС не указаны, разделяемые системные сертификаты
# используются. Чтобы они были доступны вместе с указанными
# по TLS_CACERTDIR их нужно включать явно:
#TLS_CACERT /etc/pki/tls/cert.pem
TLS_CACERT /etc/pki/tls/cacert.crt

# Общесистемные политики шифрования предоставляют актуальный набор шифров, который
# можно использовать, если только не требуется более тщательный выбор шифров. Следовательно
# Значение PROFILE=SYSTEM представляет поведение по умолчанию, которое установлено
# когда не используется явная настройка. (дополнительную информацию см. в openssl-ciphers(1)).
#TLS_CIPHER_SUITE ПРОФИЛЬ=СИСТЕМА

# Отключение прерывает использование GSSAPI с krb5, когда rdns = false
SASL_NOCANON на
sudoers_base ou=SUDOers,dc=$домен,dc=$суффикс
SUDOERS_DEBUG 1
EOF

openssl s_client -connect $ldaphostname:636 < /dev/null -showcerts | openssl x509-текст | сед-не '
   /-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p # получил диапазон, ок
   /-END CERTIFICATE-/q # выключение, как только будет виден конец сертификата
' > /etc/pki/tls/cacert.crt

echo "sudoers: файлы ldap" >> /etc/nsswitch.conf

systemctl перезапустить sssd

systemctl включить --now oddjobd

echo "необязательный сеанс pam_oddjob_mkhomedir.so skel=/etc/skel/umask=0022" >> /etc/pam.d/system-auth

перезапустить systemctl

Если я запрашиваю с помощью ldapsearch

домен = "пример"
суффикс = "com"
экспортировать SUDOERS_BASE=ou=SUDOers,DC=$domain,DC=$suffix

ldapsearch -b "$SUDOERS_BASE" -D cn=Manager,DC=$domain,DC=$suffix -W -x adam

я получил

Введите пароль LDAP:
# расширенный LDIF
#
# LDAPv3
# base <ou=SUDOers,DC=example,DC=com> с поддеревом области видимости
# фильтр: (objectclass=*)
# запрос: Адам
#

# SUDO-пользователи, example.com
DN: ou=SUDOers,dc=example,dc=com

# Адам, SUDOers, example.com
DN: cn=adam,ou=SUDOers,dc=example,dc=com

# значения по умолчанию, SUDOers, example.com
DN: cn=значения по умолчанию,ou=SUDOers,dc=example,dc=com

# результат поиска
поиск: 2
результат: 0 успех

# числоОтветов: 4
# количество записей: 3

Если я побегу

домен = "пример"
суффикс = "com"
экспортировать SUDOERS_BASE=ou=SUDOers,DC=$domain,DC=$suffix

ldapsearch -b "$SUDOERS_BASE" -D cn=Manager,DC=$domain,DC=$suffix -w 1234 -x

я получил

# расширенный LDIF
#
# LDAPv3
# base <ou=SUDOers,DC=example,DC=com> с поддеревом области видимости
# фильтр: (objectclass=*)
# запрос: ВСЕ
#

# SUDO-пользователи, example.com
DN: ou=SUDOers,dc=example,dc=com
objectClass: организационная единица
ou: SUDOers
описание: запись example-com LDAP SUDO

# sudo, SUDOers, example.com
DN: cn=sudo,ou=SUDOers,dc=example,dc=com
класс объекта: верхний
класс объекта: sudoRole
Сп: судо
sudoUser: Адам
sudoHost: ВСЕ
sudoRunAsUser: ВСЕ
Судокоманда: ВСЕ

# значения по умолчанию, SUDOers, example.com
DN: cn=значения по умолчанию,ou=SUDOers,dc=example,dc=com
класс объекта: верхний
класс объекта: 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

# результат поиска
поиск: 2
результат: 0 успех

# числоОтветов: 4
# количество записей: 3
Рейтинг:0
флаг cf

проблема была в лишнем пробеле после /etc/nsswitch.conf

echo "sudoers: файлы ldap sss" >> /etc/nsswitch.conf

как только это было исправлено, пришлось установить

libsss_sudo

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

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