Я пытаюсь интегрировать автономный продукт в среду LDAP.Используйте getgrnam() для запроса только локальных групп
У меня есть система RHEL 6.7, которая настроена для аутентификации ldap (через sss), что мне необходимо программным образом добавить локальных пользователей и группы.
Входной файл xml содержит список пользователей и групп с их членством в группе, оболочкой входа, идентификатором пользователя и идентификатором группы, который следует использовать.
Теперь возникает проблема: у меня есть скрипт Perl, который использует XML-файл для настройки пользователей и групп, он использует getgrnam и getpwnam для запроса для пользователей и групп, а затем выполняет системный вызов groupmod/groupadd и usermod/useradd, если пользователь существует или нет. Я обнаружил, что если LDAP имеет группу с тем же именем, что и группа, которую я пытаюсь создать, мой скрипт увидит группу как существующую и перейдем к groupmod вместо groupadd. Тогда бинарные файлы группы будут выполнять операции только с локальными группами и сбой, потому что группа не существует локально. NSS настроен для проверки файлов, затем sss, что имеет смысл, почему getgrnam возвращает группу ldap.
Есть ли способ, чтобы getgrnam и getpwnam запрашивали локальную систему без необходимости перенастроить nsswitch.conf и, возможно, остановить/запустить SSSD при запуске скрипта?
Есть ли еще одна функция perl, которую я могу использовать для запроса только локальных пользователей/групп?
Это то, чего я пытался избежать, так как я постоянно читаю везде, где плохое знание читает файл вместо использования предоставленных механизмов. Спасибо, хотя мои подозрения были подтверждены. – pacmanwa
Плохая практика - вы должны использовать механизмы os, когда можете, потому что вы не должны (не должны) заботиться об источнике auth. Но более важный вопрос - _why_ - ваш трюк без местной группы. Он должен использовать те же самые механизмы. – Sobrique
Сценарий проверяет наличие локальных пользователей и групп и создает их, если они не найдены, если они найдены, устанавливают их в номера идентификаторов группы/пользователя, предоставленные входным XML-файлом. Проблема заключается в том, что при использовании LDAP в качестве источника аутентификации механизмы os будут возвращать результаты LDAP, если существует идентичное имя группы ldap. Поверьте мне, я бы не делал этого таким образом, если бы мне этого не нужно, но то, что происходит, когда вы наследуете базу кода, и нет бюджета для исправления основной проблемы ... просто добавьте ее в «нам нужно бюджет для ... "и продолжайте грузоперевозки. – pacmanwa