Настройка samba + ldap в качестве PDC
Cтатья посвящена настройке Samba 3 в качестве основного
контроллера домена (PDC), все записи о пользователях которой хранятся
в LDAP-каталоге. Установка производилась на Fedora 10. Я не указываю, какие
пакеты должны быть установлены, полагая, что догадываться о них должен
любой администратор, знающий что такое samba и ldap.
1. Часть первая LDAP
Для начала, заведем администратора LDAP. Не мудрствуя лукаво
обзову его ldaproot
. Файл конфигурации ldap.conf. Много думать не потребовалось:
URI ldap://127.0.0.1/
BASE dc=example,dc=ru
Теперь перейдем к файлу sldap.conf. Я даю только изменения, которые я произвел,
на базе стандартного файла конфигурации.
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/samba.schema
Далее определяем тип базы данных. Во всех примерах, которые я нашел в googlе,
определяется только ldbm. Для Fedora 10 я взял bdb. Работает ;-)
database bdb
suffix "dc=example,dc=ru"
rootdn "cn=ldaproot,dc=example,dc=ru"
password-hash {crypt}
Указанный в password-hash способ шифрования пароля можно посмотреть в документации
к вашей системе.
rootpw {crypt}xxxxxxxxxxxxx
Пароль для администратора ldap. Его можно назначить следующей командой:
slappasswd -h {указать способ шифровки пароля, который вы выбрали в password-hash}.
Параметр loglevel задает уровень отладки. Для начала лучше поставить его максимальный,
для вылавливания всяческих багов.
loglevel=255
Добавим индексы, специфические для samba
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
Теперь нужно разграничить доступ к информации в базе данных.
Указываем, что к атрибуту userPassword себе(под кем Вы находитесь в системе)
разрешена запись, анонимам предлагается зарегистрироваться, остальным отказ.
access to attrs=userPassword
by self write
by anonymous auth
by * none
Доступ к остальной информации: себе - писать, анонимам читать, остальным ничего.
access to *
by self write
by anonymous read
by * none
Можно еще как-то поизгаляться с правами доступа, но для базовой настройки
сгодится. Потом на досуге можно придумать что-то этакое. Как фантазия разыграется.
 Запускаем LDAP. В RH - подобных системах это лучше делать из каталога /etc/rc.d/init.d. Собственно команда ldap start. В каталоге (папке, директории) /var/lib/ldap формируется база данных. Пока это только структура, общая схема базы, без конкретного наполнения. Необходимо произвести начальное заполнение базы. Привожу пример файла init.ldif:
dn: dc=example,dc=ru
dc: example
objectClass: dcObject
objectClass: top
objectClass: organization
o: Example OOO
o: example.ru
dn: cn=ldaproot,dc=example,dc=ru
objectClass: top
objectClass: organizationalRole
cn: ldaproot
description: Example LDAP manager
dn: ou=People,dc=example,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: People
description: Stuff area
dn: ou=Computers,dc=maintlab,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: Group
description: Computer list
dn: ou=Users,dc=example,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: Users
description: User list
dn: ou=Group,dc=example,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: Group
description: Groups of users
Занесение данных в базу производится командой:
ldapadd -xWD cn=ldaproot,dc=example,dc=ru -h localhost -f init.ldif
Заводим дополнительную группу в системе computers, в которую будут входить компьютеры
находящиеся в нашей сети
groupadd -g 10000 computers
Так же следует завести группы администраторов и пользователей, ну например:
groupadd smbadmin
groupadd smbuser
Дальнейшее заполнение базы достаточно трудоемкий процесс и довольно нудный,
если необходимо занести большое кол-во уже существующих пользователей..Погуглив
нашел
MigrationTools .Я использовал
оттуда 2 перловых скрипта migratre_group.pl и migtare_passwd.pl. Перед использованием
следует отредактировать файл migrate_common.ph. Необходимо исправить в 3 местах.
$DEFAULT_MAIL_DOMAIN = "example.ru", $DEFAULT_BASE = "dc=example,dc=ru". И заменить
в массиве $NAMINGCONTEXT{'passwd'} = "ou=People" на "ou=Users".
После этой небольшой рихтовки импортировал имеющиеся группы и пользователей.
migrate_group.pl /etc/group > groups.ldif
migrate_passwd.pl /etc/passwd > users.ldif
ldapadd -xWD cn=ldaproot,dc=example,dc=ru -h localhost -f groups.ldif
ldapadd -xWD cn=ldaproot,dc=example,dc=ru -h localhost -f users.ldif
2. Часть вторая SAMBA
Я приведу конфигурацию samba.conf без особых пояснений. Все описано в комментариях,
да и на просторах инета столько раз встречается, что плакать хочется от изобилия.
[global]
workgroup = OFFICE
security = user
template shell = /sbin/nologin
# Работаем только с известными ресурсами локальной сети
bind interfaces only = Yes
# Обслуживаемые интерфейсы
interfaces = lo eth0 192.168.0.0/24.
# Хосты, которым разрешено обратиться к серверу
hosts allow = 192.168.0. 127.0.0.1
# Имя домена
# netbios имя машины
netbios name = SMBSERVER
# Описание сервера
server string = SMBSERVER Example
password server = localhost
# Администратор самбы
admin users = root
# Работа с LDAP
passdb backend = ldapsam:ldap://localhost
# Корень LDAP сервера
ldap suffix = dc=example,dc=ru
# Контейнер пользователей
ldap user suffix = ou=Users
# Контейнер групп
ldap group suffix = ou=Group
# Контейнер компьютеров
ldap machine suffix = ou=Computers
# Объект администратора самбы в LDAP
ldap admin dn = "cn=root,dc=example,dc=ru"
# Запрещаю удалять объекты
ldap delete dn = no
# При смене пользователем пароля SAMBA (по сети или
# через smbpasswd автоматически менять пароль LDAP
ldap passwd sync = yes
# Отключаю поддержку ssl
ldap ssl = off
logon script = %U.bat
# Пустое значение, неперемещаемые профили. Все на локальной машине
logon path =
# logon script = %U.bat
# logon path = \\%L\Profiles\%u
logon drive = L:
# Описание лог-файлов
log file = /var/log/samba/%m.log
log level = 1
max log size = 500
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# Сервер раздает время
time server = yes
# Описываем самбу как PDC
preferred master = yes
domain master = yes
domain logons = yes
local master = yes
os level = 254
# Настройка кодировок
unix charset = koi8-r
dos charset = cp866
display charset = koi8-r
# Работа с принтером
load printers = no
printcap name = cups
# Поддержка wins
wins support = yes
# Используем DNS proxy
# dns proxy = yes
# encrypt passwords = No
guest ok = No
guest account = nobody
# Для нормальной работе в W2K убираем поддержку nt acl
nt acl support = No
client plaintext auth = Yes
client lanman auth = Yes
[profiles]
path = /var/lib/samba/profiles
browseable = no
guest ok = no
writeable = yes
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
browseable = no
guest ok = yes
writable = no
share modes = no
[homes]
comment = Home Directories
browseable = no
writeable = yes
[tmp]
comment = Temporary file space
path = /tmp
writeable = yes
guest ok = yes
[printers]
comment = All printers
path = /var/spool/samba
guest ok = yes
printable = yes
Хочу обратить внимание на точку в конце IP-адреса "hosts allow = 192.168.0. ". Я долго мучался, почему
не происходит подсоединеие, пропустив ее. Если кто мучался с забытой точкой в настройке BIND, поймет.
Укажем самбе пароль от пользователя в ldap(cn=ldaproot,dc=example,dc=ru):
smbpasswd -W
Добавим доменные группы. Подробнее о том, какие значения sid/rid бывают у встроенных учётных
записей в домене и каких их формировать можно почитать здесь:
http://www.unav.es/cti/ldap-smb/smb-ldap-3-howto.html#Create_builtin
net groupmap add unixgroup=smbadmin rid=512 type=domain
net groupmap add unixgroup=smbuser rid=513 type=domain
net groupmap add unixgroup=nobody rid=514 type=domain
net groupmap add unixgroup=computers rid=515 type=domain
Посмотреть список групп можно командой:
net groupmap list
Вышли на финишную прямую, можно заводить пользователей и подключать их к домену.
При включении win2k/NT/XP в домен необходимо также создавать аккаунт компьютера.
useradd -g machines -d /dev/null -c "описание компьютера" -s /bin/false имя_компьютера$
passwd -l имя_компьютера$
smbpasswd -a -m имя_компьютера
имя_компьютера - это NetBIOS имя компьютера (обратите внимание на значок `$` при добавлении
системного пользователя и его отсутствие при добавлении в SAMBA).
При включении машин с win2k/NT/XP в домен, MS Windows попросит ввести логин и пароль аккаунта
имеющего права на подключение к домену. Это должен быть аккаунт администратора домена .
Добавление обычных пользователей происходит так же как обычно:
useradd -g smbuser -d /home/user -c "описание пользователя" -s /bin/false имя_пользователя
passwd -l имя_пользователя
smbpasswd -a имя_пользователя
Можно начинать работать.
|
|
|