У меня есть серверы на базе RHEL 7 и 8.
Серверы RHEL 7 используют nslcd для работы с сервером LDAP, RHEL 8 использует SSSD.
Для RHEL 7 я могу предоставить пользователям доступ только к разрешенным хостам.
Эта функция покрывается опцией в nslcd.conf:
pam_authz_search (&(objectClass=posixAccount)(uid=$uid)(|(host=$hostname.\*)(host=\*)))
Я использую вариант "хост=$имя хоста.\* "для обычных пользователей, у которых есть список разрешенных серверов, "хост=\*" используется для администраторов, у которых есть * для атрибута хоста ldap.
SSSD имеет параметр ldap_access_filter и следующие настройки:
ldap_access_filter = (objectClass=posixAccount)
Все пользователи могут войти на все машины RHEL 8, чего я хочу избежать.
Можно ли добавить параметры хоста в ldap_access_filter, как это было в nslcd.conf на старых серверах?
Заранее спасибо.
УПД:
ldap_access_filter = (&(objectClass=posixAccount)(хост=\*))
работает для администраторов с * в атрибутах хоста ldapsearch:
~$ ldapsearch -LLL -Q -Z uid=узел пользователя-администратора
DN: uid=admin-user,ou=People,dc=my,dc=domain,dc=net
хозяин: *
Также я могу указать имя сервера напрямую:
ldap_access_filter = (&(objectClass=posixAccount)(host=servername.example.lan))
и это также работает для пользователей, у которых этот сервер есть в списке:
~$ ldapsearch -LLL -Q -Z uid=узел тестового пользователя
DN: uid=a-testuser,ou=люди,dc=мой,dc=домен,dc=net
хост: servername.example.lan
Но как я могу использовать переменные или специальные символы, такие как * или же \*?