The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

PDC для сети Windows XP используя NetBSD 2.0.2 и Samba 3.14a. (netbsd bsd samba domain pdc windows win)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: netbsd, bsd, samba, domain, pdc, windows, win,  (найти похожие документы)
From: Key <http://www.unixtalk.ru>; Date: Mon, 22 Oct 2005 14:31:37 +0000 (UTC) Subject: PDC для сети Windows XP используя NetBSD 2.0.2 и Samba 3.14a. Оригинал: http://www.unixtalk.ru/showthread.php?t=27 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 отсюда: ftp://ftp.netbsd.org/pub/NetBSD/iso/2.0.2/i386cd.iso. Я не буду описывать процесс установки, он очень хорошо изложен в официальном руководстве к NetBSD (можно найти на http://www.netbsd.org, есть перевод от 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. Сделав все это, я решил, что для нормальной работы мне все-таки не хватает некоторых полезных приложений и скачал с ftp://ftp.netbsd.org/pub/NetBSD/packages/2.0/i386/ALL/ следующие пакеты: 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 отсюда: # http://mail-index.netbsd.org/netbsd...10/15/0010.html # , но я не стал мучиться с пересборкой, т.к. компьютеров у меня в сети мало и # прописывать вручную их нетрудно. 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_ID root = 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.sh mkdir -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 wrkusers net groupmap modify ntgroup="Domain Admins" unixgroup=wheel net groupmap modify ntgroup="Domain Users" unixgroup=users net groupmap modify ntgroup="Domain Guests" unixgroup=nobody net 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 или здесь: http://www.ftp.nsk.su/cgi-bin/bbs2html?pub/networks) преобразую 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.14a Workgroup 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 день. Его скоро от пыли надо чистить, а отключать жалко ;). Это единственный сервер, к которому я подхожу только для того, чтобы добавить нового пользователя.

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, imago (?), 10:41, 26/10/2005 [ответить]  
  • +/
    отличная статья, автору респект
     
  • 1.3, AquaBat (??), 05:05, 19/10/2006 [ответить]  
  • +/
    Спасибо. Хорошая статья.
     
  • 1.4, andy (??), 19:03, 17/04/2007 [ответить]  
  • +/
    Классная статья
    одно замечание после
    passwd $1 smbpasswd -a $1
    наверное надо smbpasswd -е $1
    если ничего не путаю...
     
  • 1.5, GByte (??), 08:59, 13/06/2007 [ответить]  
  • +/
    Да и напрямую строчки запуска самбовых демонов в rc.conf добавлять не стоит - лучше сделать скрипт для запуска/останова/перезапуска самбы, положыть его в /etc/rc.d и как его и добавить в rc.conf
     
  • 1.6, GByte (??), 09:04, 13/06/2007 [ответить]  
  • +/
    PS

    некоторые интересные вещи для себя почерпнул.
    Автору Спасибо!

     
  • 1.7, Dutchman (?), 15:06, 10/08/2007 [ответить]  
  • +/
    Есть вопрос. Юзверя влетают нормально, НО. Под winxp  sp2 pro, есть проблема. Если локально юзверь доменный не объявлен админом, то у него не работает куча свойств. типа того что : раб.стол отображается неверно, англ.язык только, дефолтный принтер не меняется.... точнее меняется, релогин - и опять все по-старому.... не подскажете че править?
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру