Главная > Linux > Контроллер домена (PDC) на samba+openLDAP
Контроллер домена (PDC) на samba+openLDAP18 мая 2009. Разместил: dimon |
Черновик! Не все операции завершены и описаны Задача: Перенастроить контроллер домена (PDC) на sambe на использование openLDAP + samba Серверная ОС – CentOS 5.2 Рабочие станции комплектуются ОС MS Windows XP. Сервер имеет два сетевых интерфейса: внешний: eth0 xxx.xxx.xxx.xxx внутренний: eth1 192.168.1.1/255.255.255.0 1. Устанавливаем yum install openldap-servers openldap-clients gcc nss_ldap 2. Копируем схемы самбы в openldap: [root@dsrv]# cp /usr/share/doc/samba-3.0.28/LDAP/samba.schema /etc/openldap/schema/samba.schema 3. Копируем smbldap-tools [root@dsrv]# cp /usr/share/doc/samba-3.0.28/LDAP/smbldap-tools-0.9.2 /etc/smbldap-tools Если их там нет, то лезем на сайт https://gna.org/projects/smbldap-tools/ и качаем нужную нам версию: [root@dsrv install]# wget http://download.gna.org/smbldap-tools/packages/smbldap -tools-0.9.5.tgz --15:41:20-- http://download.gna.org/smbldap-tools/packages/smbldap-tools-0.9.5 .tgz Resolving download.gna.org... 78.40.121.79 Connecting to download.gna.org|78.40.121.79|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 303131 (296K) [application/x-tar] Saving to: `smbldap-tools-0.9.5.tgz' 100%[=======================================>] 303,131 4.22K/s in 38s 15:41:59 (7.70 KB/s) - `smbldap-tools-0.9.5.tgz' saved [303131/303131] [root@dsrv install]# [root@dsrv install]# tar zxvf smbldap-tools-0.9.5.tgz smbldap-tools-0.9.5/ smbldap-tools-0.9.5/ChangeLog smbldap-tools-0.9.5/smbldap-passwd smbldap-tools-0.9.5/TODO smbldap-tools-0.9.5/smbldap-groupadd smbldap-tools-0.9.5/smbldap-tools.spec smbldap-tools-0.9.5/smbldap.conf smbldap-tools-0.9.5/smbldap-populate smbldap-tools-0.9.5/INFRA smbldap-tools-0.9.5/smbldap-userinfo smbldap-tools-0.9.5/smbldap-usershow smbldap-tools-0.9.5/README smbldap-tools-0.9.5/smbldap-useradd smbldap-tools-0.9.5/FILES smbldap-tools-0.9.5/doc/ smbldap-tools-0.9.5/doc/smb.conf smbldap-tools-0.9.5/doc/slapd.conf smbldap-tools-0.9.5/doc/smbldap-tools.html smbldap-tools-0.9.5/doc/migration_scripts/ smbldap-tools-0.9.5/doc/migration_scripts/smbldap-migrate-pwdump-accounts smbldap-tools-0.9.5/doc/migration_scripts/smbldap-migrate-unix-groups smbldap-tools-0.9.5/doc/migration_scripts/smbldap-migrate-pwdump-groups smbldap-tools-0.9.5/doc/migration_scripts/smbldap-migrate-unix-accounts smbldap-tools-0.9.5/doc/smbldap-tools.pdf smbldap-tools-0.9.5/smbldap-userlist smbldap-tools-0.9.5/smbldap_bind.conf smbldap-tools-0.9.5/smbldap_tools.pm smbldap-tools-0.9.5/COPYING smbldap-tools-0.9.5/smbldap-groupdel smbldap-tools-0.9.5/smbldap-groupshow smbldap-tools-0.9.5/Makefile smbldap-tools-0.9.5/smbldap-userdel smbldap-tools-0.9.5/INSTALL smbldap-tools-0.9.5/smbldap-usermod smbldap-tools-0.9.5/configure.pl smbldap-tools-0.9.5/CONTRIBUTORS smbldap-tools-0.9.5/smbldap-groupmod [root@dsrv install]# Даем права на исполнение скриптам (если их нету): [root@dsrv smbldap-tools]# ll total 224 -rw-r--r-- 1 root root 428 Jan 3 2006 smbldap_bind.conf -rw-r--r-- 1 root root 7785 Jan 3 2006 smbldap.conf -rw-r--r-- 1 root root 5987 Jan 3 2006 smbldap-groupadd -rw-r--r-- 1 root root 2473 Jan 3 2006 smbldap-groupdel -rw-r--r-- 1 root root 8881 Jan 3 2006 smbldap-groupmod -rw-r--r-- 1 root root 2005 Jan 3 2006 smbldap-groupshow -rw-r--r-- 1 root root 10294 Jan 3 2006 smbldap-passwd -rw-r--r-- 1 root root 14995 Jan 3 2006 smbldap-populate -rw-r--r-- 1 root root 28729 Jan 3 2006 smbldap_tools.pm -rw-r--r-- 1 root root 3988 Jan 3 2006 smbldap-tools.spec -rw-r--r-- 1 root root 20969 Jan 3 2006 smbldap-useradd -rw-r--r-- 1 root root 3244 Jan 3 2006 smbldap-userdel -rw-r--r-- 1 root root 7633 Jan 3 2006 smbldap-userinfo -rw-r--r-- 1 root root 18968 Jan 3 2006 smbldap-usermod -rw-r--r-- 1 root root 1958 Jan 3 2006 smbldap-usershow [root@dsrv smbldap-tools]# chmod u+x smbldap-* [root@dsrv smbldap-tools]# ll total 224 -rw-r--r-- 1 root root 428 Jan 3 2006 smbldap_bind.conf -rw-r--r-- 1 root root 7785 Jan 3 2006 smbldap.conf -rwxr--r-- 1 root root 5987 Jan 3 2006 smbldap-groupadd -rwxr--r-- 1 root root 2473 Jan 3 2006 smbldap-groupdel -rwxr--r-- 1 root root 8881 Jan 3 2006 smbldap-groupmod -rwxr--r-- 1 root root 2005 Jan 3 2006 smbldap-groupshow -rwxr--r-- 1 root root 10294 Jan 3 2006 smbldap-passwd -rwxr--r-- 1 root root 14995 Jan 3 2006 smbldap-populate -rw-r--r-- 1 root root 28729 Jan 3 2006 smbldap_tools.pm -rwxr--r-- 1 root root 3988 Jan 3 2006 smbldap-tools.spec -rwxr--r-- 1 root root 20969 Jan 3 2006 smbldap-useradd -rwxr--r-- 1 root root 3244 Jan 3 2006 smbldap-userdel -rwxr--r-- 1 root root 7633 Jan 3 2006 smbldap-userinfo -rwxr--r-- 1 root root 18968 Jan 3 2006 smbldap-usermod -rwxr--r-- 1 root root 1958 Jan 3 2006 smbldap-usershow 4. Правим /etc/openldap/slapd.conf Добавляем строки (подключаем файлы схем): include /etc/openldap/schema/samba.schema include /etc/openldap/schema/misc.schema include /etc/openldap/schema/openldap.schema ищем строку access to attrs и приводим блок к виду (при необходимости добавляем): access to attrs=userPassword by self write by dn = "uid=root,dc=sclad,dc=lan" write by anonymous auth by * none таким образом, определим доступ к атрибуту пароль пользователя. Сам пользователь имеет право записи, анонимному пользователю предоставляется возможность пройти аутентификацию (после этого он представляет уже другой объект и доступа к паролям анонимного пользователя не происходит, как можно было бы подумать) а пользователь с контекстом "uid=root,dc=sclad,dc=lan" имеет право на запись. Другие же пользователи доступа к паролю не имеют никакого. Т.е. другими словами никто, кроме администратора и самого пользователя не имеют доступа к паролю. добавляем блок: access to * by self write by dn="uid=root,dc=spec,dc=lan" write by anonymous auth by * none доступ к остальным полям базы LDAP – сам пользователь может читать атрибуты, а пользователь с контекстом root может писать всё что угодно, а анонимному пользователю предоставляется возможность пройти аутентификацию, остальные ничего не могут. с помощью проги slappasswd генерим пароль root и исправляем строки: database bdb suffix "dc=sclad,dc=lan" rootdn "cn=root,dc=sclad,dc=lan" rootpw {SSHA}Sm…MSm здесь database - тип базы данных suffix - основной суффикс БД (к этому я вернусь немного ниже) rootdn – описание объекта root rootpw - это поле содержит пароль администратора объекта root (то есть всей БД LDAP), используем в зашифрованном виде – сгенерированный slappasswd добавляем строки: index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq Таким образом, мы определяем первичные и вторичные индексы БД, что может ускорить поиск по БД loglevel 256 Этот ключ устанавливает slapd уровень отладки. Текущие уровни отладки: -1 включает всю отладочную информацию 0 без отладки 1 трассировать вызовы функций 2 отладка обработки пакетов 4 тщательная отладочная трассировка 8 управление соединением 16 печать принятых и отправленных пакетов 32 обработка фильтров поиска 64 обработка конфигурационного файла 128 обработка списка контроля доступа 256 регистрировать статистику соединения/обработки/результатов 512 регистрировать статистику отправленных элементов 1024 печать коммуникаций с shell механизмом базы данных 2048 печать отладки анализа элемента Для того чтобы увидеть логи ЛДАП-а мы так же должны добавить в файл /etc/syslog.conf следующее: # логи LDAP-сервера: local4.* /var/log/ldap.log 5. Копируем параметры базы LDAP сp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG Назначаем права на папку chown -R ldap:ldap /var/lib/ldap После того как вы настроили OpenLDAP, запустите его командой и посмотрим, слушает ли он порты: [root@dsrv openldap]# service ldap start Checking configuration files for slapd: config file testing succeeded [ OK ] Starting slapd: [ OK ] [root@dsrv openldap]# netstat -nap | grep slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 9985/slapd tcp 0 0 :::389 :::* LISTEN 9985/slapd unix 2 [ ] DGRAM 27715 9985/slapd 6. Правим /etc/ldap.conf, исправляя строки: # Сервер LDAP - ip адрес сервера или его # имя, находящееся в /etc/hosts, или в DNS на удалённом узле host 127.0.0.1 # Основной суфикс, должен совпадать с суфиксом в slapd.conf base dc=sclad,dc=lan # Версия протокола ldap_version 3 # Это root и его пароль rootbinddn cn=root,dc=sclad,dc=lan rootpw {SSHA}Sm…MSm # Порт, на котором работает LDAP port 389 # Область поиска scope one # Время ожидпния при поиске timelimit 30 # Timeout подключения к LDAP серверу bind_timelimit 10 # Если не удалось подключиться к LDAP, # То не пытаться переподключиться bind_policy soft # nss_ldap закроет подключение, если сервер # не ответит в указонное в idle_timelimit время idle_timelimit 3600 nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman # Базовые dn для поиска различных объектов, one - это область поиска. # Данные параметры используются nss. nss_base_passwd ou=Users,dc=sclad,dc=lan?one nss_base_passwd ou=Computers,dc=sclad,dc=lan?one nss_base_shadow ou=Users,dc=sclad,dc=lan?one nss_base_group ou=Group,dc=sclad,dc=lan?one # persist -- не отключаться от LDAP сервера # oneshot -- отключаться после каждого запроса #nss_connect_policy persist 7. Копируем ldap.conf или делаем ссылку [root@dsrv]# cp /etc/ldap.conf /etc/openldap/ldap.conf 8. Создаем файл /etc/ldap.secret и в него пишем пароль в открытом виде, задаем права на файл: [root@dsrv etc]# touch ldap.secret [root@dsrv etc]# chmod 600 ldap.secret [root@dsrv etc]# echo "very_secret_passwort" >> ldap.secret [root@dsrv etc]# ll | grep ldap.secret -rw------- 1 root root 9 Mar 20 17:21 ldap.secret Причем very_secret_passwort – это тот же пароль, который генерили в 6 пункте (в конце пароля должен стоять символ возврата каретки). Права на файл все же лучше выставить такие - root:root 400. 9. Заполняем базу: Теперь нужно создать корневой объект нашего дерева. Создадим файл base.ldif с таким содержанием: dn: dc=sclad,dc=ru objectClass: dcObject objectClass: organization objectClass: top dc:sclad o:sclad Теперь добавим эту запись в ldap: [root@dsrv openldap]# ldapadd -x -D "cn=root,dc=sclad,dc=lan" -W -f base.ldif Enter LDAP Password: adding new entry "dc=sclad,dc=lan" [root@dsrv openldap]# Параметры запуска: -x : не использовать sasl -D "dn" : под каким пользователем подключаться -W : запросить ввод пароля -w : указать пароль в командной строке -f file : имя файла из которого брать информацию о добавляемом объекте. Далее для работы с samba требуется поместить в ldap следующую древовидную схему: dn: dc=sclad,dc=lan | +-dn: ou=Users,dc= sclad,dc=lan | +-dn: ou=Groups,dc= sclad,dc=lan | +-dn: ou=Computers,dc= sclad,dc=lan Т.е. внутри главного контейнера dc=sclad,dc=lan создаются ещё три: Users - для хранения пользовательских аккаунтов, Group - группы, Computers - аккаунты компьютеров в домене. Получаем следующий ldif-файл newentry.ldif: dn: ou=Users,dc=sclad,dc=lan objectClass: organizationalUnit ou: Users dn: ou=Groups,dc=sclad,dc=lan objectClass: organizationalUnit ou: Groups dn: ou=Computers,dc=sclad,dc=lan objectClass: organizationalUnit ou: Computers dn: ou=Idmap,dc=sclad,dc=lan objectClass: organizationalUnit ou: Idmap Хочу обратить внимание, что между блоками описания различных объектов дерева необходима пустая строка, чтобы утилита ldapadd корректно их разделяла. Добавим записи в ldap: [root@dsrv openldap]# ldapadd -x -D "cn=root,dc=sclad,dc=lan" -W -f newentry.ldif Enter LDAP Password: adding new entry "ou=Users,dc=sclad,dc=lan" adding new entry "ou=Groups,dc=sclad,dc=lan" adding new entry "ou=Computers,dc=sclad,dc=lan" adding new entry "ou=Idmap,dc=sclad,dc=lan" [root@dsrv openldap]# На этом этапе уже можно подключиться к лдап-серверу и посмотреть, что же мы имеем. Я использовал утилиту LDAP Admin: Описание настройки LDAP Admin: 10. Включаем авторизацию по лдап authconfig --enableldap --update Проверяем в /etc/nsswitch.conf: passwd: files ldap shadow: files ldap group: files ldap 11. После того как мы настроим samba на работу с лдап-ом нам нужно будет изменить SID root-a в ldap-е на такой же какой у нас был в sambe. Поэтому посмотрим и запишем SID root-a в samba в файл sid_root_smb: [root@dsrv samba]# pdbedit -Lw root -v Unix username: root NT username: Account Flags: [U ] User SID: S-1-5-21-2564309360-712306396-2862245629-1000 Primary Group SID: S-1-5-21-2564309360-712306396-2862245629-513 Full Name: root Home Directory: scladroot HomeDir Drive: Logon Script: logon.bat Profile Path: Domain: SCLAD Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: never Kickoff time: never Password last set: Tue, 14 Apr 2009 12:22:58 MSD Password can change: Tue, 14 Apr 2009 12:22:58 MSD Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [root@dsrv samba]# pdbedit -Lw root -v > sid_root_smb 12. Правим /etc/samba/smb.conf конфиг исходный – см в статье в него добавляем строки: # Поддержка wins wins support = Yes # Используем dns proxy dns proxy = Yes # Сетевые параметры socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=4096 SO_RCVBUF=4096 # Синхронизировать время с доменом # time server = Yes ####### Параметры LDAP ####### # Пароли храним в LDAP passdb backend = ldapsam:ldap://127.0.0.1/ # Определяем админовский dn. Пароль к нему должен добавляться # непосредственно smbpasswd -w. После смены dn админа пароль тоже надо # сменить ldap admin dn = cn=root,dc=sclad,dc=lan # Определяем суффикс базы данных ldap ldap suffix = dc=sclad,dc=lan # Группы в контейнере ou=groups ldap group suffix = ou=Groups # Пользователи храняться в контейнере ou=users ldap user suffix = ou=Users # Контейнер для машин пользователей ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap # Запрещаем удалять объекты ldap delete dn = No # Отключаем поддержку SSL #ldap ssl = off # скрипты для добавления юзеров и групп (юзается в usermgr от nt4) add user script = /etc/smbldap-tools/smbldap-useradd -m "%u" add machine script = /etc/smbldap-tools/smbldap-useradd -t 0 -w "%u" add group script = /etc/smbldap-tools/smbldap-groupadd -p "%g" add user to group script = /etc/smbldap-tools/smbldap-groupmod -m "%u" "%g" delete user script = /etc/smbldap-tools/smbldap-userdel "%u" delete user from group script = /etc/smbldap-tools/smbldap-groupmod -x "%u" "%g" delete group script = /etc/smbldap-tools/smbldap-groupdel "%g" set primary group script = /etc/smbldap-tools/smbldap-usermod -g '%g' '%u' ldap suffix - это основной суффикс БД. В определении системы директорий существует так называемый корневой объект root. Суффикс определяет этот объект. Вообще существует 2 стандарта LDAP имен для скелета дерева: - метод для глобальных сетей - имеет подобный вид и описывает URL адрес: person.domain.com (cn=person,dc=domain,dc=com) - метод для глобальных сетей - описывает организацию (вообще-то этот вид является стандартным) и имеет следующий вид: person.organization_unit.organization.country (cn=person,ou=otd1,o=lab,c=RU) Выбор метода зависит от конкретного назначения LDAP и особого значения не имеет. Обычно в компаниях применяется второй способ построения скелета дерева. Я же использую интернет наименование для краткости. 13. Перезагружаем службы (чтобы применить новые конфиги): [root@dsrv openldap]# service ldap start Checking configuration files for slapd: config file testing succeeded [ OK ] Starting slapd: [ OK ] [root@dsrv openldap]# service winbind restart Shutting down Winbind services: [ OK ] Starting Winbind services: [ OK ] [root@dsrv openldap]# service smb restart Shutting down SMB services: [ OK ] Shutting down NMB services: [ OK ] Starting SMB services: [ OK ] Starting NMB services: [ OK ] 14. Устанавливаем ldap admin password (даем самбе права на чтение ldap базы): [root@dsrv /]# smbpasswd -w very_secret_passwort 15. Устанавливаем перловые модули нужные для smbldap-tools [root@dsrv ~]# perl -MCPAN -e shell /usr/lib/perl5/5.8.8/CPAN/Config.pm initialized. … Are you ready for manual configuration? [yes] n … cpan> install Net::LDAP … /usr/bin/make install -- OK cpan> install Crypt::SmbHash … /usr/bin/make install -- OK cpan> install Unicode::MapUTF8 … /usr/bin/make install -- OK 16. Конфигурируем smbldap-tools: 16.1. Смотрим SID домена - его нужно будет указать при конфигурировании /etc/smbldap-tools/configure.pl [root@dsrv samba]# net getlocalsid DSRV SID for domain DSRV is: S-1-5-21-93199991-951995455-3406427012 [root@dsrv /]# net rpc getsid Password: Could not connect to server DSRV The username or password was not correct. Storing SID S-1-5-21-93199991-951995455-3406427012 for Domain SCLAD.LAN in secrets.tdb [root@dsrv /]# 16.2. Запускаем скрипт и отвечаем на вопросы: [root@dsrv samba]# /etc/smbldap-tools/configure.pl Use of $# is deprecated at /etc/smbldap-tools/configure.pl line 314. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- smbldap-tools script configuration -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Before starting, check . if your samba controller is up and running. . if the domain SID is defined (you can get it with the 'net getlocalsid') . you can leave the configuration using the Crtl-c key combination . empty value can be set with the "." character -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Looking for configuration files... Samba Configuration File Path [/etc/samba/smb.conf] > The default directory in which the smbldap configuration files are stored is shown. If you need to change this, enter the full directory path, then press enter to continue. Smbldap-tools Configuration Directory Path [/etc/smbldap-tools/] > … -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Use of uninitialized value in concatenation (.) or string at /etc/smbldap-tools/configure.pl line 314, backup old configuration files: /etc/smbldap-tools/smbldap.conf->/etc/smbldap-tools/smbldap.conf.old /etc/smbldap-tools/smbldap_bind.conf->/etc/smbldap-tools/smbldap_bind.conf.old writing new configuration file: /etc/smbldap-tools/smbldap.conf done. /etc/smbldap-tools/smbldap_bind.conf done. За “…” скрывается куча вопросов. Скрипт генерит файлы конфигурации /etc/smbldap-tools/smbldap.conf и /etc/smbldap-tools/smbldap_bind.conf, которые используются следующим скриптом. 16.3. Запускаем скрипт и задаем новый пароль (я использовал тот же самый): [root@dsrv samba]# /etc/smbldap-tools/smbldap-populate Populating LDAP directory for domain SCLAD.LAN (S-1-5-21-93199991-951995455-3406427012) (using builtin directory structure) entry dc=sclad,dc=lan already exist. entry ou=Users,dc=sclad,dc=lan already exist. entry ou=Groups,dc=sclad,dc=lan already exist. entry ou=Computers,dc=sclad,dc=lan already exist. entry ou=Idmap,dc=sclad,dc=lan already exist. adding new entry: uid=root,ou=Users,dc=sclad,dc=lan adding new entry: uid=nobody,ou=Users,dc=sclad,dc=lan adding new entry: cn=Domain Admins,ou=Groups,dc=sclad,dc=lan adding new entry: cn=Domain Users,ou=Groups,dc=sclad,dc=lan adding new entry: cn=Domain Guests,ou=Groups,dc=sclad,dc=lan adding new entry: cn=Domain Computers,ou=Groups,dc=sclad,dc=lan adding new entry: cn=Administrators,ou=Groups,dc=sclad,dc=lan adding new entry: cn=Account Operators,ou=Groups,dc=sclad,dc=lan adding new entry: cn=Print Operators,ou=Groups,dc=sclad,dc=lan adding new entry: cn=Backup Operators,ou=Groups,dc=sclad,dc=lan adding new entry: cn=Replicators,ou=Groups,dc=sclad,dc=lan entry sambaDomainName=SCLAD.LAN,dc=sclad,dc=lan already exist. Updating it... Please provide a password for the domain root: Changing UNIX and samba passwords for root New password: Retype new password: [root@dsrv samba]# Можно заметить, что скрипт ругнулся на уже существующие записи, которые мы создали вручную выше. 17. Введем наш сервер в наш же домен: [root@dsrv samba]# net rpc join -S DSRV Password: Joined domain SCLAD.LAN. You have new mail in /var/spool/mail/root [root@dsrv samba]# 18. Теперь необходимо изменить SID root-a в LDAP-e на такой же какой используется в sambe. Выше мы смотрели и даже записали SID root-a в sambe. При использовании схемы с LDAP нам потребуется поместить в LDAP учётную запись пользователя root и задать для неё nt-пароль. Важно, что у пользователя root аттрибуты sambaSID, sambaPrimaryGroupSID должны иметь вид: sambaSID: DOMAINSID-1000 sambaPrimaryGroupSID: DOMAINSID-1001 Связано это с тем, что ldapsam использует специальный алгоритм для связи uid с sid: rid='2*uidNumber+1000' primaryGroup='2*uidNumber+1001' Посмотрим SID root-a в LDAP-e: [root@dsrv ~]# ldapsearch -x -D "cn=root,dc=sclad,dc=lan" -W -b 'dc=sclad,dc=lan' 'cn=root' Enter LDAP Password: # extended LDIF # # LDAPv3 # base with scope subtree # filter: cn=root # requesting: ALL # # root, Users, sclad.lan dn: uid=root,ou=Users,dc=sclad,dc=lan cn: root sn: root objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: sambaSamAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 0 uid: root uidNumber: 0 homeDirectory: /home/root sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaHomePath: DSRVroot sambaHomeDrive: Z: sambaProfilePath: DSRVprofilesroot sambaPrimaryGroupSID: S-1-5-21-93199991-951995455-3406427012-512 sambaSID: S-1-5-21-93199991-951995455-3406427012-500 loginShell: /bin/false gecos: Netbios Domain Administrator sambaLMPassword: A800BDD34ABDA30D944E2DF489A880E4 sambaAcctFlags: [U] sambaNTPassword: 1D374EB0B2FEB239A7643E37950D2C15 sambaPwdLastSet: 1239956579 sambaPwdMustChange: 1243844579 userPassword:: e1NTSEF9Z0RteU1JZHpoSzF3WXUzdXhkYWFPK2JUV1ZSd01tMUs= shadowLastChange: 14351 shadowMax: 45 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 [root@dsrv log]# net getlocalsid DSRV SID for domain DSRV is: S-1-5-21-93199991-951995455-3406427012 Т.е. SID root-a в samba: User SID: S-1-5-21-2564309360-712306396-2862245629-1000 Primary Group SID: S-1-5-21-2564309360-712306396-2862245629-513 ldap sambaPrimaryGroupSID: S-1-5-21-93199991-951995455-3406427012-512 sambaSID: S-1-5-21-93199991-951995455-3406427012-500 Странно – здесь мы наблюдаем не только rid не правильные, но и даже отличающиеся DOMAINSID. Видимо на одной из стадий установки была допущена ошибка. Нужно будет проверить при аналогичной установке! В общем, нам нужно установить для root-a: sambaPrimaryGroupSID: S-1-5-21-93199991-951995455-3406427012-512 sambaSID: S-1-5-21-93199991-951995455-3406427012-1000 т.е. подменить только sambaSID. Для этого создадим следующий ldif-файл rootedit.ldif: dn: uid=root,ou=Users,dc=sclad,dc=lan changetype: modify replace: sambaSID sambaSID: S-1-5-21-93199991-951995455-3406427012-1000 Для добавления информации в базу воспользуйтесь командой: [root@dsrv openldap]# ldapmodify -x -D "cn=root,dc=sclad,dc=lan" -W -f rootedit.ldif Enter LDAP Password: modifying entry "uid=root,ou=Users,dc=sclad,dc=lan" [root@dsrv openldap]# И посмотрим, что же у нас получилось: [root@dsrv openldap]# ldapsearch -x -D "cn=root,dc=sclad,dc=lan" -W -b 'dc=sclad,dc=lan' 'cn=root' Enter LDAP Password: # extended LDIF # # LDAPv3 # base with scope subtree # filter: cn=root # requesting: ALL # # root, Users, sclad.lan dn: uid=root,ou=Users,dc=sclad,dc=lan cn: root sn: root objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: sambaSamAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 0 uid: root uidNumber: 0 homeDirectory: /home/root sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaHomePath: DSRVroot sambaHomeDrive: Z: sambaProfilePath: DSRVprofilesroot sambaPrimaryGroupSID: S-1-5-21-93199991-951995455-3406427012-512 loginShell: /bin/false gecos: Netbios Domain Administrator sambaLMPassword: A800BDD34ABDA30D944E2DF489A880E4 sambaAcctFlags: [U] sambaNTPassword: 1D374EB0B2FEB239A7643E37950D2C15 sambaPwdLastSet: 1239956579 sambaPwdMustChange: 1243844579 userPassword:: e1NTSEF9Z0RteU1JZHpoSzF3WXUzdXhkYWFPK2JUV1ZSd01tMUs= shadowLastChange: 14351 shadowMax: 45 sambaSID: S-1-5-21-93199991-951995455-3406427012-1000 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 [root@dsrv openldap]# Мы видим, что sambaSID изменился на нужный. Если бы это был новый сервер, то на этом можно было бы и закончить. Однако, у нас уже есть рабочая система с учетсками юзеров, компов и групп в самбе. Их то и нужно перенести в лдап. 18. Необходимо перенести всё из самбы Вернуться назад |