LDAP Server

Поменял на серваке IP адрес и получаю теперь в логах Samba :

become_domain_master_browser_wins: querying WINS server from IP 192.168.2.252 for domain master browser name CALCULATE<1b> on workgroup CALCULATE
[2009/09/23 10:41:09, 0] nmbd/nmbd_become_dmb.c:become_domain_master_query_success(233)
become_domain_master_query_success:
There is already a domain master browser at IP 192.168.2.177 for workgroup CALCULATE registered on subnet UNICAST_SUBNET.
[2009/09/23 10:46:08, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(335)
become_domain_master_browser_wins:
Attempting to become domain master browser on workgroup CALCULATE, subnet UNICAST_SUBNET.
[2009/09/23 10:46:08, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(349)
become_domain_master_browser_wins: querying WINS server from IP 192.168.2.252 for domain master browser name CALCULATE<1b> on workgroup CALCULATE
[2009/09/23 10:46:09, 0] nmbd/nmbd_become_dmb.c:become_domain_master_query_success(233)
become_domain_master_query_success:
There is already a domain master browser at IP 192.168.2.177 for workgroup CALCULATE registered on subnet UNICAST_SUBNET.
[2009/09/23 10:46:17, 0] nmbd/nmbd_browsesync.c:domain_master_node_status_fail(248)
domain_master_node_status_fail:
Doing a node status request to the domain master browser
for workgroup CALCULATE at IP 192.168.2.177 failed.
Cannot sync browser lists.

Старый IP 192.168.2.177 новый 192.168.2.252.

Помимо этого в логах лдапа стали выскакивать ошибки типа <= bdb_equality_candidates: (ldap) index_param failed (13)

Как это всё исправить изменить IP необходимость есть и она остаётся :frowning:

Точнее в конфаг ldap вотчо

Sep 23 10:52:23 marchs slapd[5143]: bdb_db_cache: db_open(sambaSID) failed: Permission denied (13)
Sep 23 10:52:23 marchs slapd[5143]: <= bdb_equality_candidates: (sambaSID) index_param failed (13)
Sep 23 10:52:23 marchs slapd[5143]: <= bdb_equality_candidates: (sambaGroupType) not indexed
Sep 23 10:52:23 marchs slapd[5143]: <= bdb_equality_candidates: (sambaGroupType) not indexed
Sep 23 10:52:23 marchs slapd[5143]: bdb_db_cache: db_open(sambaSID) failed: Permission denied (13)
Sep 23 10:52:23 marchs slapd[5143]: <= bdb_equality_candidates: (sambaSID) index_param failed (13)

Вот содержимое slapd.conf
#------------------------------------------------------------------------------
# Modified Calculate-server 2.1.2
# File of a profile “profile/samba”
#------------------------------------------------------------------------------
include><------>/etc/openldap/schema/core.schema
include><------>/etc/openldap/schema/cosine.schema
include><------>/etc/openldap/schema/nis.schema
include><------>/etc/openldap/schema/inetorgperson.schema
include><------>/etc/openldap/schema/misc.schema
include><------>/etc/openldap/schema/samba.schema
pidfile><------>/var/run/openldap/slapd.pid
argsfile<------>/var/run/openldap/slapd.arg
loglevel<------>2
allow<[<-----]{style=“text-align:right;”}>bind_v2
modulepath<---->/usr/lib/openldap/openldap
access to attrs=userPassword
by dn=“cn=ldapadmin,dc=calculate” write
by dn=“ou=Samba,ou=Services,dc=calculate” write
by dn=“ou=Unix,ou=Services,dc=calculate” write
by self read
by * auth
access to attrs=sambaLMPassword,sambaNTPassword
by dn=“cn=ldapadmin,dc=calculate” write
by dn=“ou=Samba,ou=Services,dc=calculate” write
by * none
access to dn.base=“cn=proxyuser,dc=calculate”
by dn=“cn=ldapadmin,dc=calculate” write
by dn=“cn=proxyuser,dc=calculate” read
by * none
access to dn.base=“cn=ldapadmin,dc=calculate”
by dn=“cn=ldapadmin,dc=calculate” write
by * none
access to dn.regex=".*ou=Samba,ou=Services,dc=calculate$"
by dn=“cn=ldapadmin,dc=calculate” write
by dn=“ou=Samba,ou=Services,dc=calculate” write
by dn=“ou=Unix,ou=Services,dc=calculate” write
by dn=“cn=proxyuser,dc=calculate” read
by * none
access to dn.regex=".*ou=Unix,ou=Services,dc=calculate$"
by dn=“cn=ldapadmin,dc=calculate” write
by dn=“ou=Samba,ou=Services,dc=calculate” write
by dn=“ou=Unix,ou=Services,dc=calculate” write
by dn=“cn=proxyuser,dc=calculate” read
by * none
access to dn.regex=".*ou=([^,]+),ou=Services,dc=calculate$"
by dn=“cn=ldapadmin,dc=calculate” write
by dn.regex=“ou=$1,ou=Services,dc=calculate” write
by * none
access to dn.regex=".*,ou=Services,dc=calculate"
by dn=“cn=ldapadmin,dc=calculate” write
by * none
access to *
by dn=“cn=ldapadmin,dc=calculate” write
by self write
by * read
database<------>bdb
suffix<><------>“dc=calculate”
checkpoint<—[1024<-]{style=“text-align:right;”}>5
cachesize<----->10000
directory<----->/var/lib/openldap-data
index<[objectClass<–]{style=“text-align:right;”}>eq
index<[cn<—]{style=“text-align:right;”}><------>pres,sub,eq
index<[sn<—]{style=“text-align:right;”}><------>pres,sub,eq
index<[uid<–]{style=“text-align:right;”}><------>pres,sub,eq
index<[uidNumber<----]{style=“text-align:right;”}>eq
index<[gidNumber<----]{style=“text-align:right;”}>eq
index<[memberUID<----]{style=“text-align:right;”}>eq
index<[uniqueMember<-]{style=“text-align:right;”}>eq,pres
index<[displayName<–]{style=“text-align:right;”}>pres,sub,eq
index<[sambaSID<-----]{style=“text-align:right;”}>eq
index<[sambaSIDList<-]{style=“text-align:right;”}>eq
index<[sambaPrimaryGroupSID<-]{style=“text-align:right;”}>eq
index<->sambaDomainName>eq
index<[default><-----]{style=“text-align:right;”}>sub

Скорее всего у Вас проблемы с индексацией базы данных LDAP
выполните команду cl-rebuild
после этой команды у вас уберутся ненужные индексы

Я пробывал с помощью стандартных комманд индексации но не помогло. Через cl-rebuild помогло но откинуло на месяц назад. Но и шут с ним главное понял что в калькуляторе все свое - может хорошо может нет пока не понял. Выплыла ещё одна проблема может тока у меня не знаю. Но при настройке самбы упёрся в следующее:

  1. через USRMGR создаю пользователя test
    1.1 test вносится и в unix и samba базу
    1.2 для test устанавливаю пароль (через USRMGR) - в samba базу пароль вносится нормально как SSHA а в unix как crypt само собой юзер не входит в домен
    1.3. для устранения этого недостатка ставлю в smb.conf - unix password sync = yes - ldap passwd sync = yes и вроде начинает работать но редко но пишет нет доступа но работает !
    Если просто с командной строки калька то работает всё ок и пароль правильно заносится кругом.
    Я просто к чему - может я что то не включил где то (не пойму где :frowning: ), но добавляю пользователя стандартными криптами самбы типа add user script = /usr/bin/cl-useradd “%u” samba и вот такой проблем :frowning: Может я в чём не прав :frowning: или может при компиляции самбы эти параметры вносить сразу чтоб голову не ломать ?

Проблема в том что при использовании windows компьютера как менеджера samba (если sambа использует LDAP), cкрипт добавления пользователя не отрабатывается, windows компьютер работает напрямую, отсюда ошибки.

А вот еще вопрос:
По умолчанию в /etc/calculate/calculate.ldap забито:

[admin]
DN = cn=ldapadmin,dc=calculate
PASS = пароль
[unix]
DN = ou=Unix,ou=Services,dc=calculate
PASS = пароль
[samba]
DN = ou=Samba,ou=Services,dc=calculate
PASS = пароль

А если я его переправлю на

[admin]
DN = cn=ldapadmin,dc=bereg
PASS = пароль
[unix]
DN = ou=Unix,ou=Services,dc=bereg
PASS = пароль
[samba]
DN = ou=Samba,ou=Services,dc=bereg
PASS = пароль

Это кончится крахом для системы, или достаточно запустить cl-rebuild и все пройдет :slight_smile: ?

И если точнее, можно-ли ldap сервер как настроить под свои названия, или во избежания краха лучше ldap не трогать. Я, пока только настраиваю сервер, потому очень желательно подобные мелочи сделать сейчас, а не позже.
И есть ли какая дока, как настраивать на “подробном” уровне ldap-server, с указание имен и названий предприятия.
Я имею виду с учетом скриптос CL, не wiki для ldap-gentoo.

Изменить корневой DN штатными средствами calculate-server не получится.

Вариант изменения базового DN.
Слить базу LDAP в текстовый файл.
Изменить базовый DN в текстовом файле базы LDAP (во всех элементах).
Изменить базовый DN в файле /etc/calculate/calculate.ldap
Изменить базовый DN в файле /var/calculate/remote/calculate.env
Добавить в файл /var/calculate/calculate.env, секция [server]

 get_ld_base_dn = dc=bereg

Остановить LDAP сервер.
Удалить существующую базу.
Сделать копию существующего файла /etc/openldap/slapd.conf
Изменить конфигурационный файл /etc/openldap/slapd.conf
добавить
rootdn для новой базы
rootpw для новой базы
Удалить все условные блоки в /etc/openldap/slapd.conf
Запустить LDAP сервер
Залить измененную базу LDAP.
Изменить базовый DN в копии /etc/openldap/slapd.conf
Скопировать копию /etc/openldap/slapd.conf в /etc/openldap/slapd.conf
Перезапустить LDAP сервер
Если все сделано правильно, то будет изменен базовый DN и calculate-сервер будет работать с измененным DN

И все же я не советую Вам изменять базовый DN.

Утилиты calculate-server используют при бекапе и восстановлении целиком базу LDAP. Поэтому не получится использовать другие ветки отдельно от calculate-server, то есть в изменении базового DN нет большого смысла.

В дальнейшем при расширении функционала утилит может появится такая возможность.

И все же я не советую Вам изменять базовый DN.

Да, я это понял :slight_smile:
Ничего страшного, поработую с тем что есть.

Тогда попутный вопрос:
Когда я выполняю cl-client ds - на клиентской машине, мне возвращается:

 Can not execute "ping -c 2 -i 0.3 ds.local

Это понятно, ибо сервер у меня не ds.local, а:

host ds
ds.xxx.local.net has address 1x2.x.x.x

То есть - ds.xxx.local.net.
В результате, я делаю cl-client ds.xxx.local.net и все нормально
Мне с этим смириться, или есть возможность простыми путями заставить сервер работать с * xxx.local.net* а не с local?

Дело в том, что DNS на ds я пока не поднимал, у меня он уже работает. Но я собираюсь его перетащить на ds, и посему еще вопрос:
Мне локальную сетку следует переделать как local, или можно делать как она сейчас у меня xxx.local.net?

Настройте домен на клиенсткой машине
Примеры для имени клиентского компьютера comp1
Либо правкой /etc/hosts

127.0.0.1       comp1.xxx.local.net comp1 localhost

Либо настройте DNS, нужно добавить A-запись для comp1.xxx.local.net, и прописать в /etc/resolv.conf

search  xxx.local.net

Либо настройте dhcp и DNS для автоматической настройки домена.

Посмотреть текущий домен можно командой:

hostname -d

А все это у меня добавлено, и настроено!
На уровне DNS все как часы!
вот:
calculate Desktop # host ds
ds.xxx.local.net has address 1xx.x.x.x

И в /etc/hosts я прописал.
Но!

cat /etc/hosts 
#------------------------------------------------------------------------------
 # Changed by Calculate 1.2.9
 # Changes to profile "install/1default".
#------------------------------------------------------------------------------

127.0.0.1   calculate.local calculate localhost
xxx.xx.xx.xx3   tux.xxx.local.net   tux 

hostname -d
local
hostname -f
calculate.local

:frowning:
Вот откуда он этот локал достает?
Может надо гдето в gentoo - прописать домен?

А похоже, что это всетаки косяк!
Я попробывал hostname -d в gentoo, там все нормально!
А тут я что только не пробывал :frowning:
Причем и дома, и на работе. Дома у меня dhcp от роутера, на работе и dns, и dhcp поднято. Да и в /etc/hosts пытался вписывать, и в /etc/conf.d/net .
Ничего не помогает :frowning:

Из файла /usr/calculate/install/profile/1default/etc/hosts
Можно создать свой профиль с другими настройками в директории /usr/calculate/share/profile/ИМЯ_ПРОФИЛЯ/etc/hosts

P.S. а hostname -f что пишет?

Отвечаю на свой вопрос:
Дело не в Ldap, а в /etc/hosts

Там первой строчкой localhost … local
Эту строчку надо закомментирывать.

Из файла /usr/calculate/install/profile/1default/etc/hosts
Можно создать свой профиль с другими настройками в директории /usr/calculate/share/profile/ИМЯ_ПРОФИЛЯ/etc/hosts
P.S. а hostname -f что пишет?

Как я понимаю, этот профиль бует жить на сервере, и при входе в домен - синхронизирываться?

ps
Каталог профиль в /usr/calculate/install/ - отсутствует, его надо создать?

Как я понимаю, этот профиль бует жить на сервере, и при входе в домен - синхронизирываться?
ps
Каталог профиль в /usr/calculate/install/ - отсутствует, его надо создать?

Этот профиль применяется во время установки системы. Директория /usr/calculate/install - утилиты calculate, для изменений, используйте директорию /usr/calculate/share

Сорри за глупый вопрос, но как я понял задать корневой DN у LDAP нельзя даже при установке?
т.е. он у вас жестко вписан как calculate и штатными средствами не задаётся при конфигурировании?

Сорри за глупый вопрос, но как я понял задать корневой DN у LDAP нельзя даже при установке?
т.е. он у вас жестко вписан как calculate и штатными средствами не задаётся при конфигурировании?

Поскольку утилиты Calculate полностью управляют настройками openldap, путь в ldap прописан в программе жестко. Имя корневого домена ни на что не влияет и прописан как стандартный путь для хранения.

Поскольку утилиты Calculate полностью управляют настройками openldap, путь в ldap прописан в программе жестко. Имя корневого домена ни на что не влияет и прописан как стандартный путь для хранения.

А на что тогда влияют переменные ldap_* задаваемые для команды calculate ?

А на что тогда влияют переменные ldap_* задаваемые для команды calculate ?

В пакете calculate-server нет переменных ldap** а есть переменные ld** и они влияют на настройку LDAP.
В настоящее время штатными средствами нельзя поменять корневой DN. То есть переменную для корневого DN можно установить но она будет удалена программой перед установкой LDAP сервиса.