вторник, 6 июля 2010 г.

Контроллер домена на базе Samba 3

Пошаговая инструкция по установке и настройке primary domain controller на базе samba и centos.

Предположим, что сервер с Centos у нас уже есть. Достаточно самой минимальной комплектации. Вообще я устанавливаю Centos с помощью netinstall, убрав абсолютно все галочки в разделе "выбор пакетов для установки". В таком случае ставится около двухсот тридцати пакетов. После этого вычищаю еще несколько, связанных с графической системой X (yum erase $(rpm -qa|grep libX)) и т.д. Сразу же ставлю vim-enhanced, man и полностью обновляю, подключив репозитории Centos Plus и Extras.

Начнем.
# yum install samba

Установится samba-сервер и всё необходимое.
Большинство руководств, посвященных установке samba-сервера на Centos содержат указание отключить selinux. Я этого делать не буду. Более того, selinux "из коробки" - это одна из причин, по которой я использую Centos.

Проверяем политики selinux:
# getsebool -a|grep samba

Из появившегося списка нам понадобятся две политики, активируем их:
# setsebool -P samba_domain_controller on
# setsebool -P samba_enable_home_dirs on

Теперь приступаем непосредственно к настройке samba. Для этого в файл /etc/samba/smb.conf внесем следующие изменения (крайне рекомендуется ознакомиться с man-страницей smb.conf):
; имя домена 
workgroup = oper777
; имя сервера
server string = pdc

; для контролера домена необходимо параметр security поставить в user.
security = user
; пароли будут храниться в базе tdbsam, это, конечно, не ldap, но и не простой текстовый файл
passdb backend = tdbsam

domain master = yes
domain logons = yes
local master = yes
os level = 33
preferred master = auto

; далее команды для различных действий. Используемые переменные можно посмотреть по ссылке
; http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#id2532525

logon script = %u.bat
logon path = \\%L\Profiles\%U

add user script = /usr/sbin/useradd %u -n -g nt_users
add group script = /usr/sbin/groupadd %g
add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false %u
delete user script = /usr/sbin/userdel %u
delete user from group script = /usr/sbin/userdel %u %g
delete group script = /usr/sbin/groupdel %g

; если в сети нет DNS-сервера, то windows-машины могут определять имена
; друг друга по протоколу WINS. При необходимости можно назначить наш pdc
; wins-сервером:
wins support = yes

; не забываем про кодировки
dos charset = cp866
unix charset = utf8

; Далее нужно объявить два общих каталога.
; В каталог netlogon можно помещать bat-файлы с именем пользователя
; (или с тем именем, которое задано параметром logon script). Эти
; скрипты будут принудительно запускаться на клиентских машинах.
[netlogon]
path = /var/lib/samba/netlogon
read only = yes
guest ok = yes
browseable = no
; Во втором будут храниться перемещаемые профили пользователей
[Profiles]
path = /var/lib/samba/profiles
readonly = no
create mask = 0600
directory mask = 0700

Для проверки правильности конфигурационного файла можно воспользоваться командой
# testparm

Запускаем samba и добавляем в автозапуск:
# service smb start
# chkconfig smb on

Самое время создать доменные группы пользователей
# groupadd nt_admins
# groupadd nt_users
# groupadd nt_computers

Можно создать групп столько, сколько нужно для разделения доступа пользователей.
Теперь необходимо создать указанные в конфиге samba каталоги:
# mkdir -p /var/lib/samba/{netlogon,profiles}

Нужно сообщить selinux, что к этим каталогам должен быть общий доступ:
# chcon -t samba_share_t /var/lib/samba/profiles
# chcon -t samba_share_t /var/lib/samba/netlogon

Эти же каталоги должны быть доступными на запись для пользователей домена.
# chown root:nt_users /var/lib/samba/{netlogon,profiles}
# chmod g+w /var/lib/samba/{netlogon,profiles}

Следующим шагом будет задание соответствия unix-групп группам из домена Windows. В домене NT есть несколько групп/пользователей со стандартными значениями. Их можно посмотреть в таблице:http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/groupmapping.html#WKURIDS
# net groupmap add ntgroup="Domain Admins" unixgroup=nt_admins rid=512 type=d
# net groupmap add ntgroup="Domain Computers" unixgroup=nt_computers rid=515 type=d
# net groupmap add ntgroup="Domain Users" unixgroup=nt_users rid=513 type=d
# net groupmap add ntgroup="Domain Guests" unixgroup=nobody rid=514 type=d

Для задания собственной группы команда будет без указания параметра rid (relative identifiers), например
# net groupmap add ntgroup="Designers" unixgroup=nt_designers type=d

Параметр type=d указывает, что эта группа - доменная.
Соответствия групп можно посмотреть командой
# net groupmap list

Теперь создадим первого пользователя:
# useradd -G nt_admins,nt_users -d /nohome -s /bin/false administrator
# passwd -l administrator

Добавим его в samba и зададим пароль одной командой:
# smbpasswd -a administrator

Добавляя других пользователей, наряду с основной группой, необходимо добавлять их в группу nt_users.
Пользуясь паролем нового администратора, добавим наш pdc в собственный же домен:
# net join oper777 -U administrator

Чтобы клиенты могли начать подключаться к серверу, необходимо открыть определенные порты в межсетевом экране. Для протокола wins используется порт 137 (как tcp, так и udp), для работы samba нужны udp:137,138, tcp:139 (http://support.microsoft.com/kb/150543/ru)
# iptables -I RH-Firewall-1-INPUT -s 192.168.2.0/24 -p udp --dport 137 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT -s 192.168.2.0/24 -p udp --dport 138 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT -s 192.168.2.0/24 -p tcp --dport 137 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT -s 192.168.2.0/24 -p tcp --dport 139 -j ACCEPT
# service iptables save

Сервер готов.

Комментариев нет:

Отправить комментарий