PDC для сети Windows XP используя NetBSD 2.0.2 && Samba 3.14a.
Автор: .
Оригинал:.
0. Преамбула.
Нелюбители моих разглагольствований могут спокойно проскипать этот раздел и переходить к пункту 1. :)
Я админю корпоративную сетку из 15 компьютеров под управлением Windows XP (из них 3 - ноутбуки под Home, остальные - Professional). Сеть подключена к интернету посредством шлюза на Slackware 9.1 (iptables, Exim, Squid + SARG + rejik3, локальный dns-сервер, локальный ftp). Также в сети находится терминальный сервер для 1C на Windows 2003 Server. Как вы понимаете, в сети не было Primary Domain Controller (PDC), что превращало её администрирование в тихий ад. Особенно много проблем было с shared-папками, которые сами-собою исчезали, затем снова появлялись, вдруг cтановились недоступными для некоторых пользователей и так далее, и тому подобное... Плюс ко всему, для терминального сервера понадобилась машина, на которую можно было бы скидывать ежедневную "горячую копию" БД. Все это привело к принятию решения о покупке еще одного сервера для доменного контроллера и backup'a для win2003. К сожалению, оборудование выбирал и покупал не я, что привело к некоторым последствиям...
Купленный сервер имел следующие характеристики: P4 3GHz, 1GB RAM, 4IDE 160GB + материнская плата от MSI с on-board LAN (RealTek 8169) на чипсете i915(P/G). С этой-то платой и начались все проблемы. На неё ничего не хотело вставать. Linux 2.6.11.6 пропатченный до 2.6.12 (на тот момент самый свежий) вставал, если в конфигурации PCI в ядре прописать PCI=Direct. И все бы хорошо, но только после этого шина PCI вообще отказывалась работать. Симптоматика следующая: например сетевая карта(как встроенная, так и любая другая) поднималась ifconfig'om, но пакеты через неё не шли. Аналогичная ситуация происходила и с другими устройствами (flash-диск: видим устройство, но примонтировать не можем). Активное googl'енье и раскопки форумов не помогли, а время на установку было ограничено и не позволяло как следует разобраться с этой проблемой. Я попробовал FreeBSD: 4.11 висла при загрузке ядра, 5.3 не видела ide-контроллеров. Ситуация складывалась, скажем так, пренеприятнейшая ;).
В последней надежде, уже отчаившись, я вставил в этот злосчастный сервер дискету g4u (дистрибутив для клонирования дисков, основанный на NetBSD). И... оно загрузилось, обнаружило диски и подняло сеть! Времени было совсем мало и я полез на сайт NetBSD. Приятно удивил размер дистрибутива(170Mb) - траффик-то у нас не резиновый. Рискну...
Я около двух лет серьезно занимаюсь Linux'ом (у меня дома Gentoo) и немного знаком с FreeBSD, но NetBSD увидел в первый раз. :) Все что написано ниже - результат активного наступания на множество граблей. Ни в коем случае не утверждается, что это руководство во всем правильное и _оптимальное_. Это - всего лишь попытка заполнить ту пустоту руководств по NetBSD на русском языке и предназначно для таких как я - чтобы не лишний раз не ошибаться при решении подобной задачи.
Я вам уже надоел, не так ли? Что ж, теперь можно приступать собственно к солюшену:
"Let the game begins!" <Blind Guardian>
1. Я скачал свежую версию NetBSD 2.0.2 отсюда:
. Я не буду описывать процесс установки, он очень хорошо изложен в официальном руководстве к NetBSD (можно найти на , есть перевод от ruNetBSD). Будем считать, что вы уже поставили саму систему. Маленькое замечание: при
установке я все делал по доке (только немного изменил размеры предлагаемых разделов соответсвенно моим подребностям: swap сделал 1Gb, /var - 2Gb, /home - 140GB). Устанавливал я через ftp. Ставил все пакеты, кроме x-вых. Время выбрал - UTC, регион Europe/Moscow.
2. Сразу после установки отредактировал /etc/fstab:
...
/dev/wd0g /home ffs rw,userquota,softdep 1 2
...
Опция usrquota означает включение дисковых квот для пользователей (я
ограничил доступное дисковое пространство для пользоватльских
сетевых дисков и профайлов). softdep - включение Soft-Dependences, что
позволяет ускорить работу с диском. Собственный опыт показал,
что разница по скорости с softdep и без них огромная.
3. Следующим шагом, я изменил /etc/rc.conf следующим образом:
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
fi# If this is not set to YES, the system will drop into single-user mode.
#
rc_configured=YES
sshd=YES
hostname=shaman.my-domain.ru# Network Configuration
#auto_ifconfig=yes
ifconfig_re0="inet 192.168.0.7 netmask 255.255.255.0"
defaultroute=192.168.0.1# Add local overrides below
#
wscons=YES
sshd=YES включает автоматическую загрузку SSH при старте системы, hostname
задает имя хоста, строчки после комментария
'Network Configuration' задают автоматическре поднятие сетевого интерфейса
при загрузке. Сетевые интерфейся можно просмотреть
через `ifconfig -a`. (называются они не как в linux'e eth0 eth1 ..., а
согласно имени карты, для RealTek'a это re0, re1 и.т.д.)
4. После этого я отредактировал файл /etc/hosts:
::1 localhost localhost.
127.0.0.1 localhost localhost.
192.168.0.7 shaman.my-domain.ru shaman
5. Сделав все это, я решил, что для нормальной работы мне все-таки не
хватает некоторых полезных приложений и скачал с
следующие пакеты:
bash-3.0pl16.tgz
jed-0.99.16nb1.tgz (glib2-2.6.3.tgz, libslang-1.4.9nb3.tgz)
links-2.1.0.17.tgz
perl-5.8.6nb3.tgz
setquota-0.1.tgz
Я поставил их с помощью pkg_add *.tgz. При установке позникали Warning'и,
что версия пакета несоовествует версии системы (2.0.0 вместо 2.0.2), но
это никоим образом не повлияло на дальнейшую работу. С помощью chsh
перевел root'a на /usr/pkg/bin/bash, а также добавил в /etc/profile
строчку: export PS1='\u@\h:\w\$', но это кому как нравится...
6. После всего вышеперечисленного я добавил пользователя:
useradd -G users,wheel -m -s /usr/pkg/bin/bash key
wheel - группа, пользователи которой могут становится суперюзерами
(выполнять команду su).
7. Собственно на этом настройка NetBSD закончилась, и начинается настройка
Samb'ы. Необходимо скачать последнюю самбу с официального сайта (на тот момент это была samba 3.14a), распоковать в отдельную папку и собрать следующим образом (из под пользователя):
$./configure --prefix=/usr --with-datadir=/usr/share --with-sys-quotas \
--with-configdir=/etc/samba --with-lockdir=/var/run/samba
$make
$su -c 'make install'
8. Для samb'ы я использую следующий конфиг (поместите его в
/etc/samba/smb.conf и _внимательно_ изучите комментарии, если вы ранее не
сталкивались с samb'ой или не ставили её под BSD-системы):
[global]
# Рабочая группа.
workgroup = WORKGROUP
# Имя сервера
netbios name = SHAMAN
interfaces = re0, lo
bind interfaces only = Yes
passdb backend = tdbsam
pam password change = Yes
passwd chat = *New*Password* %n\n
*Re-enter*new*password*%n\n*Password*changed*
username map = /etc/samba/smbusers
unix password sync = No
log level = 1
syslog = 0
log file = /var/log/samba/%m
max log size = 50
smb ports = 139 445
# У меня в локальном DNS-сервере не прописаны имена для компьютеров
пользователей
name resolve order = hosts wins bcast
time server = Yes
add user script = /usr/sbin/useradd -m '%u'
delete user script = /usr/sbin/userdel -r '%u'
add group script = /usr/sbin/groupadd '%g'
delete group script = /usr/sbin/groupdel '%g'
add user to group script = /usr/sbin/usermod -G '%g' '%u'
# Следующая строчка для автоматичесого добавления машины прекрасно
работает в linux,
# но не работает в *BSD т.к. имя пользователя в команде useradd не должно
# содержать знака '$'. Поэтому вручную добавляем каждую машину с помощью
# команды `useradd -s /bin/false -d /tmp имя_машины`, а затем используя
# vipw добавляем к имени '$'. Криво, но работает.
# add machine script = /usr/sbin/useradd -s /bin/false -d /tmp '%u'
# Тажке можно использовать патч на useradd отсюда:
#
# , но я не стал мучиться с пересборкой, т.к. компьютеров у меня в сети
мало и
# прописывать вручную их нетрудно.
shutdown script = /home/samba/scripts/shutdown.sh
abort shutdown script = /sbin/shutdown -c
# в logon.bat происходит синхронизация часов.
logon script = scripts\logon.bat
logon path = \\%L\profiles\%U
logon drive = X:
logon home = \\%L\%U
domain logons = Yes
preferred master = Yes
wins support = Yes
utmp = Yes
map acl inherit = Yes# IPC необходимо для нормальной работы Windows-домена:
# browse network, browse folder и прочее.
[IPC$]
path = /tmp
hosts allow = 192.168.0.0/24, 127.0.0.1
hosts deny = 0.0.0.0/0# Это - диски X: пользователей.
[homes]
comment = Home Directories
valid users = %S
create mask = 0711
directory mask = 0755
read only = No
browseable = No# здесь лежит logon.bat и другие нужные скрипты.
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = Yes
locking = No# Это - место для профайлов (C:\Documents And Settings\имя_пользователя)
[profiles]
comment = Profile Share
path = /home/samba/profiles
create mask = 0711
directory mask = 0755
read only = No
profile acls = Yes# Это - общая папка пользователей, куда они могут сваливать все, что хотят.
[common]
comment = Common Share
path = /home/common
read only = No
guest ok = Yes# Это - "грубая эмуляция" обычных shared-папок. Криво, зато в одном месте и
# с ноутбуков (не включенных в домен) доступно.
[shares]
comment = Shares folder
path = /home/shares
create mask = 0777
directory mask = 0777
read only = No
guest ok = Yes
# Для доступа с ноутбуков, создаем пользователя (например) mobile, даем ему квоту
# побольше (edquota -u mobile), задаем пароль (smbpasswd mobile; passwd mobile)
# и даем пользователям login/пароль. Подключаем сетевой диск:
# \\ip_вашего_сервера\shares, вводим логин/пароль, ставим галочку "подключать при
# загрузке"
Вдогонку к этому файлу, необходимо создать еще файл /etc/samba/smbusers,
который содержит следующее:
####
# User mapping file
####
# File Format
# -----------
# Unix_ID = Windows_IDroot = Administrator
####
# End of File
####
Что переопределит пользователя root как windows'кого Administrator.
9. Установим samba-пароль для root'a:
#smbpasswd -a root
New SMB password:
Retype new SMB password:
#
10. Для автоматического запуска samb'ы пр загрузке, надо добавить
следующие строчки в /etc/rc.local:
...
echo "Starting Samba..."
/usr/sbin/smbd -D
/usr/sbin/nmbd -D
...
11. Теперь необходимо создать все директории, которые указаны в smb.conf и
задать для них правильные права ;). Я сделал это с помощью следующего
скрипта (/etc/samba/mkdirs.sh):
#!/bin/sh
#mkdirs.shmkdir -p /home/common
mkdir -p /home/shares
chgrp -R wrkusers /home/common
chgrp -R wrkusers /home/shares
chmod -R 777 /home/common /home/shares
mkdir -p /home/samba
mkdir -p /home/samba/{netlogon/scripts,profiles}
chown -R root.wheel /var/spool/samba
chown -R root.wheel /home/samba
chgrp -R wrkusers /home/samba/profiles
chmod a+rwxt /var/spool/samba
#cd /etc/samba/
#chmod +x mkdirs.sh
#./mkdirs.sh
12. Попробуем запустить samb'y:
#/usr/sbin/smbd -D
#/usr/sbin/nmbd -D
13. С помощью с следующего скрипта (/etc/samba/initgroups.sh) я создал и переопределил unix-группы пользователей как windows-группы пользователей. Здесь также создается отдельная группа пользователей для работы с доменом, т.к. включать пользователей домена в группу users не рекомендуется.
#!/bin/sh
# initgroups.sh# По многочисленным советам разных doc, рекомедуется
# все же создавать отдельную группу для всех пользователей
# дмена...
groupadd wrkusersnet groupmap modify ntgroup="Domain Admins" unixgroup=wheel
net groupmap modify ntgroup="Domain Users" unixgroup=users
net groupmap modify ntgroup="Domain Guests" unixgroup=nobodynet groupmap add ntgroup="WRK Users" unixgroup=wrkusers type=d
#cd /etc/samba
#chmod +x initgroups.sh
#./initgroups.sh
Updated mapping entry for Domain Admins
Updated mapping entry for Domain Users
Updated mapping entry for Domain Guests
No rid or sid specified, choosing algorithmic mapping
Successfully added group WRK Users to the mapping db
14. На этом шаге, необходимо перезагрузиться для включения квот, softdeps
и проверки: запустились ли samba и ssh, поднялись ли сетевые интерфейсы.
#reboot
Проверка квот - довольно-таки длительное дело на большом (~140GB как у
меня) разделе. Наберитесь терпения.
15. Для автоматизации добавления пользователя в домен я использую
следующий скрипт (/etc/samba/adduser.sh):
#!/bin/sh
# adduser.sh
# Используйте:
# adduser.sh имя_пользователя# добавим пользователя
useradd -m -G accounts -c "$1" "$1"
# зададим ему unix- и samba- пароли
passwd $1
smbpasswd -a $1
# создадим необходимы директории - для shared-папок и профайлов
mkdir /home/samba/profiles/$1
mkdir /home/shares/$1
chgrp wrkusers /home/shares/$1
chmod u+rw,g+rw,o+rw /home/shares/$1
chown $1.wrkusers /home/samba/profiles/$1
chmod ug+wrx,o+rx,o-w /home/samba/profiles/$1
# задаем квоты для пользователя.
# вместо jed - ваш любимый редактор
export EDITOR=jed
edquota -u $1
#chmod +x /etc/samba/adduser.sh
Теперь, для добавления нового пользователя в домен, достаточно вызвать:
#/etc/samba/adduser.sh имя_пользователя
16. Добавляем машины в домен:
#useradd -s /bin/false -d /tmp имя_машины
А затем, с помощью vipw изменяем их имена, добавляя в конец имени символ '$'.
17. Для синхронизации по времениw windows-машин и сервера, я создаю файл
logon.bat (/home/samba/netlogon/logon.bat):
rem LOGON.BAT
echo off
net time \\shaman /set /yes
С помощью утиллиты todos (её легко найти в интернете, в т.ч., если мне не
изменяет память, на сайте opennet.ru или
здесь: ) преобразую
logon.bat к формату dos:
#todos /home/samba/netlogon/logon.bat
18. Все! Сделаем несложную проверку:
#ps ax | grep mbd
root 349 0.0 0.0 2432 4 ?? IW Fri05PM 0:00.00
/usr/sbin/smbd
root 539 0.0 0.1 2468 1012 ?? Ss Fri05PM 0:00.46
/usr/sbin/smbd
root 574 0.0 0.0 912 4 ?? IW Fri05PM 0:00.00
/usr/sbin/nmbd
#smbclient -L shaman -U%
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.14a]Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 3.0.14a)
netlogon Disk Network Logon Service
profiles Disk Profile Share
common Disk Common Share
shares Disk Shares folder
ADMIN$ IPC IPC Service (Samba 3.0.14a)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.14a]Server Comment
--------- -------
SHAMAN Samba 3.0.14aWorkgroup Master
--------- -------
WORKGROUP SHAMAN#
Если все так, то ура! - PDC на Samba 3.14a и NetBSD 2.0.2 работает!
18. Проблемы и решения.
П: В linux'e есть команда killall. А в NetBSD такой, к сожалению, нет.
Р: Этот простой скрипт заменяет killall -9:
#!/bin/sh
ps -aux | grep $1 | grep -v grep | awk '{print$2}' | xargs kill -9
19. Заключение.
Все оказалось значительно проще чем я ожидал :). Сейчас uptime этого сервера - 121 день. Его скоро от пыли надо чистить, а отключать жалко ;). Это единственный сервер, к которому я подхожу только для того, чтобы добавить нового пользователя.
Все комментарии, баги и предложения - прошу !
- Страница для печати
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 7356 просмотра
Well done!
Well done!
qnub, неверю что
qnub, неверю что это ты писал!
Я когда поставил netbsd 1.6 => netbsd2 еще небыло на свете
я пришел на dalnet на #netbsd и ты там уже сидел.
см. в самом
см. в самом начале.
внимательно
внимательно посмотри наверх :-)
А иззиняюсь,
А иззиняюсь, незаметил.