2015-12-09 2 views
0

Я пытаюсь интегрировать автономный продукт в среду 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, которую я могу использовать для запроса только локальных пользователей/групп?

ответ

0

Короткий ответ - цель этих вызовов функций состоит в том, чтобы сделать механизмы аутентификации прозрачными. Вы можете использовать , и никто не захочет вручную перевернуть свои собственные локальные файлы/ldap/yp/nis +/произвольный механизм аутентификации PAM.

Если вы специально заинтересованы в содержании местных passwd и group файлов, я хотел бы предложить ответ - читать тех, кто непосредственно.

+0

Это то, чего я пытался избежать, так как я постоянно читаю везде, где плохое знание читает файл вместо использования предоставленных механизмов. Спасибо, хотя мои подозрения были подтверждены. – pacmanwa

+0

Плохая практика - вы должны использовать механизмы os, когда можете, потому что вы не должны (не должны) заботиться об источнике auth. Но более важный вопрос - _why_ - ваш трюк без местной группы. Он должен использовать те же самые механизмы. – Sobrique

+0

Сценарий проверяет наличие локальных пользователей и групп и создает их, если они не найдены, если они найдены, устанавливают их в номера идентификаторов группы/пользователя, предоставленные входным XML-файлом. Проблема заключается в том, что при использовании LDAP в качестве источника аутентификации механизмы os будут возвращать результаты LDAP, если существует идентичное имя группы ldap. Поверьте мне, я бы не делал этого таким образом, если бы мне этого не нужно, но то, что происходит, когда вы наследуете базу кода, и нет бюджета для исправления основной проблемы ... просто добавьте ее в «нам нужно бюджет для ... "и продолжайте грузоперевозки. – pacmanwa

Смежные вопросы