Summary: | Samba+LDAP - проблемы с созданием машинных аккаунтов | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Vladimir Lettiev <crux> | ||||
Component: | samba | Assignee: | Evgeny Sinelnikov <sin> | ||||
Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P2 | CC: | sin | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Vladimir Lettiev
2004-06-17 13:34:53 MSD
getpwnam() ищет по базам, указанным в /etc/nsswitch.conf в том порядке, в котором они там прописаны. Так что если записи в LDAP не находятся, то причиной может быть отсутствие записи "ldap" в /etc/nsswitch.conf. С другой стороны, другие записи, видимо, доступны по getent passwd, значит, настроено в /etc/nsswitch.conf верно. Тогда может быть проблема в двух местах: 1. Схема в LDAP не соответствует реальности Samba 3.0.3-alt1.1. Это может быть, если соответствующее хранилище создавалось до 3.0.2. 2. Ошибка в nss_ldap при работе с символом $. Судя по приведенному сообщению от pdbedit, очень похоже на (1). Created attachment 433 [details] pdbedit output Я смотрел новую схему, у меня действительно была старая, но, к сожалению, добавление машинных аккаунтов не работало ещё на сборке alt46, поэтому установка новой схемы и рестарт ldap и samba ничего не изменило. Отличия в схеме слишком незначительные (на мой взгляд). Настройку samba+ldap я делал ещё в прошлом году и по итогам написал статью http://unix.nordcomp.ru/articles.html?id=17 , изложенная там конфигурация практически ничем отличается от того, что у меня сейчас (за исключением обновлённой версии samba). Приведу вывод pdbedit на уровне отладки 11, для двух случаев: добавление аккаунта с пользователем в /etc/passwd и без него: 1. # useradd -g machines -d /dev/null testcomp$ # pdbedit -d 11 -a -m testcomp вывод в атачменте pdbedit.1.txt 2. # pdbedit -x testcomp$ # userdel testcomp$ # pdbedit -d 11 -a -m testcomp вывод в атачменте pdbedit.2.txt Хочу обратить внимание на то, что после записи pdb backend guest has a valid init идёт расхождение в действиях pdbedit, если пользователь есть в /etc/passwd, то идёт создание sid'а (18-ый элемент) для него, а если нет, то -- нет... И это как раз различие в функциях pdb_init_sam_pw() и pdb_init_sam() element 18 -> now SET pdb_set_user_sid_from_rid: setting user sid S-1-5-21-2614677957-1106234284-1388258010-3372 from rid 3372 А как можно проверить второй вариант (Ошибка в nss_ldap при работе с символом $.)? Знак $ является специальным символом в shell, соответственно, для того чтобы его передать приложению, его надо экранировать с использованием символа \. Таким образом, это не ошибка Самбы, а ошибка входных параметров в useradd (нужно было написать либо testcomp\$, либо 'testcomp$' |