Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> LDAP: samba, dns, dhcp

samba_pdc + ddns + dhcp - с хранением всех данных в LDAP

Автор: f0s.


    Предыстория: В общем появилась у меня гениальная идея: в связи с дороговизной виндоуса перейти полностью на FreeBSD.
   Для начала потребовалось перевести домен WIN2003, а также сервисы, что там крутятся: dns, dhcp. Итак, приступим. Обновляем порты:
[f0s@mail] /home/f0s/> cd /usr/ports
[f0s@mail] /usr/ports/> cvsup -g -L 2 /usr/local/etc/supfile && make fetchindex

   Далее устанавливаем OpenLDAP сервер. Он нам потребуется для хранения в нем информации об учетных записях групп, пользователей и машин домена, а также здесь будут хранится записи dns и располагаться настройки dhcp (в ближайшем будущем планирую там держать jabber, адресную книгу и почту). Надеюсь вы уже поняли все преимущества данной фичи? Единая точка администрирования всей сети (не нужно ходить по разным конфигам, и добавлять новых юзеров, боясь забыть прописать кого-нибудь в одной из нужных прог, а здесь все в одном каталоге, никогда не запутаешься. Да и удалять тоже просто :), масштабируемость, безопасность, поддержка различных операционных систем (есть возможность рулить всем даже с виндовой машины клиентом под учеткой root'a).
[f0s@mail] /usr/ports/> cd /usr/ports/net/openldap23-server/
[f0s@mail] /usr/ports/net/openldap23-server/> make config

из опций я выбрал в общем-то все по дефолту: TCP_WRAPPERS, BDB, DYNAMIC_BACKENDS, SLURPD
[f0s@mail] /usr/ports/net/openldap23-server/> make install clean
[f0s@mail] /usr/ports/net/openldap23-server/> rehash

Далее редактируем конфиг OpenLDAP сервера:
[f0s@mail] /usr/ports/> more /usr/local/etc/openldap/slapd.conf:
include		/usr/local/etc/openldap/schema/core.schema
include		/usr/local/etc/openldap/schema/cosine.schema
include		/usr/local/etc/openldap/schema/inetorgperson.schema
include		/usr/local/etc/openldap/schema/misc.schema
include		/usr/local/etc/openldap/schema/nis.schema
include		/usr/local/etc/openldap/schema/openldap.schema

# схемы самбы берутся из самбы (потом скопируем), схемы dns и dhcp
# тоже позже скопируем. пока строчки закоментарим
#include		/usr/local/etc/openldap/schema/samba.schema
#include		/usr/local/etc/openldap/schema/dnszone.schema
#include		/usr/local/etc/openldap/schema/dhcp.schema

pidfile		/var/run/openldap/slapd.pid
argsfile	/var/run/openldap/slapd.args

# Load dynamic backend modules:

modulepath	/usr/local/libexec/openldap
moduleload	back_ldbm

access to attrs=userPassword
	by self write
	by anonymous auth
	by * none

access to *
	by self write
	by anonymous read
	by * none

#######################################################################
# BDB database definitions
#######################################################################

database	ldbm
suffix		"dc=artpaint,dc=spb,dc=ru"
rootdn		"cn=root,dc=artpaint,dc=spb,dc=ru"
#
# пароль на рута можно сгенерировать с помощью slappasswd
#
rootpw		{SSHA}H2jF/C3atuiJywZT4LW4kTYtLG2yKiRk

directory	/var/db/openldap-data

index	objectClass	eq
index	cn		eq

   Все. Теперь выставляем права на директорию с данными лдап:
[f0s@mail] /usr/ports/net/openldap23-server/> cd /var/db
[f0s@mail] /var/db/> chmod 0700 openldap-data

   Теперь сделаем так, чтобы это все дело запускалось. Добавляем в rc.conf такие строчки:
[f0s@mail] /var/db/> more /etc/rc.conf | grep -E "slapd|ldap"
slapd_enable="YES"
slapd_flags="-h 'ldapi://%2fvar%2frun%2fopenldap%2fldapi/ \
		ldap://192.168.10.8/ ldap://127.0.0.1/'"
slapd_sockets="/var/run/openldap/ldapi"

   В данном случае 192.168.10.8 - это IP адрес данной машины, где собсно я и устанавливаю OpenLDAP. Теперь запускаем сервер:
[f0s@mail] /var/db/> usr/local/etc/rc.d/slapd start
Starting slapd.

   И проверяем, запустился ли:
[f0s@mail] /var/db/> ps -ax | grep slap
  911  ??  Is     0:06,06 /usr/local/libexec/slapd -h ldapi://%2fvar%2frun%2fop
39335  p2  RV     0:00,00 grep slap (csh)

   Есть контакт :)
   Теперь добавляем данные в ldap, для этого создаем файл main.ldif
[f0s@mail] /var/db/> cd /usr/local/etc/openldap
[f0s@mail] /usr/local/etc/openldap/> more main.ldif
dn: dc=artpaint,dc=spb,dc=ru
objectClass: dcObject
objectClass: organization
objectClass: top
dc: artpaint
o: artpaint

dn: ou=users,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: users

dn: ou=groups,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: groups

dn: ou=computers,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: computers

   Теперь добавляем:
[f0s@mail] /usr/local/etc/openldap/> ldapadd -x -D \
? "cn=root,dc=artpaint,dc=spb,dc=ru" -w password -f main.ldif
adding new entry "dc=artpaint,dc=spb,dc=ru"
adding new entry "ou=users,dc=artpaint,dc=spb,dc=ru"
adding new entry "ou=groups,dc=artpaint,dc=spb,dc=ru"
adding new entry "ou=computers,dc=artpaint,dc=spb,dc=ru"
[f0s@mail] /usr/local/etc/openldap/> rm main.ldif

   Продолжаем. Устанавливаем nss_ldap, чтобы система видела юзеров и группы, которые находятся в LDAP.
[f0s@mail] /usr/local/etc/openldap/> cd /usr/ports/net/nss_ldap/
[f0s@mail] /usr/ports/net/nss_ldap/> make install clean
[f0s@mail] /usr/ports/net/nss_ldap/> rehash
[f0s@mail] /usr/ports/net/nss_ldap/> more /usr/local/etc/nss_ldap.conf
host 127.0.0.1

base dc=artpaint,dc=spb,dc=ru

uri ldap://mail.artpaint/

ldap_version 3

port 389

scope one

timelimit 30

bind_timelimit 10

bind_policy soft

nss_connect_policy persist

idle_timelimit 3600

nss_paged_results yes

pagesize 1000

nss_base_passwd		ou=users,dc=artpaint,dc=spb,dc=ru?one
nss_base_group		ou=groups,dc=artpaint,dc=spb,dc=ru?one
nss_base_passwd		ou=computers,dc=artpaint,dc=spb,dc=ru?one
nss_base_shadow		ou=users,dc=artpaint,dc=spb,dc=ru?one

   С этим все. Далее редактируем:
[f0s@mail] /usr/ports/net/nss_ldap/> more /etc/nsswitch.conf
group: files ldap
hosts: files dns
networks: files
passwd: files ldap
shadow: files ldap
shells: files

   Теперь можно установить набор скриптов для работы с пользователям в LDAP. Но в приниципе необязательно. Итак:
[f0s@mail] /usr/ports/net/nss_ldap/> cd /usr/ports/net/ldapscripts/
[f0s@mail] /usr/ports/net/ldapscripts/> make install clean
[f0s@mail] /usr/ports/> more /usr/local/etc/ldapscripts/ldapscripts.conf

SERVER="127.0.0.1"
BINDDN="cn=root,dc=artpaint,dc=spb,dc=ru"

BINDPWD="вписываете_ваш_пароль_в_открытом_виде"

SUFFIX="dc=artpaint,dc=spb,dc=ru" # Global suffix
GSUFFIX="ou=groups"        # Groups ou (just under $SUFFIX)
USUFFIX="ou=users"         # Users ou (just under $SUFFIX)
MSUFFIX="ou=computers"      # Machines ou (just under $SUFFIX)


GIDSTART="10000" # Group ID
UIDSTART="10000" # User ID
MIDSTART="20000" # Machine ID

USHELL="/usr/sbin/nologin"
UHOMES="/home/samba/homes/%u"  
ASKGECOS="no"       
CREATEHOMES="yes"   
HOMESKEL="/etc/skel"
HOMEPERMS="700"

PASSWORDGEN="head -c8 /dev/random | uuencode -m - | \
	sed -n -e '2s|=*$||;2p' | sed -e 's|+||g' -e 's|/||g'"

RECORDPASSWORDS="yes"
PASSWORDFILE="/var/log/ldapscripts_passwd.log"

LOGFILE="/var/log/ldapscripts.log"

LDAPSEARCHBIN="/usr/local/bin/ldapsearch"
LDAPADDBIN="/usr/local/bin/ldapadd"
LDAPDELETEBIN="/usr/local/bin/ldapdelete"
LDAPMODIFYBIN="/usr/local/bin/ldapmodify"
LDAPMODRDNBIN="/usr/local/bin/ldapmodrdn"
LDAPPASSWDBIN="/usr/local/bin/ldappasswd"

GETENTPWCMD=""
GETENTGRCMD=""

GTEMPLATE=""
UTEMPLATE=""
MTEMPLATE=""

   Ставим права на конфиг:
[f0s@mail] /usr/ports/net/ldapscripts/> cd /usr/local/etc/ldapscripts
[f0s@mail] /usr/local/etc/ldapscripts/> chmod 0640 ldapscripts.conf
[f0s@mail] /usr/local/etc/ldapscripts/> chown root:wheel ldapscripts.conf

   Добавляем группы в ldap:
[f0s@mail] /usr/> ldapaddgroup admins
Successfully added group admins to LDAP
[f0s@mail] /usr/> ldapaddgroup users
Successfully added group people to LDAP
[f0s@mail] /usr/> ldapaddgroup computers
Successfully added group computers to LDAP
[f0s@mail] /usr/> ldapadduser admin admins
Successfully added user admin to LDAP
Successfully set password for user admin
Successfully created home directory for user admin

   Группы создались. Ставим самбу. Обратите внимание, что самба не должна быть 3.0.25. Либо ставим раннюю версию, к примеру 3.0.24, либо 3.0.25а и выше. В 3.0.25 серьезный баг - проблемы с "password expiration", будете долго думать в чем дело :) Итак,
[f0s@mail] /usr/> cd /usr/ports/net/samba3/
[f0s@mail] /usr/ports/net/samba3/>  make config

   В конфиге выбираем в общем-то тоже почти дефолт: LDAP, CUPS, WINBIND, QUOTAS, UTMP, POPT
[f0s@mail] /usr/ports/net/samba3/> make install clean
[f0s@mail] /usr/ports/net/samba3/> rehash

   Копируем схему samba.schema в /usr/local/etc/openldap/schema/
[f0s@mail] /usr/> cp /usr/local/share/examples/samba/LDAP/samba.schema \
? /usr/local/etc/openldap/schema/samba.schema

   Cнимаем коментарий на эту схему в slapd.conf и перезапускаем slapd.
[f0s@mail] /usr/ports/net/samba3/> /usr/local/etc/rc.d/slapd restart

   Редактируем smb.conf:
[global]

# имя домена
workgroup = artpaint

# типа коментарий самба сервера
server string = mail.artpaint

#имя компа с самбой в сетевом окружении
netbios name = mail
security = user
hosts allow = 192.168.10. 192.168.20. 192.168.0. 127.

load printers = no
log file = /var/log/samba/log.%m
max log size = 50
acl compatibility = win2k

encrypt passwords = yes
admin users = admin
passdb backend = ldapsam:ldap://127.0.0.1/


# здесь описываем лдап
ldap suffix = dc=artpaint,dc=spb,dc=ru
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap machine suffix = ou=computers
ldap admin dn = "cn=root,dc=artpaint,dc=spb,dc=ru"
ldap delete dn = no
ldap ssl = off
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind separator = @
winbind use default domain = yes

# делаем PDC
socket options = TCP_NODELAY
local master = yes
os level = 64
domain master = yes 
preferred master = yes
domain logons = yes

# если хоиите юзать логон скрипты, то раскоментариваете
;   logon script = %m.bat
;   logon script = %U.bat

# путь к перемещаемому профилю
logon path = \\%L\profiles

# путь к хомякам юзеров
logon home = \\%L\HOME
logon drive = H:


wins support = yes
dns proxy = yes


display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
timeserver = yes

# скрипты для добавления юзеров и групп (юзается в usermgr от nt4)
add machine script = /usr/local/bin/ldapaddmachine '%u' computers
add user script = /usr/local/bin/ldapadduser '%u' users
add group script = /usr/local/bin/ldapaddgroup '%g'
add user to group script = /usr/local/bin/ldapaddusertogroup '%u' '%g'
delete user script = /usr/local/bin/ldapdeleteuser '%u'
delete group script = /usr/local/bin/ldapdeletegroup '%g'
delete user from group script = /usr/local/bin/ldapdeleteuserfromgroup '%u' '%g'
set primary group script = /usr/local/bin/ldapsetprimarygroup '%u' '%g'
rename user script = /usr/local/bin/ldaprenameuser '%uold' '%unew'


# делаем шару на хомяки
[HOME]
   comment = Home Directories
   path = /home/samba/homes/%U
   read only = no
   public = no
   writable = yes
   create mask = 0600
   browseable = no
   directory mask = 0700

# делаем шару на нетлогон (для запуска скриптов)
[netlogon]
   comment = Network Logon Service
   path = /usr/local/etc/samba/netlogon
   guest ok = yes
   writable = no
   share modes = no
   browseable = no

# делаем шару на перемещаемые профили
[profiles]
    create mask = 0600
    directory mask = 0700
    path = /home/samba/profiles/%u
    writeable = yes
    browseable = no
    locking = no
    csc policy = disable # эта строчка необходима чтобы отключить автономное кеширование



# просто так :) чтобы можно было на тачку заходить
[IPC$]
path = /tmp
hosts allow = 192.168.10.0/24 192.168.20.0/24 192.168.0.0/24 127.0.0.1
hosts deny = 0.0.0.0/0

Теперь добавляем в автозапуск самбу


[f0s@mail] /home/samba/> echo samba_enable=\"YES\" >> /etc/rc.conf
[f0s@mail] /home/samba/> echo winbindd_enable=\"YES\" >> /etc/rc.conf

   Здесь используются перемещаемые профили, то есть все настройки юзеров на сервере и домашние папки тоже. Очень удобно. Обратите внимание на опции касающиеся хостов которым разрешено/запрещено коннектится - иначе будете долго разбираться почему не заходит в домен.
   Теперь необходимо созать каталоги samba/homes && samba/profiles в /home, и проверить права на них:
[f0s@mail] /home/samba/> chown root:users *
[f0s@mail] /home/samba/> ll
drwxr-xr-x  15 root  users  512 18 июл 09:02 homes
drwxr-xr-x  15 root  users  512 18 июл 09:03 profiles

   Сами домашние папки и профили должны быть с правами 0700, группу на них ставлю users.
[f0s@mail] /home/samba/homes/> ll
drwx------  3 admin       users  512 18 июл 17:11 admin
drwx------  2 andreeva    users  512 17 июл 12:27 andreeva
drwx------  3 f0s         users  512 19 июл 15:30 f0s

[.skip.]

drwx------  3 vinogradov  users  512 16 июл 16:30 vinogradov

   Теперь укажем самбе пароль от пользователя в ldap:
[f0s@mail] /home/samba/homes/> smbpasswd -w password
Setting stored password for "cn=root,dc=artpaint,dc=spb,dc=ru" in secrets.tdb

   Создаем каталог для скриптов:
[f0s@mail] /usr/local/etc/samba/> mkdir netlogon

и проверяем права на файлы в каталоге самбы:
[f0s@mail] /usr/local/etc/samba/> ll
drwxr-xr-x  2 root  wheel   512 15 июн 12:37 netlogon
-rw-------  1 root  wheel  4096 19 июл 15:34 schannel_store.tdb
-rw-------  1 root  wheel  8192 12 июл 16:56 secrets.tdb

   Добавляем юзера admin:
[f0s@mail] /home/samba/homes/> smbpasswd -a admin
New SMB password:
Retype new SMB password:
Added user admin.

   Делаем сопоставление групп группам NT
[f0s@mail] /home/> net groupmap add ntgroup="Domain Admins" \
? unixgroup=admins rid=512 type=domain
Successfully added group admins to the mapping db as a domain group
[f0s@mail] /home/> net groupmap add ntgroup="Domain Users" \
? unixgroup=users rid=513 type=domain
Successfully added group people to the mapping db as a domain group
[f0s@mail] /home/> net groupmap add ntgroup="Domain Computers" \
? unixgroup=computers rid=515 type=domain
Successfully added group computers to the mapping db as a domain group

   Обратите внимание. Здесь есть параметр RID, он означает:
RID
значение
512 Domain Admins
513 Domain Users
514 Domain Guests
515 Domain Computers

   Чтобы ввести виндовую машину в домен, правый клик на "мой компьютер", далее там выбираем "является членом домена.. ARTPAINT", вводим имя и пароль админа. Тачка в домене :) Для удобства администрирования устанавливаем сразу же программку ldapadmin (теперь мы будем ей пользоваться). Скачать можно тут: http://ldapadmin.sourceforge.net/
   Добавим самбу в свой домен:
[f0s@mail] /usr/> net rpc join -S mail -U admin%password

   Здесь mail - Это название тачки с самбой.
   Для редактирования политик, воспользуемся этой программой (схемы для w2k3 и w2k включены). Создаем политику, называем ее ntconfig.pol и кидаем в папку netlogon
poledit
файл скачан размер размещён примечание
POLEDIT.rar
3113 364.5kb 2007-12-04 Программа предназначена для редактирования политик на самба домене. Создаем политику, сохраняем в файл pol, затем применяем к компам.

   Итак. Пришло время настройки DNS. Сначала копируем вот эти
dnszone.schema
файл скачан размер размещён примечание
dnszone.schema
3288 5.3kb 2007-07-30 OpenLDAP DNS schema
dhcp.schema
2758 14.8kb 2007-07-30 OpenLDAP DHCP schema

схемки в /usr/local/etc/openldap/schema/
   Теперь раскоментариваем строчки в slapd.conf касающихся вновь созданных файлов, перезапускаем slapd:
[f0s@mail] /usr/local/etc/rc.d/> ./slapd restart

и создаем вот такой вот такой вот файл: dnszone.ldif:
*** Маленькое отступление: прежде чем вникать в написанное ниже, очень рекомендуется изучить принцип работы dns и настройки named через обычные файлы. Тогда вы легко все воспроизведете. ***
dn: ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: dns
description: Domain Zones

# zone artpaint
dn: zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: artpaint

# SOA
dn: relativeDomainName=@,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: @
nSRecord: mail.artpaint.
sOARecord: mail.artpaint. root.mail.artpaint. 1 8H 2H 1W 1D

# mail IN A 192.168.10.8
dn: relativeDomainName=mail,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: mail
dNSClass: IN
aRecord: 192.168.10.8

# router IN A 192.168.10.7
dn: relativeDomainName=router,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: router
dNSClass: IN
aRecord: 192.168.10.7

# fileserver IN A 192.168.10.6
dn: relativeDomainName=fileserver,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: fileserver
dNSClass: IN
aRecord: 192.168.10.6

# gate IN A 192.168.10.5
dn: relativeDomainName=gate,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: gate
dNSClass: IN
aRecord: 192.168.10.5

# terminal01 IN A 192.168.10.1
dn: relativeDomainName=terminal01,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: terminal01
dNSClass: IN
aRecord: 192.168.10.1

# terminal02 IN A 192.168.10.2
dn: relativeDomainName=terminal02,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: terminal02
dNSClass: IN
aRecord: 192.168.10.2

# terminal03 IN A 192.168.10.3
dn: relativeDomainName=terminal03,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: terminal03
dNSClass: IN
aRecord: 192.168.10.3

# addr-arpa
dn: zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: 10.168.192.in-addr.arpa

# SOA for addr-arpa
dn: relativeDomainName=@,zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: @
nSRecord: mail.artpaint.
sOARecord: mail.artpaint. root.mail.artpaint. 1 8H 2H 1W 1D

# PTR for .8
dn: relativeDomainName=8,zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: 8
pTRRecord: mail.artpaint.

# PTR for .7
dn: relativeDomainName=7,zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: 7
pTRRecord: router.artpaint.

# PTR for .6
dn: relativeDomainName=6,zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: 6
pTRRecord: fileserver.artpaint.

# PTR for .5
dn: relativeDomainName=5,zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: 5
pTRRecord: gate.artpaint.

# PTR for .1
dn: relativeDomainName=1,zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: 1
pTRRecord: terminal01.artpaint.

# PTR for .2
dn: relativeDomainName=2,zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: 2
pTRRecord: terminal02.artpaint.

# PTR for .3
dn: relativeDomainName=3,zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: 10.168.192.in-addr.arpa
relativeDomainName: 3
pTRRecord: terminal03.artpaint.

вот лдифы для локалхоста localhost.ldif:

dn: relativeDomainName=localhost,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: localhost
dNSClass: IN
aRecord: 127.0.0.1

и обратная зона локалхоста localhost-rev.ldif

dn: zoneName=0.0.127.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: 0.0.127.in-addr.arpa
zoneName: 0.0.127.in-addr.arpa

dn: relativeDomainName=@,zoneName=0.0.127.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: @
zoneName: 0.0.127.in-addr.arpa
nSRecord: mail.artpaint.
sOARecord: mail.artpaint. root.mail.artpaint. 1 3H 1H 12W 1H

dn: relativeDomainName=1,zoneName=0.0.127.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: 1
pTRRecord: localhost.artpaint.
zoneName: 0.0.127.in-addr.arpa

   Добавляем записи в лдап:
[f0s@mail] /home/> ldapadd -x -D "cn=root,dc=artpaint,dc=spb,dc=ru" \
? -W -f dnszone.ldif
[f0s@mail] /home/> ldapadd -x -D "cn=root,dc=artpaint,dc=spb,dc=ru" \
? -W -f localhost.ldif
[f0s@mail] /home/> ldapadd -x -D "cn=root,dc=artpaint,dc=spb,dc=ru" \
? -W -f localhost-rev.ldif

   Теперь устанавливаем bind, который поддерживаем работу с лдап:
[f0s@mail] /home/> cd /usr/ports/dns/bind9-sdb-ldap
[f0s@mail] /usr/ports/dns/bind9-sdb-ldap/> make install clean

   Создаем конфигурационный файл named.conf:
[f0s@mail] /home/> more /etc/namedb/named.conf

acl lan { 192.168.10.0/24; 192.168.20.0/24; 192.168.0.0/24; };
acl transfers { 127.0.0.1; };
acl trusted { 192.168.100.0/24; }; 


key "rndc-key" {
	algorithm hmac-md5;
	secret "JW/YeNtwZo+uxKqIsWtpUZ==";
};
 
controls {
	inet 127.0.0.1 port 953
		allow { 127.0.0.1; } keys { "rndc-key"; };
};

options {
	directory	"/etc/namedb";
	pid-file	"/var/run/named/pid";
	dump-file	"/var/dump/named_dump.db";
	statistics-file	"/var/stats/named.stats";
	version "Windows 95";
	listen-on	{ 127.0.0.1; 192.168.10.8; };
        forward only;
	forwarders { 80.177.122.1; 80.177.123.1; };
	allow-query { lan; trusted; };
	allow-recursion { trusted; lan; };
        query-source address * port 53;
};


zone "." {
	type hint;
	file "named.root";
};

zone "artpaint" {
type master;
// след. две строки - одна без пробелов - невлезло
database "ldap ldap://192.168.10.8/zoneName=artpaint,
	ou=dns,dc=artpaint,dc=spb,dc=ru 178600";
allow-query { lan; trusted; };
allow-transfer { transfers; };
};

zone "10.168.192.in-addr.arpa" {
type master;
// след. две строки - одна без пробелов - невлезло
database "ldap ldap://192.168.10.8/zoneName=10.168.192.in-addr.arpa,
	ou=dns,dc=artpaint,dc=spb,dc=ru 178600";
allow-query { lan; trusted; };
allow-transfer { transfers; };
};

zone "0.0.127.in-addr.arpa" {
type master;
// след. две строки - одна без пробелов - невлезло
database "ldap ldap://192.168.10.8/zoneName=0.0.127.in-addr.arpa,
	ou=dns,dc=artpaint,dc=spb,dc=ru 178600";
allow-query { lan; trusted; };
allow-transfer { transfers; };
};

   Обратите внимание, rndc-key нужно сконфигурировать. Для этого запускаем rndc-confgen, и там смотрим что он нам за информацию выдаст на экран, и делаем по этой инструкции. Описываю подробнее:
[f0s@mail] /home/f0s/> rndc-confgen > tmp
[f0s@mail] /home/f0s/> cat tmp
# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "IK0mpNGfZ82o8IrRuJRN2A==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "IK0mpNGfZ82o8IrRuJRN2A==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
[f0s@mail] /home/f0s/>

   Тоесть нам надо создать файлик rndc.conf с таким содержимым:
key "rndc-key" {
        algorithm hmac-md5;
        secret "IK0mpNGfZ82o8IrRuJRN2A==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};

а остаток, что закоментарено в файле tmp дописать в named.conf (все эти файлы должны лежать в /etc/namedb/)
   Добавляем в rc.conf:
[f0s@mail] /home/> more /etc/rc.conf | grep named
named_enable="YES"
named_flags="-c /etc/namedb/named.conf"
named_program="/usr/local/sbin/named"

   Устанавливаем права:
[f0s@mail] /var/named/> chown -R bind:bind var
[f0s@mail] /var/named/> chown bind:bind /var/named/etc/namedb/master
[f0s@mail] /var/named/> chown bind:bind /var/named/etc/namedb/dynamic
[f0s@mail] /etc/namedb/> ll
total 34
-rw-r--r--  1 bind  bind    173 25 июн 17:32 10.168.192.rev
-rw-r--r--  1 bind  bind    173 25 июн 17:27 64.52.84.rev
-rw-r--r--  1 bind  bind    423 12 янв  2007 PROTO.localhost-v6.rev
-rw-r--r--  1 bind  bind    423 12 янв  2007 PROTO.localhost.rev
-rw-r--r--  1 bind  bind    564 25 июн 17:25 artpaint.spb.ru
drwxr-xr-x  2 bind  bind    512 12 янв  2007 dynamic
-rw-r--r--  1 bind  bind    446 22 июн 10:07 localhost-v6.rev
-rw-r--r--  1 bind  bind    446 25 июн 17:28 localhost.rev
-rw-r--r--  1 bind  bind   1089 12 янв  2007 make-localhost
drwxr-xr-x  2 bind  bind    512 22 июн 10:08 master
-rw-r--r--  1 bind  bind   4318  3 июл 11:12 named.conf
-rw-r--r--  1 bind  bind   2600 12 янв  2007 named.root
-rw-r--r--  1 root  wheel   479 29 июн 13:52 rndc.conf
drwxr-xr-x  2 bind  bind    512 12 янв  2007 slave
[f0s@mail] /etc/namedb/>

   Стартуемся (стартует первый раз возможно долго.. минут 5):
[f0s@mail] /var/named/> /etc/rc.d/named start

   Переходим к настройке DHCP (проверьте чтобы в опциях сборки было выбрано LDAP):
[f0s@mail] /var/named/> cd /usr/ports/net/isc-dhcp3-server
[f0s@mail] /usr/ports/net/isc-dhcp3-server/> make install clean

   Создаем файлик dhcp.ldif такого содержания (в нем хранятся все параметры области, в будущем можно редактировать через ldapadmin):
[f0s@mail] /usr/local/etc/openldap/> ee dhcp.ldif
dn: ou=dhcp, dc=artpaint,dc=spb,dc=ru
ou: dhcp
description: configuration information for DHCP
objectClass: top
objectClass: organizationalUnit

dn: cn=conf, ou=dhcp, dc=artpaint,dc=spb,dc=ru
dhcpSecondaryDN: cn=mail.artpaint, ou=dhcp, dc=artpaint,dc=spb,dc=ru
dhcpStatements: ddns-update-style none
dhcpStatements: ddns-updates off
dhcpStatements: client-updates off
dhcpStatements: use-host-decl-names on
dhcpStatements: always-reply-rfc1048 on
dhcpStatements: default-lease-time 86400
dhcpStatements: max-lease-time 129600
#dhcpStatements: authoritative
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptions
dhcpPrimaryDN: ou=dhcp, dc=artpaint,dc=spb,dc=ru
dhcpOption: domain-name "artpaint"
dhcpOption: netbios-scope ""
dhcpOption: netbios-node-type 8
dhcpOption: time-offset 10800
dhcpOption: ip-forwarding off
#dhcpOption: option-150 code 150 = ipaddress
dhcpOption: netbios-name-servers 192.168.10.8
cn: conf

dn: cn=mail.artpaint, ou=dhcp, dc=artpaint,dc=spb,dc=ru
dhcpServiceDN: cn=conf, ou=dhcp, dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dhcpServer
cn: mail.artpaint

dn: cn=192.168.10.0, cn=conf, ou=dhcp, dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24
dhcpRange: 192.168.10.50 192.168.10.150
dhcpOption: domain-name-servers 192.168.10.8
dhcpOption: routers 192.168.10.7
# для tftp
#dhcpOption: bootfile-name "pxelinux.0";
#dhcpOption: tftp-server-name "192.168.10.8";
#
dhcpOption: ntp-servers 192.168.10.7
dhcpOption: broadcast-address 192.168.10.255
dhcpOption: default-ip-ttl 64
dhcpOption: default-tcp-ttl 64
cn: 192.168.10.0

dn: cn=print-export, cn=192.168.10.0, cn=conf, ou=dhcp, dc=artpaint, dc=spb, dc=ru
dhcpHWAddress: ethernet 00:00:aa:99:b2:bd
dhcpStatements: fixed-address 192.168.10.15
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
cn: print-export

# ниже резервирование по макадресу. юзаю для принтеров сетевых.
dn: cn=print-buh, cn=192.168.10.0, cn=conf, ou=dhcp, dc=artpaint, dc=spb, dc=ru
dhcpHWAddress: ethernet 00:00:aa:99:b0:7f
dhcpStatements: fixed-address 192.168.10.16
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
cn: print-buh

dn: cn=print-sales-kanc, cn=192.168.10.0, cn=conf, ou=dhcp, dc=artpaint, dc=spb, dc=ru
dhcpHWAddress: ethernet 00:00:aa:99:b0:cd
dhcpStatements: fixed-address 192.168.10.17
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
cn: print-sales-kanc

dn: cn=print-sales-hudozh, cn=192.168.10.0, cn=conf, ou=dhcp, dc=artpaint, dc=spb, dc=ru
dhcpHWAddress: ethernet 00:14:38:5a:1d:c3
dhcpStatements: fixed-address 192.168.10.18
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
cn: print-sales-hudozh

dn: cn=print-mark-color, cn=192.168.10.0, cn=conf, ou=dhcp, dc=artpaint, dc=spb, dc=ru
dhcpHWAddress: ethernet 00:00:f0:ab:8f:64
dhcpStatements: fixed-address 192.168.10.19
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
cn: print-mark-color

dn: cn=print-mark-black, cn=192.168.10.0, cn=conf, ou=dhcp, dc=artpaint, dc=spb, dc=ru
dhcpHWAddress: ethernet 00:00:b4:c9:ee:a2
dhcpStatements: fixed-address 192.168.10.20
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
cn: print-mark-black

   Добавляем в лдап:
[f0s@mail] /var/named/> ldapadd –x –D "cn=root,dc=artpaint,dc=spb,dc=ru" –W –f dhcp.ldif

   Далее редактируем dhcpd.conf
[f0s@mail] /var/named/> more /usr/local/etc/dhcpd.conf
ldap-server "127.0.0.1";
ldap-port 389;
ldap-username "cn=root,dc=artpaint,dc=spb,dc=ru";
ldap-password "password";
ldap-base-dn "ou=dhcp,dc=artpaint,dc=spb,dc=ru";
ldap-method dynamic;

   Проверяем права на файл:
-rw-r-----  1 dhcpd  dhcpd    187  4 июл 13:28 dhcpd.conf

   Добавляем автозапуск dhcp и стартуем его:
[f0s@mail] /var/named/> echo dhcpd_enable=\"YES\" >> /etc/rc.conf
[f0s@mail] /var/named/> echo dhcpd_ifaces=\"nve0\" >> /etc/rc.conf
[f0s@mail] /var/named/> /usr/local/etc/rc.d/isc-dhcpd start

   Для динамического обновления зон нам потребуется мега-скрипт.
[f0s@mail] /root/> fetch http://www.venaas.no/ldap/bind-sdb/dhcp2ldapd-1.1.gz
[f0s@mail] /root/> gunzip dhcp2ldapd-1.1.gz
[f0s@mail] /root/> mkdir dhcp

   Распакованый файл переименовываем в dhcpd2ldap.pl и копируем в /root/dhcp/, затем редактируем:
[f0s@mail] /root/> more /root/dhcp/dhcpd2ldap.pl

#!/usr/bin/perl


$LEASES = "/var/db/dhcpd/dhcpd.leases";

$DOMAIN = "artpaint";
$REVERSE = "10.168.192.in-addr.arpa";

$FORWARD_BASE = "zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru";
$REVERSE_BASE = "zoneName=10.168.192.in-addr.arpa,ou=dns,dc=artpaint,dc=spb,dc=ru";

$USER = 'cn=root,dc=artpaint,dc=spb,dc=ru';
$PASSWORD = "password";

$LDAP_HOST = '192.168.10.8';

$UPDATE_TIME = 30;  
$AUTO_VERIFY = 0;   

Меняем строку 151 в dhcpd2ldap.pl

Должно быть так:
$result = $ldap->delete("relativeDomainName=$fourth," . $REVERSE_BASE);

Было так:

$result = $ldap->delete("relativeDomainName=$fourth.$third," . $REVERSE_BASE);

Если не удалить $third, то множатся обратные зоны для одного хоста.

   И еще надо будет подправить строку ~ 172 и 174:
меняем там $fourth.$third на $fourth.

$result = $ldap->delete("relativeDomainName=$fourth.$third," . $REVERSE_BASE);
$result->code && warn "failed to remove entry: ", $result->error ;

$result = $ldap->add( "relativeDomainName=$fourth.$third," . $REVERSE_BASE,
attr => [
'relativeDomainName'=> "$fourth.$third",

получаем это:

$result = $ldap->delete("relativeDomainName=$fourth," . $REVERSE_BASE);
$result->code && warn "failed to remove entry: ", $result->error ;

$result = $ldap->add( "relativeDomainName=$fourth," . $REVERSE_BASE,
attr => [
'relativeDomainName'=> "$fourth",

   Создаем скрипт /usr/local/etc/rc.d/dhcp2ldap.sh запуска dhcp2ldap.pl:



#!/bin/sh

case "$1" in
start)
	if [ -f /var/run/dhcpd2ldap.pid ]
	then
		echo "Script already launched. PID: "\
			`cat /var/run/dhcpd2ldap.pid`
	else
		echo "Starting dhcpd2ldap..."
		daemon -f -p /var/run/dhcpd2ldap.pid \
			/root/dhcp/dhcpd2ldap.pl && echo "...Done!"
	fi
	;;
stop)
	if [ -f /var/run/dhcpd2ldap.pid ]
	then
		echo "Shutting down dhcpd2ldap..."
		kill -TERM `cat /var/run/dhcpd2ldap.pid` && \
			rm -f /var/run/dhcpd2ldap.pid && echo "...Done!"
	else
		echo "dhcpd2ldap not launched."
	fi
	;;
*)
	echo "Use start script for: { start | stop }" >&2
	exit 64
	;;
esac

   Выставляем права
[f0s@mail] /usr/local/etc/rc.d/> chmod 0755 dhcpd2ldap.sh
[f0s@mail] /usr/local/etc/rc.d/> chown root:wheel dhcpd2ldap.sh
[f0s@mail] /usr/local/etc/rc.d/> ./dhcpd2ldap.sh start
[f0s@mail] /usr/local/etc/rc.d/> ps -ax | grep dhcp
  585  ??  Is     0:00,03 /usr/local/sbin/dhcpd -cf /usr/local/etc/dhcpd.conf -
40200  ??  Ss     0:00,14 /usr/bin/perl /root/dhcp/dhcpd2ldap.pl (perl5.8.8)
40227  p0  RV     0:00,00 grep dhcp (csh)

   Ну вот и все :)



размещено: 2007-07-31,
последнее обновление: 2009-04-09,
автор: f0s


smilealex, 2007-07-31 в 11:45:19

=) выглядит нарядно, для полноты картинки неплохо бы выяснить два вопроса - версии ОС, портов..

Raven2000, 2007-07-31 в 12:37:51

Молодец!
Жаль только управление групповыми политиками тут не прикрутить :( а то все бы перевел. :) А так 5+
Какие Маздаи подключал W2k, WXP_Sp1_Sp2?
Что еще хочешь прикрутить? Пробовал ли Адресные книги в LDAP сделать?

muxas, 2007-08-01 в 7:35:38

Адресные книги для Mozilla работают на ура :-) Масдаевские не пробовал

Женечка, 2007-08-01 в 9:50:39

Я прочитала, но мало что поняла...

Да и мне не насрать.

max, 2007-08-01 в 10:32:36

Кто-нибудь уже переводил существующий домен W2k3 под такую схему?

lissyara, 2007-08-01 в 10:59:46

Автор писал с живого перевода

DarkHost, 2007-08-01 в 11:16:21

Статья хорошая по сути, но бессмысленная по содержанию. Вы меня извините, но это очередная попытка вылепить из какахи баллистическую ракету. Что смысла переводить AD на ПО с ограниченным функционалом?! В качестве пробы своих сил-супер, но не в качестве промышленного решения.

lissyara, было бы интересно увидеть статью на тему Novell Directory -> FreeBSD+LDAP. Поскольку тема мало освещена, а единственный порт для привязки FreeBSD к Novell не обновлялся уже лет 5-10.

В любом случае, благодарю за статью.

NiGeR, 2007-08-01 в 12:39:16

Осталось
1 Почта
2 Прокси
3 Нат
4 Записная книжка

Touch, 2007-08-01 в 13:46:16

Отличная статья! Как и большинство тех которые я тут прочёл по этой теме и в результате в плотную подошёл к использованию самбы как пишет DarkHost "промышленно", то есть один из офисов уже работает на домене построенном на FreeBSD!

Автор так держать!

я, 2007-08-01 в 17:26:48

> один из офисов уже работает на домене построенном на FreeBSD!

мдо, повезло кому-то...

drewhka, 2007-08-02 в 1:01:32

Винде - виндовое. А особенно то что касается Active Directory.
Кстати, попробуйте подружить адресную книгу в OpenLDAP с аутлуком (только не через поиск) и вы лишний раз убедитесь насколько вся винда заточена для виндовых же сервисов..

r007, 2007-08-02 в 14:40:23


Nebol'choe samechanie - v konfige smb.conf neverno ukazana gruppa
add user script = /usr/local/bin/ldapadduser '%u' people
vmesto etogo nado pisat'
add user script = /usr/local/bin/ldapadduser '%u' users
ili on prosto ee ne naidet.
a tak stat'ja neplochaja, spasibo avtoru.

OlegMS, 2007-08-02 в 14:57:52

nss_base_passwd        ou=users,dc=artpaint,dc=spb,dc=ru?one
nss_base_passwd        ou=computers,dc=artpaint,dc=spb,dc=ru?one

во второй строке случаем не nss_base_hosts должно быть?

Kot_igruN, 2007-08-03 в 17:37:10

Полностью согласен с DarkHost!

fr33man, 2007-08-08 в 18:47:45

Указал бы хотя бы, что с моей статьи скатано. Использовалась моя Samba(PDC) + LDAP и статья, которая написана мною, для журнала Системный администратор(www.samag.ru): http://www.samag.ru/art/02.2007/02.2007_03.html

Прочитай внизу(внизу страницы), что Лис написал.

lissyara, 2007-08-08 в 19:40:33

2 fr33man
статья написана по итогам одной длинной-длинной темы в форуме. Так что можешь ткнуть отражению в зеркале - в твоей статье тоже нет ссылок на материалы.
===========
где доки по лдапу, падонак? отдай чё есть хотябы - :)) Народ уже организуется и сделает.
Если ничё нет - так и скажи. 4 месяца мозги мне мурыжишь.

fr33man, 2007-08-08 в 22:41:08

>2 fr33man
статья написана по итогам одной длинной-длинной темы в форуме. Так что можешь ткнуть отражению в зеркале - в твоей статье тоже нет ссылок на материалы.

Я использовал только google и оф. сайты. Ни какие другие материалы я не юзал.

>
где доки по лдапу, падонак? отдай чё есть хотябы - :)) Народ уже организуется и сделает.
Если ничё нет - так и скажи. 4 месяца мозги мне мурыжишь.

Мозги я никому не мурыжу )) У меня есть перевод... Точнее не у меня а на флэшке, а флэшка в США. Так что в сентябре отдам.

lissyara, 2007-08-09 в 0:19:59

ОК. Ждём.
=========
Пошёл Абигора на мопед разводить :)

rwd, 2007-08-29 в 21:47:29

обратите внимание в smb.conf на unix charset = koi8-r, это небольшие грабли со знаком № (знаком номера), лучше сразу ставить unix charset = cp1251 или utf8, в кои8 знака номера нету, а если юзер поставит знак номера в имени файла или папки, то его перемещаемый профиль грузится не будет, и не отображается он(знак номера №) на шаре. (из личного опыта)  

romzes, 2007-09-05 в 19:33:32

все сделал по статье, но тут почемуто, когда логинюсь пользователем не локальным, а доменным, ошибка "профиль не найден... настройки сохранены не будут..."
где туплю?

f0s, 2007-09-06 в 9:28:59

нужно создать папки профайлов.

[f0s@mail] /home/samba/profiles/> ll
drwx----—  3 admin       users  512 18 июл 17:11 admin
drwx----—  2 andreeva    users  512 17 июл 12:27 andreeva
drwx----—  3 f0s         users  512 19 июл 15:30 f0s

т.е. на каждого юзера создать свобю папку с такими правами

Aleksey, 2007-09-11 в 11:07:44

Не понятно как увязаны адреса из динамического диапазона dhcp
dhcpRange: 192.168.10.50 192.168.10.150
и dns.
Судя по
dhcpStatements: ddns-update-style none
dhcpStatements: ddns-updates off
никак.
А очень хочется их связать :)

зы
Статья как справочник просто замечательная!

f0s, 2007-09-11 в 17:48:32

все верно, ибо обновление в лдап идет путем скрипта

elegorn, 2007-09-28 в 15:02:47

а можно ли к такому домену линуксовых клиентов цеплять.
и как в таком случае их настраивать? также как и для подключения к виндовому домену?

Сергей, 2007-10-23 в 11:20:28

Я поднимал домен на freebsd по этой статье http://www.lissyara.su/?id=1487
Все ошибки, которые я замечал в статье и исправлял - такие
0) make depend install clean вместо просто make install clean
1) ldap поднялся не с первого раза, со второго, была ошибка permission denied(13) на slapd.conf
2)в rc.conf ldap://0.0.0.0 сменил на ldap://192.168.0.55 ldap://127.0.0.1
3)что в конфиге для by нужен tab отступ
4)поставил права на args.pid и slapd.pid ldap:ldap
ldap поднялся
5)./ldapaddgroup admins -> Error adding group admins to L->
помогла перезагрузка
6)После благополучном введении компьютера в домен, аутентификация пользователя в виндусе происходит с ошибкой - Не найден профиль пользователя, создан временный. - логи пишут следущее
Также при старте выдаются такия ошибки.bb
slapd[945]: nss_ldap: could not search LDAP server - Server is unavailable
su: nss_ldap: could not search LDAP server - Server is unavailable
named[771]: nss_ldap: could not search LDAP server - Server is unavailable

Далее я опять стал в тупик  и не могу подключить профиль пользователя
webmin добавляет пользователя со следующей ошибкой
Failed to save user : Failed to add user to LDAP database : modifications require authentication

Подскажите, что делать?

FSA, 2007-10-27 в 11:09:12

Указал бы хотя бы, что с моей статьи скатано. Использовалась моя Samba(PDC) + LDAP и статья, которая написана мною, для журнала Системный администратор(www.samag.ru): http://www.samag.ru/art/02.2007/02.2007_03.html

Прочитай внизу(внизу страницы), что Лис написал.


Тут не принято давать ссылки на чужие материалы, особенно если конфиги с комментариями и куски текста перенесены из чужих статей. Отмазка типа я не помню где это брал (когда конфиги понятно, но когда комментарии и куски текста остаются слово в слово...).
Хотя вообщем-то это выявляется только когда автор исходного материала вдруг читает статьи здесь...

lissyara, 2007-10-27 в 14:51:05

2 FSA
не очень понял речь...
даже не понял направленность и настроение.
Не могли бы попроще выражаться?
=========================
если имеются ввиду ссылки на чужие работы - про себя могу сказать что копи-пастом не занимаюсь. Даже если конфиг откуда-то брался, то он пилиться под себя и подробно комментируется.
В общем, требую подобного и от остальных, но не всегда выходит.
=========================
и последнее. Я читал обе статьи, и могу сказать, что ОБА автоар использовали одинаковый (или одинаковые) источники для отдельных моментов - скрипты запуска например.
Поэтому данный спор пустой и беспочвенный. Эта статья - оригинал, сделанный по результатам темы в форуме.
Вопрос закрыт.

FSA, 2007-10-28 в 13:53:50

Я просто поддержал fr33man, т.к. уже сталкивался с тем, что скопировали мои конфиги, комментарии к ним и некоторые абзацы из моей статьи на схожую тему, да и вообще статья на этом сайте была явной переработкой моего материала.

smilealex, 2007-11-21 в 11:56:16

спасибо! всё пашет.. rndc.conf положил в /usr/local/etc - до этого named ругался.
2гражданам оспаривающим своё авторство! читал я ваши статейки.. чот руки се не повыворачивал пытаясь поднять.. а тут: как часики всё заработало!))
гранд мерси 2 http://www.lissyara.su/?id=1486

fr33man, 2007-11-21 в 13:42:57

Конечно проще сделать копи-паст, чем попытаться понять, как оно работает...

Ладно, не суть - это ваше дело.

smilealex, 2007-11-21 в 13:55:29

понять что? алгоритм работы? или синтаксис рихтовки конфигов? вот когда дело доходит до рихтования.. копи-паст - очень даже милое дело!

ProFTP, 2007-11-25 в 3:24:31

В начале было написано, что ставим всё это для того чтобы перейти полностью на фрю!!!
зачем мы ставили самбу вообще?
вообщем маздай не люблю...

rengel, 2008-01-15 в 23:22:05

а вот схемы LDAP'a которые тут использованы, позволяют выставить права пользователю на машине, то есть например чтобы он не смогу устанавливать ПО?

CRUCH, 2008-01-17 в 13:11:45

Regel все то что ты хочешь сделать делается на локальной машине конкретному пользователю!

titan, 2008-02-06 в 20:10:55

Очень полезная статья - на основе этой и fr33man + доки по ldap/samba поставил таки. Виндовс после этого не вижу смысла ставить. Для промышленного маштаба данная связка эффективне и намого надежнее. В статье для дефолтного поднятия системы. Ваша задача уже понять какие возможности можно реализовать - ldap+squid+icq+printers и тд.

bug reporter, 2008-03-08 в 0:01:02

Т0варищщи! Это поля для ввода комментариев к статье, а не для вопросов. Сюда пишите найденные баги, или какие-то фичи :)
Для вопросов есть форум!

rew, 2008-03-19 в 10:44:34

У меня тоже пользовательский профиль не принялся в новом домене...
<Сергей, 2007-10-23 в 11:20:28>, ты разобрался????

MauS, 2008-03-26 в 20:23:34

При настройке Ldap+Samba по данной стфтье появляються следующие баги:

При старте системы выскакивает следующее:
named: nss_ldap: could not search LDAP server - Server is unavailable
slapd: nss_ldap: could not search LDAP server - Server is unavailable

далее при попытке создать юзера под самбу smbpasswd -a Administrator
появляеться следующее сообщение:

failed to bind to server ldap://127.0.0.1/ with dn="cn=root,dc=mydomain,dc=ru"
Error: Invalid credentials

мож я чего нетак делаю, прошу помощи по данному вопросу

Cancer, 2008-03-26 в 23:11:09

Да статейка приятная глазу...Буэм пробовать:)


Спасибо за все что сдесь многое по статьям настраивал и многому научился...Спс

Andrew, 2008-03-27 в 12:45:03

делал по порядку
на этапе
usr/local/etc/rc.d/slapd start
Starting slapd.
ps -ax | grep slap
ничего не показывает ?
может подскажите что мог пропустить

MauS, 2008-03-27 в 18:55:57

to Andrew

cat /var/log/debug.log
посмотри на что ругается (обычно это инициализация базы данных lbd или ldbm, либо в ключах в /etc/rc.conf при инициализации slapd)

Andrew, 2008-03-28 в 9:31:21

ldbm от bdb чем отличается ?
и нужно ли ставить ldbm (и откуда)?

Mar 28 14:16:57 server sm-mta[699]: My unqualified host name (server) unknown; sleeping for retry


с чем связана эта ошибка ? выскакивает при загрузки и залипает на ней приходиться жать ctr+c

Andrew, 2008-03-28 в 9:57:10

за статьи всем спасибо!
не бейте за вопросы.
вот из /var/log/debug.log

Mar 28 14:33:49 server slapd[581]: @(#) $OpenLDAP: slapd 2.3.41 (Mar 27 2008 15:
29:59) $        root@server:/usr/ports/net/openldap23-server/work/openldap-2.3.4
1/servers/slapd
Mar 28 14:33:49 server slapd[582]: WARNING: No dynamic config support for databa
se ldbm.
Mar 28 14:33:50 server slapd[582]: slapd starting

pavel, 2008-04-04 в 22:06:34

Все делал как в статье, но не могу разобраться с этой ошибкой:
# ldapaddgroup admins
Warning : using command-line passwords, ldapscripts may not be safe
Error adding group admins to LDAP

Yura, 2008-04-12 в 21:02:07

to Pavel
> Все делал как в статье, но не могу разобраться с этой > ошибкой:
> # ldapaddgroup admins
> Warning : using command-line passwords, ldapscripts
> may not be safe

В файле ldapscripts.conf закоменти
#BINDPWD="secret"
И добавь
BINDPWDFILE="/usr/local/etc/ldapscripts/ldapscripts.passwd"
Посмотри, чтобы этот файл существовал, если его нет - создай и добавь туда 'secret' (без кавычек) - первая ошибка исчезнет

> Error adding group admins to LDAP

посмотри по логам, скорее всего увидишь err=68, а это означает, что группа уже существует, просто добавляй дальше (юзеров и т.д.), если ошибок не будет, значит все нормально


m0ps, 2008-05-19 в 23:12:18

статья как howto очень хорошая, но хотелось бы видеть больше комментариев к тому что делается, для того что б не только скопировал->вставил->заработало а еще и понимать суть манипуляций...

pk, 2008-06-09 в 22:31:30

Спасибо огромное за статью :) а так же за пути решения некоторых проблем возникающих у тех, кто не настолько глубоко знаком с лдап! :) ОООчень помогло!!!!

Vladimir Ivanov, 2008-08-10 в 14:04:03

У меня такой вопрос: а нафига вообще поднимать ddns? у меня домен и без него прекрасно пашет. А если он поднят - будут ли клиентские винды им пользоваться вообще?

Кстати, здесь кербероса не хватает...

djeday84, 2008-08-14 в 14:36:51

по поводу не найден сетевой профиль и все такое - уменя заработало после gpedit.msc - не проверять подлинность перемещаемого профиля, нычко включить

Alex, 2008-10-15 в 11:29:35

Множество полезных статей но во всех ошибки и пловину  надо додумывать

lissyara, 2008-10-15 в 11:56:07

Тем кто не хочет думать, за сходную цену M$ предлагает шикарный набор хорошо интегрированых между собой приложений.
О глюках тоже думать не надо - если всё лицензионное - звони в техподдержку - пусть думают и решают.

Видимо - это - ваш путь.

Oloremo, 2008-10-15 в 12:14:11

В тему:
Всё лицензионное. Звонили в техподдержуку по проблеме с взаимодействием Word + Outlook. Проблему признали(4 часа разговора). Решат, может быть в следующем сервис паке.

Нафиг такое надо.

nal, 2008-10-24 в 19:49:44

# скрипты для добавления юзеров и групп (юзается в usermgr от nt4)
теперь ldapscripts находятся не в /usr/local/bin, а в /usr/local/sbin

f0s, 2008-10-24 в 20:21:20

может версии разные? статья писалась и првоерялась неоднократно.. даже с копи-пейстом все работает. Все делал на рабочем сервере, до сих пор все работает + прикручены новые фичи

nal, 2008-10-25 в 15:41:38

ldapscripts-1.8.0_1 pkg-plist
а предыдущие версии, дейсвительно, располагались /usr/local/bin

Michael, 2008-12-02 в 14:16:41

Завелось, но в домен включить машину не смог...

и LdapAdmin не хочет коннектиться к серверу с логином и паролем
будем ковырять.....

Хомяк, 2008-12-25 в 7:05:13

По поводу поднятия DHCP:
...
dhcpSecondaryDN: cn=mail.artpaint,ou=dhcp,dc=artpaint,dc=spb,dc=ru
...
dn: cn=mail.artpaint, ou=dhcp, dc=artpaint,dc=spb,dc=ru
dhcpServiceDN: cn=conf, ou=dhcp, dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dhcpServer
cn: mail.artpaint
...

Если поднимать как cn=mail.artpaint - dhcpd ругается:
Error: Cannot find LDAP entry matching (&(objectClass=dhcpServer)(|(cn=mail)(cn=mail)))
Если вместо этого указать cn=mail без всяких точек - то всё нормально поднимается...
Бага аль фича, но я что-то упустил?

CaBa, 2009-02-10 в 22:20:38

Спасибо за статью!! Очень хорошо написано!! Пока без DNS и DHCP всё отлично работает. Главное не делать ошибок...:)

Григорьев Михаил, 2009-02-26 в 13:02:53

Статья неплохая, но автор писал сильно не вникая в настройки DHCP с LDAP.
Например, если вы хотите сделать статическую привязку IP по MAC адресам, то есть записи objectClass: dhcpHost и т.д., то в dhcpd.conf пареметр ldap-method должен быть static, иначе isc-dhcpd просто не будет воспринимать записи с objectClass: dhcpHost

f0s, 2009-02-27 в 12:53:07

поясните плз, ибо у меня привязка по маку работает...

tairsky, 2009-03-02 в 9:56:03

@господа!! довольно таки подробно описано, но действительно все собирается руками, и у кого они кривые, тому мало что поможет! Для тех кому интересно рекомендую воспользоватся AD из RH! Чудный сабж! Большиство LDIF стандартизовано

CrazyL, 2009-04-08 в 16:03:21

Давно уже всё настроено и работает по этой статье, но с dhcp извратился сначала чтоб работало. Сейчас решил всё привести в порядок, разобрался что к чему.
...
dhcpSecondaryDN: cn=
mail.artpaint,ou=dhcp,dc=artpaint,dc=spb,dc=ru
...
dn: cn=
mail.artpaint, ou=dhcp, dc=artpaint,dc=spb,dc=ru
dhcpServiceDN: cn=conf, ou=dhcp, dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dhcpServer
cn:
mail.artpaint
...


Пишем обязательно полное имя тачки.
Которое выдаёт команда: hostname
Иначе искать не там будет, и нестартует.

AndyS, 2009-04-08 в 20:27:23

Еще одна маленькая бага
Строка 151 dhcpd2ldap.pl
Должно быть так:
$result = $ldap->delete("relativeDomainName=$fourth," . $REVERSE_BASE);
Было так:
$result = $ldap->delete("relativeDomainName=$fourth.$third," . $REVERSE_BASE);
Если не удалить $third, то множатся обратные зоны для одного хоста.
С виндовыми компами все на ура проходит, вот с Ubuntu получал каждый раз новый айпишник, и обратная зона не удалялась.
Если два компа с одинаковым именем, то ругатся должно?
Что-то не ругается у меня.
Куда курить надо?

SchmeL, 2009-04-26 в 14:50:46

выскакиевает ошибка nss_ldap: could not search LDAP server - Server is unavailable
хотя учетки ldap прекрасно видны системе. думаю просто демон nss_ldap запускается раньше самого slapd.
lbdm уже не поддерживается в openldap 2.4.x
так что в конфиг slapd.conf я брал оригинальный, добавил только схемы и rootpw свой.
после установки nss_ldap попробуйте проверить виден ли пользователь системе. если нет меняйте его конфиг, дальше не идите. я с этим в свое время сильно запутался...

GRooVE, 2009-05-24 в 17:26:58

Так и не смог корректно работать с программой poledit: т.к. программа заточена под 98/NT - большинство шаблонов XP просто не открываются.
Зато нашел альтернативу, предлагаемую мелкомягкими с использованием локального gpedit.msc:
http://support.microsoft.com/?scid=kb;en-us;293655

zubchik, 2009-07-01 в 16:19:11

Спасибо за статью,но разве в dns.ldif в SOA обратной зоны не должно быть
# SOA for addr-arpa
sOARecord: 10.168.192.in-addr.arpa. root.mail.artpaint. 1 8H 2H 1W 1D
вместо
# SOA for addr-arpa
sOARecord: mail.artpaint. root.mail.artpaint. 1 8H 2H 1W 1D
Если ошибаюсь-прошу прощения за ламерство :)

andrey, 2009-07-01 в 23:54:35

Во-первых хочу сказать огромное спасибо за статью.
Ну вообще понятно что реализовать написанное человек с небольшим опытом Unix систем не сможет, однако спустя некоторое время у меня получилось. Но как человек имеющий опыт в администрировании вообще, я нашел ряд непонятных мне вещей.

1. почему зона называется
dn: zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
objectClass: top
objectClass: dNSZone
zoneName: artpaint
relativeDomainName: artpaint

если правильно было бы artpaint.spb.ru

2. при установке dhcp2ldapd-1.1.gz неописано что необходимо иметь perl-ldap библиотеки.
3. тут
$DOMAIN = "artpaint";
$REVERSE = "10.168.192.in-addr.arpa";

должно быть не 10.168.192 а 168.192

4. тут
/usr/local/etc/rc.d/> ./dhcpd2ldap.sh start

не написано как замечательно можно вставить скрипт в скрипт запуска dhcp.
5. этот параметр query-source address * port 53;
в named.conf не нужен в данном случае.

еще раз спасибо за статью.
Еще есть просьба, если ктото имел дело с миграцией домена winnt40 2000 на samba3 домен, прошу, напишите статью:)

MetiS1977, 2009-07-10 в 19:36:12

nss_ldap.conf:

nss_connect_policy      persist
лучше заменить на:
nss_connect_policy      oneshot
Геморроя меньше будет :-)

adre, 2009-07-27 в 10:10:25

2andrey, реализовать написанное человек с небольшим опытом в UNIX - сможет =)

svi0105, 2009-09-11 в 17:26:32

в nss_ldap.conf не хватает строк авторизации:

binddn cn=root,dc=artpaint,dc=spb,dc=ru
# пароль - в plain text!
bindpw  secret

scompick, 2010-01-11 в 17:54:57

При установке bind9-sdb-ldap обязательно:
[X] REPLACE_BASE  Replace base BIND with this version

sash.d, 2010-01-30 в 19:36:30

при расстановке прав на папки самбы ругнулось что нет такой группы users

KIper, 2010-05-05 в 13:21:34

мне кажется лучше сделать sub поиск, чем one. удобно, если у вас созданы дополнительные ou в users, groups, computers. например в computers создать иерархию с комнатами. так же и для пользователей иерархию с отделами, ну и группы удобно группировать ou'хами(отдельно VPN, отдельно INET_ACCESS, отдельно доменные группы)

/usr/local/etc/nss_ldap.conf
....
nss_base_passwd        ou=users,dc=artpaint,dc=spb,dc=ru?sub
nss_base_group        ou=groups,dc=artpaint,dc=spb,dc=ru?sub
nss_base_passwd        ou=computers,dc=artpaint,dc=spb,dc=ru?sub
nss_base_shadow        ou=users,dc=artpaint,dc=spb,dc=ru?sub

Дмитрий, 2010-09-28 в 13:15:19

Господа, а вы случаем не забыли еще один шаг, который нужно сделать перед добавлением собственной машины в домен?
Перед net rpc join -S localhost -U admin случайно не надо сделать   ldapaddmachine SERVER$ computers
?

f0s, 2010-09-28 в 15:52:19

нет, у меня автоматом добавляется и так

Mufanu, 2010-12-21 в 14:45:22

Мучался с dhcp2ldap. Оказывается нужно было установить Net::LDAP.

Max, 2011-02-20 в 11:52:39

После обновления ldapscripts с версии 1.09_2 до 1.10 эти скрипты перестали работать :)
Например ldapaddgroup <groupname> вываливается с ошибкой "Invalid value specified for GCLASS, exiting"...
Обидно и досадно :( После отката на 1.09 всё работает...
Я малоопытен, прошу не пинать :)

princeps, 2011-03-30 в 14:43:48

Лечится добавлением

GCLASS="posixGroup"

в конфиг скриптов

BlackJaguar, 2011-04-04 в 20:00:16

Есть Ваша статья по урлу http://www.lissyara.su/archive/1c_8.2+postgresql/
Там в голове написано "Контроллер домена на mail.artpaint/kerberos.artpaint". В статье про контроллер домена, т.е. здесь ни единого упоминания о настройке Kerberos. Дописывайте статью.

Dave77, 2011-08-05 в 11:57:07

Люди! Объясните почему Samba не пускает клиентов Windows 98?

Dmd, 2011-08-23 в 16:18:51

Не выходит установить пароль админу:

[/usr/local/etc/rc.d]# smbpasswd -a admin
New SMB password:
Retype new SMB password:
/usr/local/bin/ldapadduser: not found
_samr_create_user: Running the command `/usr/local/bin/ldapadduser 'admin' users' gave 127
Failed to add entry for user admin.


Что это может быть? спасибо.

f0s, 2011-08-23 в 16:31:38

поправьте путь к скриптам ldapadduser в smb.conf



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.2142 секунд
Из них PHP: 73%; SQL: 27%; Число SQL-запросов: 80 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 169756