samba_pdc + ddns + dhcp – с хранением всех данных в LDAP
Предыстория: В общем появилась у меня гениальная идея: в связи с дороговизной виндоуса перейти полностью на 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: artpaintdn: 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.confSERVER="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 = False
# делаем 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
# просто так
чтобы можно было на тачку заходить
[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
Здесь используются перемещаемые профили, то есть все настройки юзеров на сервере и домашние папки тоже. Очень удобно. Обратите внимание на опции касающиеся хостов которым разрешено/запрещено коннектится - иначе будете долго разбираться почему не заходит в домен.
Теперь необходимо созать каталоги 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
Комментариев нет.
Оставить комментарий
-
Свежее
- DDNS+DHCP
- samba_pdc + ddns + dhcp – с хранением всех данных в LDAP
- Материал из Википедии о DHCP
- Все, что полезно знать о BIOS
- FAQ по BIOS
- Зарабатываем с помощью блога
- Изменения в сетевом стеке Windows Vista и Windows Server
- Более 4 Гб RAM и 32-битная Windows Vista
- Как управлять совместимостью приложений с Windows Vista
- Резервное копирование Windows Vista, которого у вас “нет”
- Забудьте о WGA! А также о более чем 20 функциях Windows Vista и службах сбора пользовательских данных
- Установка Windows Vista с флэш-драйва USB 2.0
-
Ссылки
-
Архивы
- Август 2007 (75)
-
Рубрики
- Active Directory
- Bios
- DHCP
- DNS
- Бездисковая загрузка
- Безопасность
- Групповые политики
- Документация
- Заработок в интернете, Wordpress
- Настройка компьютера
- Общие статьи для сисадминов
- Разное
- Реестр
- Сетевые протоколы
- Терминалка
- администрирование Windows
- FreeBSD
- LDAP
- Linux
- Microsoft Exchange 2003
- NAT
- PowerShell
- Spam
- Windows
- Windows Server 2008
- Windows Vista
- Windows XP
-
RSS
RSS записей
RSS комментариев