Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Samba как PDC

Самба как контроллер домена без использования LDAP

Автор: lissyara.


    Это - обновление старой одноимённой статьи. Как и старая - эта полностью копи-пастная - всё работает "из коробки" =) Причина обновления - недоработки старой статьи, кривости в некоторых местах (дополнительные параметры пользователя не редактировались). Ну и столкнулся с практической реализаций решения - попросили сделать в одной конторе.
   Задача - поднять домен с целью централизованного хранения учётных записей пользователей, выполнения каких-то скриптов при логине и т.п. Больше оно и не может - ибо уровень домена - NT4.

   Система - FreeBSD 7.2-STABLE. Ставим самбу:
server$ cd /usr/ports/net/samba3
server$ make install clean

   В вылезшем окошке выбираем следующие опции:
[X] WINBIND      With WinBIND support
[X] ACL_SUPPORT  With ACL support
[X] SYSLOG       With Syslog support
[X] QUOTAS       With Disk quota support
[X] UTMP         With UTMP accounting support
[X] POPT         With system-wide POPT library
[X] PCH          With precompiled headers optimization

   Рисуем конфиг /usr/local/etc/smb.conf:
#
[global]
        workgroup = SRO
        netbios name = SERVER
        server string = SAMBA Domain Controller For SRO


        # Скрипт добавления пользователя
        add user script = /usr/local/etc/samba/add_user_script.sh "%u"
        # Скрипт удаления пользователя
        delete user script = /usr/sbin/pw userdel "%u" -r
        # Скрипт переименованя пользователя
        # (следующие две строки - на самом деле одна. невлезает ..)
        rename user script =
                 /usr/local/etc/samba/rename_user_script.sh "%uold" "%unew"
        # Скрипт перезапуска самбы (Вообще, в man smb.conf, предлагается
        # ребутить или класть всю машину. Перебор, по моему... Хотя -
        # у меня это не работает. Такчто - пофиг.)
        shutdown script = /usr/local/etc/samba/shutdown_script.sh
        # Скрипт добавления новой группы
        add group script = /usr/sbin/pw groupadd "%g"
        # Скрипт удаления группы
        delete group script = /usr/sbin/pw groupdel "%g"
        # Скрипт добавления пользователя в группу
        # (следующие две строки - это одна, в ширину сайта на вписывается)
        add user to group script =
                  /usr/local/etc/samba/add_user_to_group_script.sh "%g" "%u"
        # Скрипт установки первичной группы для пользователя
        set primary group script = /usr/sbin/pw usermod "%u" -g "%g"
        # Скрипт удаления пользователя из группы
        # (следующие две строки - это одна, в ширину сайта на вписывается)
        delete user from group script =
                  /usr/local/etc/samba/delete_user_from_group_script.sh "%g" "%u"
        # Скрпит для добавления аккаунта компьютера
        add machine script = /usr/local/etc/samba/add_machine_script.sh "%u"
        # Скрипт проверки пароля (чтобы не пихали 12345 и прочее. Должен вернуть 0
        # если пароль нормальный, и что-то другое - если нет. Пароль передаётся
        # на стандартный ввод скрпита)
        check password script = /path/to/password/check/script.sh
        # Скрпит - чё елать при получении сообщений по winpopup (из man`a)
        message command = /bin/mail -s 'message from %f on %m' root < %s; rm %s

        # added by lissyara 2009-09-04 in 08:50
        passdb backend = tdbsam:/usr/local/etc/samba/passdb.tdb
        # added by lissyara 2009-09-04 in 09:36
        display charset         = koi8-r
        unix charset            = koi8-r
        dos charset             = koi8-r


        # Где лежат скрпиты, выполняемые доменными компами при загрузке
        #logon script = scripts\logon.bat
        logon script = net_map.bat
        domain logons = Yes
        os level = 85
        preferred master = Yes
        domain master = Yes
        idmap uid = 5000-9999
        idmap gid = 5000-9999

        # Кого не пускать
        # в итоге она у меня раскомментирована, но настройку
        # я делал с закомменченой.
        # настоятельно рекомендую расккомментить, после настройки и введения
        # самой машины в домен
        #invalid users = root


        #interfaces = 192.168.120.253/24
        security = user
        # Включаем поддержку WINS
        wins support = yes
        # Указываем виндовый WINS из другого домена - на время, пока он ещё жив
#       wins server = 192.168.0.251
        dns proxy = yes
        time server = True

        # Перемещаемые профили (если не указать эти пункты пустыми -
        # профили у пользователей будут перемещаемые)
#        logon path = \\lissyara\profiles\%U
        logon path =
        logon home =
        template homedir =

        # логгинг
#        log level = 10 passdb:10 auth:10 winbind:10
#       log level = 6
        log file = /var/log/samba/log.%m

        # added by lissyara 2009-09-04 in 16:22 MSK
        admin users     = "@SRO\Domain Admins"


[IPC$]
        path = /tmp


[print$]
        comment = Printer Drivers Share
        path = /usr/home/samba/drivers

[netlogon]
        path = /nethome/samba/netlogon
        read only = no
        browseable = yes

[profiles]
        path = /nethome/samba/profiles
        browseable = yes
        create mask = 0600
        directory mask = 0700
        read only = no
        guest ok = yes

   Набор шар - опционален, обязательны лишь первые три. Далее - рисуем описанные в конфиге скрипты по управлению пользователями и группами, но, не забываем добавить в /etc/rc.conf такую строку:
samba_enable="YES"

   Скрипт добавления пользователя для компьютера добавляемого в домен - add_machine_script.sh:
#!/bin/sh

# скрипт добавления машины
/usr/sbin/pw useradd "$1" -d /dev/null \
        -s /sbin/nologin -L "russian" -m \
        -g computers -c "computer_account"

# отладка
echo "added komp '$@' in `date +%Y-%m-%d` `date +%H:%M:%S`" \
            >> /tmp/`basename $0`.log

   Скрипт добавления пользователя - add_user_script.sh:
#!/bin/sh

# скрипт добавления пользователей
#/usr/sbin/pw useradd "$1" -d /usr/home/samba/profiles/"$1" \
#       -s /sbin/nologin -L "russian" -m -g ntusers -c "$1"
/usr/sbin/pw useradd "$1" -d /dev/null \
        -s /sbin/nologin -L "russian" -m -g ntusers -c "$1"
# отладка
echo "added user '$@' in `date +%Y-%m-%d` `date +%H:%M:%S`" \
      >> /tmp/`basename $0`.log

   Добавление пользователя в группу - add_user_to_group_script.sh:
#!/bin/sh

/usr/sbin/pw groupmod "$1" -m "$2"

# отладка
echo "added user '$2' to group '$1' ($@) in `date +%Y-%m-%d` \
            `date +%H:%M:%S`" >> /tmp/`basename $0`.log

   Скрипт для удаления пользователя из группы - delete_user_from_group_script.sh:
#!/bin/sh

/usr/sbin/pw groupmod $1 -d $2


echo "deleted user '$2' from group '$1' ($@) in `date +%Y-%m-%d` \
    `date +%H:%M:%S`" >> /tmp/`basename $0`.log

   Скрипт переименовывания пользователя - rename_user_script.sh:
#!/bin/sh

/usr/sbin/pw usermod $1 -l $2

echo "renamed user '$1' --> '$2' ($@) in `date +%Y-%m-%d` \
      `date +%H:%M:%S`" >> /tmp/`basename $0`.log

   Скрипт перезапуска сервиса - shutdown_script.sh:
#!/bin/sh

# Перезапукаем самбу (в бакгроунде - обязательно!)
/usr/local/etc/rc.d/samba restart &

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

   Написанные скрипты делаем исполняемыми и запускаем самбу:
server$ chmod +x /usr/local/etc/samba/*.sh
server$ /usr/local/etc/rc.d/samba restart

   Заводим пользователя root в самбе (в принципе, опять же, не обязательно - можно дальше действовать от административного пользователя, котрый и будет позднее постоянно использоваться. Но - на этом этапе так будет прощще):
server$ smbpasswd -a root
New SMB password:
Retype new SMB password:
Added user root.

   Рисуем скрипт добавления нужных системных групп, и маппинга виндовых групп на системные:
#!/bin/sh
#!/bin/bash
#### Keep this as a shell script for future re-use

pw groupadd ntadmins
pw groupadd ntusers
pw groupadd computers


net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=d
net groupmap add ntgroup="Domain Users"  unixgroup=ntusers  rid=513 type=d
net groupmap add ntgroup="Domain Guests" unixgroup=nobody rid=514 type=d
net groupmap add ntgroup="Domain Computers" unixgroup=computers type=d

   Как вы его обзовёте и куда положите - ваше дело. Использоваться он будет лишь один раз. Запускаем:
server$ sh samba_group.sh
Successfully added group Domain Admins to the mapping db as a domain group
Successfully added group Domain Users to the mapping db as a domain group
Successfully added group Domain Guests to the mapping db as a domain group
No rid or sid specified, choosing a RID
Got RID 3007
Successfully added group Domain Computers to the mapping db as a domain group

   Добавляем в администраторов будущего домена нужных пользователей (они, разуммется должны уже быть в системе. Я добавляю рута и nik - человек который будет на том конце провода заниматься машинками с виндой):
pw groupmod ntadmins -m root
pw groupmod ntadmins -m nik
server$ id nik
uid=1001(nik) gid=0(wheel) groups=0(wheel),1982(ntadmins)
server$   

   Зачем рута? Просто все кому делал первым делом пытались залезть на виндовые машины и порулить доменом именно им. (с учётом что я не описываю как заводил того же nik в самбе - так же как и рута - вполне наверно логично...)
   Вводим контроллер домена в домен:
server$ net join server
Password:
Joined domain SRO.
server$  

   Всё. Для верности можно рестартануть самбу и пытаться ввести в домен машины/залогиниться на них юзерами (опять же - если дословно по статье сделано - то только root получиться. ибо в самбе пока больше нет других пользователей).

   Оговорки и примечания. В общем - повторяюсь то же что и к предыдущей статье - при удалении пользователя из самбы - грохается системная учётка. Делайте проверку, или юзайте отдельную учётку. При наличии в системе учётки совпадающей по логину с создаваемой - новйо не создаётся - используется существующая.
   Сразу отвечаю на впорос - почему не самба 3.3 а 3.0. В 3.3 скрипты, по какой-то причине, выполняются от обычного пользователя, который в винде галки ставит - nik в данном случае. Естессно они не работают. Либо sudo мутить, и ловить остальные глюки, либо - использовать проверенное решение. Я предпочёл последнее.
   Для администрирования качаем утилиты отсюда. Если у кого-то не качается - идите в старую статью - там есть другой линк.

   Про LDAP - знаю, но ненавижу за убогий синтаксис.



размещено: 2009-09-27,
последнее обновление: 2009-09-27,
автор: lissyara


Shf, 2009-09-28 в 8:53:33

Как обычно кратко, локанично и по теме! Молодец, Лисяра!

FOX, 2009-09-29 в 0:19:24

Здравствуйте, дамы и господа!
Лис в своём репертуаре, как всегда всё классно, уважаю данного человека, низкий мой поклон! Но вот с LDAP зря так, я согласен синтаксис жуткий, но есть куча приятных моментов а именно можно в две и больше машины сделать, привязать доп. Сервисы типа DNS, DHCP, проксню ещё что не будить, потом легко бекапить только базу ЛДАПА и конфиги и с пол пинка развернуть можно новый сервер! Ладно хватит критики, Лис молодец но, вот если бы он без ЛДАПА контроллер настроил в две машины для стабильной работы был бы ему бонус! Актуально нынче это!
Рекомендую заменить эту часть конфа на вод так:
# делаем шару на перемещаемые профили
[Profiles]
   create mask = 0600
   directory mask = 0700
   read only = No
   path = /home/samba/profiles
   writeable = yes
   browseable = yes
   profile acls = Yes
   locking = no
   map hidden = Yes
   hide files = /desktop.ini/Thumbs.db/
   map system = Yes
   hide dot files = No
   csc policy = disable # эта строчка необходима чтобы отключить автономное кеширование
Спасибо за внимание! )))

alex, 2009-09-29 в 0:23:17

Скрипт добавления пользователя (add_user_script.sh) из данной статьи успешно добавит только unix пользователя! Нужно ли добавлять пользователя в базу samba чем-то вроде "pdbedit -a -u nik" или "smbpasswd -a nik" ?

lissyara, 2009-09-29 в 8:50:48

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

adre, 2009-10-01 в 9:29:32

Вот если б еще намутить скриптиг чтобы учетки из AD перетащить в samba вообще волшебно было, а то мега проблема: учетки у АД перемещаемые, подмена нифига не дает, винда лепит новые со всякой хренью в придачу =(

*, 2009-10-02 в 23:32:39

О ВЕЛИКИЙ ЛИС
ну сколько можно собирать велосипед
НЕ СТОИТ ОНО ТОГО ПРОЩЕ ПОТРАТИТЬ 20к рублей и звять вин срв стандарт
нежели мутить велосипед который по функционалу и удобству я вно не дотягивает
а про ЛДАП ЗРЯ ТЫ ТАК ОТЛИЧНЫЙ ПРОТОКОЛ

*, 2009-10-03 в 10:59:39

Великий не вижу упоминаний про КЕРБЕРОС

lissyara, 2009-10-03 в 20:58:08

Мда...
Видимо, вы никогда не сталкивались с экономными работадателями.
Да и врагам платить - не вижу смысла. для конторы из 20 человек - данного решения хватит со свистом.

desruptor, 2009-10-04 в 21:54:33

Машинка была с одной сетевухой, если я правильно понял? :)

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

bind inteface only = yes (слушать только указанные адреса)
interface = eth0 (что именно слушать)

Спасибо за статью

Junior, 2009-10-06 в 11:56:35

А зачем для конторы из 20 человек поднимать домен?
Для небольших организаций всегда хватало обычной одноранговой сети.

*, 2009-10-06 в 14:04:37

домен имеет смысл когда колво пользователей от 40 и выше

comatoz, 2009-10-06 в 18:17:43

что-то при цене 20 т.р. за виндовс стандарт забыли про лицензии на подключения

greg_b, 2009-10-07 в 8:19:27

Ну да. При 20 юзерах - надо купить еще 15 лицензий на коннект и 20 на работу ПО MicroSoft :[

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

lissyara - что без LDAP - ну тут конечно проще в настройках. Зато при LDAP в одной банке почтарь на postfix/exim, внутрисетевой чат на jabber2/openfire/домен/squid с авторизацией в домене в общем ляпота. Компа типа p4-1024/500 Raid-1/2 Lan - прекрасно тянут в таком режиме до 40 юзеров с файлопомойкой. Если нужна 1С 7.7 - тут чуть посложнее - дурацкая блокировка файлов, но тоже работает ничего.

Фигня эта ваша самба, 2009-10-07 в 21:22:51

Максимум на что годится это файлопомойка.

*, 2009-10-12 в 16:34:11

 по собстевенному опыту скажу что в офисе на 20 человек НАХУЙ не нужен никакой домен
если нужна групповая работа ставь ibm lotus domino или eGroup ware

comatoz, 2009-10-06 в 18:17:43

что-то при цене 20 т.р. за виндовс стандарт забыли про лицензии на подключения

конкретней распишите

Comatoz, 2009-10-12 в 16:41:07

посчитайте стоимость легального использования ibm lotus domino или настройку под конкретный офис eGroup ware (это конечно предпочтительно, но спецов в разы меньше).
и освежите модель лицензирования микрософт, информации навалом.

greg_b, 2009-10-12 в 16:55:19

цена на нормальный ibm lotus domino, включая нормальную настройку, сопоставима с ценой w2k3s+20CAL, вместо eGroup ware можно использовать openGroupware - хорошая замена MS Echange+SharePoint, при навертывание на FreeBSD-шный домен со LDAP-ом в кучке - ваабще вроде как прелесть получается. Вот сижу кручу конфиги, смотрю на это чудо, так как в конторе есть централизованный домен на w2k3 - выкинуть его не удастцо - придеться по лдапу тока забирать user/login, а остальное привернуть на стороне фрюхи.
P.S. - дико жду когда появиться удобоваримый prebuild Samba 4.0

comatoz, 2009-10-12 в 22:31:59

Считать надо совокупную стоимость владения, и считать не с точки зрения админа, а с точки зрения бизнеса - это нужно бизнесу, он платит, и для него один показатель - бабло.
Поставив лотус никуда не денешься от расшаренных файлов и принтеров. Виндовс админы стоят в разы дешевле лотусных и тем более разных ...ware'ских (этих так вообще не встречал, не будем путать умение ковыряться в конфигах с умением настроить софт для конкретного офиса).
Файл-сервер из фри - замечательный, DC - можно в небольшом офисе, для большого офиса в настоящий момент - винде альтернативы не вижу, слишком много софта на винду завязано и админов знающих другое ПО
Самбу 4-ой версии я, как админ, уже не дождался...

xmaster, 2009-10-29 в 16:18:56

вопрос конечно дурацкий но всё же актуальный, openGroupware русифицирован  ??  я умаю нет  , а меня 95% пользователе не рубят в английском , или  у того кто подал идею про openGroupware  ситуация другая ?

*, 2009-11-02 в 14:22:45

мда
для ваших генеральных 20 000 рублей за лицензию вин стандарт это вообще не деньги
а тот гемор который вы поимеете я думаю стоит намного дороже 20к

greg_b, 2009-11-02 в 14:34:43

* - и много ты таких генеральных видел 20-ками раскидывающихся? Учти что штраф и срок свалят на твои руки. А не на генерального если с лицензированием накосячишь.  

greg_b, 2009-11-02 в 14:37:05

xmaster - open не очень понравился, развернул на тест zimbra (правда на дяде федоре) но прикольно, народ аж опешил - вроде ж говорит exchange, только окно логина другое...  

Comatoz, 2009-11-02 в 14:41:05

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

*, 2009-11-07 в 23:20:02

каждому свое
можно и на танке на работу при желании ездить только это уже идиотизм ;))
доказывать никому ничего не буду тот кто живет в москве понимают что 20к для московской компании не деньги (повторяюсь)))
микрософт же рекомнедут доменную инфраструктуру от 40-50 польщзоватлей тк при меньше колве можно и в группе жить спокойно)))

lissyara, 2009-11-08 в 10:04:18

А вы упрямый товарисч. Тока похоже не видели обычных московских компаний.
20k - для всех деньги. если для вас это не так - покупайте винду на работу за свои.
Примерно такие ответы я получал на предложения купить лицензию =)

Seltsam, 2009-11-11 в 10:32:06

Соглашусь с Лисом - е надо забывать про мелкие конторы, где компов только под 1С штук 5-10 имеется, и конторка торгует всякими побрякушками - здесь 20к+ остальные лицензии для гендира деньги полюбому. Сам работаю в средне крупной конторе - тоже с трудом выбиваю эти бля сраные (сорри!) 20к, хотя денег есть гораздо побольше.
Могу добавить только одно - у виндовых доменов много других вкусностей, типа груповых политик и т.п., и файловый сервер на винде работает гораздо быстрее, чем на самбе. это я про скорость копирования файлов, особенно большого размера. НО, опять таки - если всё это не надо или не критично, то реализация на самбе кого-нить вполне устроит. Надо смотреть на ситуацию от потребностей... Вот люди и придумали как немного отказаться от виндовса =)

greg_b, 2009-11-11 в 11:24:11

Seltsam - можно накладывать политики через папку netlogon - кладешь туда файлик ntconfig.pol с виндовой политикой (накручиваете виндовым poledit)- я так еще с nt4/w2k делал, ну и в политиках не забываете про себя любимого. А вообще дико жду Samba 4 - так будет на уровне w2k3s (обещают очень близко, пока альфы ковыряю)  

Seltsam, 2009-11-11 в 12:22:23

to greg_b - я к сожалению ещё не дошёл до такого уровня =(, не позволяет режим работы "универсального" админа (+ поддержка всё более тупеющих юзерей и извращённые задания руководства).
приму к сведению! СПАСИБО!
...нада больше читать... (вывод)
да! вопросик один забыл - а в 3-ей самбе можно организовать междоменные доверительные отношения? или тоже ждать 4-ю?

greg_b, 2009-11-12 в 8:44:57

Seltsam - не пробовал, с бо-о-о-о-о-о-льшими оговорками что-то возможно.

adre, 2009-11-19 в 10:35:23

Гоблины опять про велик вспонили, наверно у них в детсве только урал был или небыло велика вообще, так страдают по несчастному =)), но теперь они работают на большой работе с большими деньгами и заплывают от безделия жирком...
---------------------------------------------------
хотел давно написать: скрипты логина надо в cp1251 складывать или анси, а то окна прокатывают иногда с подлючением сетивых дисков и прочих скриптов... мелочь а приятно, руский буква тогда видна, когдя понаделают рус.папок

Iura, 2012-02-05 в 18:22:12

Почитав разные статьи в инете я наконец-таки смог поднять домен на Самбе, но больше всего мне помогла статья SAMBA AS PDC. <Тут я все сразу понял

Комбат, 2012-04-26 в 4:21:34

Iura, http://artmader.com/howto/linux/samba-pdc-configuration/#more-1081 эх... афтар



 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0589 секунд
Из них PHP: 43%; SQL: 57%; Число SQL-запросов: 77 шт.
Исходный размер: 64628; Сжатая: 15687