SAMBA PDC - установка, настройка, управление

введение

В статье рассматривается создание и настройка первичного контроллера Windows-домена с несколькими расшаренными ресурсами и общим принтером. Администрирование домена будет осуществляться удаленно, через утилиту net. Приведенные ниже действия выполнялись на Slackware Linux 11, только с использованием пакетов, входящих в поставку дистрибутива. С небольшими отличиями это руководство может быть использовано на любом другом дистрибутиве.

Список ресурсов будущего сервера:

- docs – документация;

- distrib - дистрибутивы ПО;

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

- clients - информация о клиентах (доступ только для определенной группы).

Пользователи, принадлежащие группе администраторов, будут иметь полный доступ к содержимому этих ресурсов. Обычные пользователи смогут только читать опубликованные на сервере файлы. Ресурс clients будет доступен только для пользователей, которые входят в группу "Менеджеры". При входе в домен всем пользователям будут корретироваться часы и монтироваться сетевые диски. Для обычных пользователей набор монтируемых ресурсов будет отличаться от набора для менеджеров. В нашем примере у них будет отстуствовать сетевой диск clients.

установка

Собственно, устанавливаем:

# installpkg samba-3.0.23c-i486-1.tgz

Делаем загрузочный скрипт исполняемым:

# chmod a+x /etc/rc.d/rc.samba

Создаем файл с конфигурацией:

# cp /etc/samba/smb.conf-sample /etc/samba/smb.conf

Наполняем следующим содержимым:

[global]
workgroup = ASU
netbios name = SERVER
server string = ASU SERVER

passdb backend = tdbsam

log level = 1
log file = /var/log/samba/workstations/%m.log
max log size = 50

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/bin/gpasswd -a %u %g
delete user from group script = /usr/bin/gpasswd -d %u %g

add machine script = /usr/sbin/useradd -g nt_workstations -s /bin/false -d /dev/null %u
set primary group script = /usr/sbin/usermod -g %g %u

logon path =
logon drive =
logon home =
logon script = %G.bat
domain logons = yes

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

hosts allow = 192.168. 127.

time server = yes

preferred master = yes
domain master = yes
local master = yes
os level = 255

unix charset = utf8
dos charset = cp1251
display charset = cp1251

load printers = yes
printing = cups
printcap name = cups
wins support = yes

[printers]
comment = All printers
path = /var/spool/samba
public = yes
printable = yes
guest ok = yes

[homes]
comment = Home Directories
browseable = no
writable = yes

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


Раскоментируйте строку ниже, если хотите чтобы пользователи на своих ПК были членами группы "Опытные пользователи" (сработает после 2-го входа пользователя в домен):

#root preexec = net rpc group addmem "Опытные пользователи" %u -S %m -Ubambucha%123 &

[incoming]
path = /srv/samba/incoming
writable = yes
create mask = 0775
directory mask = 0775
force group = users

[docs]
path = /srv/samba/docs
write list = @nt_admins

[distrib]
path = /srv/samba/distrib
write list = @nt_admins

[clients]
path = /srv/samba/clients
writable = yes
valid users = @managers


Создадим указанные директории

# mkdir -p /srv/samba/{netlogon,incoming,docs,distrib,clients}

В директории /srv/netlogon необходимо создать два файла nt_managers.bat и users.bat. Эти файлы будут выполняться одноименными группами пользователей при входе в домен. В них содержаться команды для монтирования сетевых дисков и синхронизации часов. В примере, между ними одно различие: обычным пользователям не будет монтироваться сетевой диск на ресурс clients.

# cat /srv/samba/netlogon/users.bat
net time \\SERVER /set /yes
net use x: \\SERVER\incoming
net use y: \\SERVER\docs
net use z: \\SERVER\distrib

# cat /srv/samba/netlogon/nt_managers.bat
net time \\SERVER /set /yes
net use x: \\SERVER\incoming
net use y: \\SERVER\docs
net use z: \\SERVER\distrib
net use w: \\SERVER\clients


Внимание: очень важно чтобы файлы были в Window'ой кодировке с DOS'овским окончанием строки (<CR><LF>). Самый лучший способ - создать их в «Блокноте» и затем закачть по FTP на сервер как бинарные данные (хотя можно открыть в vim'e сразу с преобразованием):

vim --cmd "edit ++enc=cp1251 ++ff=dos" -- /srv/samba/netlogon/nt_managers.bat)

настройка

Для директорий incoming и clients выставим другие права. Все пользователи домена должны иметь права на чтение/запись в директорию incoming. Для этого сменим группу этой директории на users и дадим членам этой группы права на запись.

# chgrp -R users /srv/samba/incoming
# chmod -R g+w /srv/samba/incoming


В директорию clients должны иметь доступ только менеджеры. Ограничение на доступ выставлены в конфигурационном файле выше (строка valid users = @managers). Все члены этой группы также должны иметь права на запись. Для этого поступим так же как и с incoming. Сменим группу на nt_managers и дадим ей права на запись:

# chgrp -R nt_managers /srv/samba/clients
# chmod -R g+w /srv/samba/clients


Для того чтобы в директориях incoming и clients пользователи могли править файлы и каталоги которые были созданы другими – в конфигурационном файле добавлены строки с указанием маски для создаваемых файлов и каталогов (create mask = 0775, directory mask = 0775).

Создадим samba-пользователя root, пароль 123:

# smbpasswd -a root

Проверим чтобы в конфигурационном файле не было ошибок:

# testparm

Запускаем:

# /etc/rc.d/rc.samba start

Проверим, что демон samba успешно стартовал:

# ps ax | grep mbd
1778 ?Ss 0:00 /usr/sbin/smbd -D
1785 ?Ss 0:00 /usr/sbin/nmbd -D
1789 ?S0:00 /usr/sbin/smbd -D
6899 pts/2R+ 0:00 grep mbd


Пробуем подключиться и посмотреть на доступные сетевые ресурсы:

# smbclient -L localhost -Uroot%123

создание групп

Переходим к созданию групп пользователей. Cсоздадим необходимые Linux-группы, чтобы потом сопоставить их с аналогичными группами Windows. В Windows по умолчанию прописаны следующие основные группы: Guests, Users, Administrators.

Windows-группе Guests можно сопоставить Linux-группу nobody, Users - users, для Administrators - nt_admins. Заодно создадим отдельную группу для менеджеров nt_manager.

Создаем Linux группы:

# groupadd nt_workstations
# groupadd nt_admins
# groupadd nt_managers


Каждой Windows-группе должна быть сопоставлена соответствующая Linux-группа. Изначально никаких сопоставлений не создано.

Сопоставляем созданные группы.

Гости:

# net groupmap add rid=514 ntgroup="Domain Guests" unixgroup=nobody

Пользователи:

# net groupmap add rid=513 ntgroup="Domain Users" unixgroup=users

Windows-станции:

# net groupmap add rid=515 ntgroup="Domain Computers" unixgroup=nt_workstations

Администраторы:

# net groupmap add rid=512 ntgroup="Domain Admins" unixgroup=nt_admins

Менеджеры:

# net groupmap add ntgroup="Managers" unixgroup=nt_managers

Число после rid= - это числовой идентификатор основных Windows-групп.

Таблица RID для основных Windows-групп:

- Domain Admins - 512;

- Domain Users - 513;

- Domain Guests - 514;

- Domain Computers - 515;

Создадим пользователя bambucha, который будет администратором домена (первичная группа - nt_admins)

# useradd -m -c "Admin" -G nt_admins -g users bambucha

Добавим пользователя в БД SAMBA:

#smbpasswd -a bambucha

Как только создан пользователь-администратор, дальше, для управления доменом, в основном, будет использоваться утилита net. С ее помощью производятся все административные действия.
Проверим, добавился ли он в группу Domain Admins:

# net rpc group members "Domain Admins" -Ubambucha%123

ASU\bambucha


По умолчанию у группы Domain Admins нет никаких прав кроме назначать и удалять привелегии другим. Дадим группе Domain Admins все права

# net rpc rights grant "Domain Admins" SeMachineAccountPrivilege SeTakeOwnershipPrivilege SeBackupPrivilege SeRestorePrivilege
SeRemoteShutdownPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege -Ubambucha%123


ввод в домен

Теперь можем ввести наш сервер в его же домен :)

# net rpc join -Ubambucha%123
Joined domain ASU.


Проверим:

# net rpc testjoin
Join to 'ASU' is OK



Посмотрим на общую картину домена

# net rpc info -Ubambucha%123
Domain Name: ASU
Domain SID: S-1-5-21-1896400801-767198480-4227753087
Sequence number: 1171055599
Num users: 1
Num domain groups: 5
Num local groups: 0


добавление пользователей

Добавим в БД SAMBA все рабочие станции. По умолчанию они будут принадлежать группе Domain Computers.

# net rpc user add comp1$ -U bambucha%123
# net rpc user add comp2$ -U bambucha%123
# net rpc user add comp3$ -U bambucha%123


Добавим в БД SAMBA всех пользователей. По умолчанию они будут принадлежать группе Domain Users.

# net rpc user add user1 -U bambucha%123
# net rpc user add user2 -U bambucha%123
# net rpc user add user3 -U bambucha%123


Как было оговорено выше, в нашем домене будут две группы пользователей - обычные пользователи и менеджеры. Только менеджеры будут иметь доступ к ресурсу clients. Сделаем менеджером пользователя user3. Для этого пользователю user3 необходимо сменить первичную группу с users на nt_managers. Почему бы просто не добавить его в группу nt_managers? Можно и так, но тогда невозможно будет сделать менеджерам отличные от обычных пользователей сетевые диски. Дело в том, что для монтирования дисков SAMBA вызывает bat-файл с названием именно первичной группы пользователя. Как уже было сказано, по умолчанию первичная группа всех создаваемых пользователей это users. Следовательно, всем будут монтироваться одинаковые наборы дисков. Из-за этого не нужно добавлять пользователя в другую группу, нужно менять первичную. Сменим первичную группу пользователя user3 на nt_managers, а потом пропишем его в обычные пользователи.

# usermod -g nt_managers user3
# net rpc group addmem "Domain Users" user3 -U bambucha%123


Проверим, сейчас у user3 первичная группа должна быть nt_managers, и дополнительная users:

# groups user3
user3 : nt_managers users


Пользователям нужно присвоить начальные пароли:

# smbpasswd user1
# smbpasswd user2
# smbpasswd user3


проверка

Проверим:

1) список всех групп:

# net rpc group -U bambucha%123
Domain Users
Domain Computers
Domain Admins
Domain Guests
Managers


2) список всех пользователей:

# net rpc user -U bambucha%123
bambucha
user1
user2
user3
comp1$
comp2$
comp3$


3) список администраторов (группа Domain Admins):

# net rpc group members "Domain Admins" -U bambucha%123
ASU\bambucha


4) список обычных пользователей (группа Domain Users):

# net rpc group members "Domain Users" -U bambucha%123
ASU\user1
ASU\user2
ASU\user3


5) список пользователей-менеджеров (группа Managers):

# net rpc group members "Managers" -U bambucha%123
ASU\user3


6) список компьютеров (группа Domain Computers):

# net rpc group members "Domain Computers" -U bambucha%123
ASU\comp1$
ASU\comp2$
ASU\comp3$


Если какому то пользователю нужны дополнительные права, позже его можно добавить в локальную группу "Опытные пользователи" следующей коммандой (также эту комманду, для каждого пользователя можно вызывать автоматически, см. smb.conf):

# net rpc group addmem "Опытные пользователи" "ASU\user_name" -S "user_comp" -Ubambucha%123

установка принтера

Удаляем старый CUPS:

# removepkg cups

Копируем из директории Testing новый CUPS и устанавливаем:

# installpkg cups-1.2.4-i486-1.tgz

Если планируется подключать принтер HP, в поствке Slackware есть набор драйверов для этих принтеров (находиться в Testing). Устанавливаем:

# installpkg hplip-1.6.9-i486-1.tgz

Заменяем старый конфигурационный файл новым:

# mv /etc/cups/cupsd.conf.new /etc/cups/cupsd.conf

То же самое со стартовым скриптом, и делаем его исполняемым:

# mv /etc/rc.d/rc.cups.new /etc/rc.d/rc.cups
# chmod a+x /etc/rc.d/rc.cups


Открываем файл /etc/cups/cupsd.conf, ищем блоки:

<Location />
...
</Location>

<Location /admin>
...
</Location>

<Location /admin/conf>
...
</Location>



В каждый из этих блоков добавляем строку, разрешающую доступ к веб-интерфейсу CUPS с вашего ПК (в данном примере c ПК 192.168.226.1):
Allow From 192.168.226.1

Ищем строку:

Listen localhost:631

и меняем на

Listen *:631

то есть слушать соединения на всех интерфейсах.

Раздел /var должен быть смонтирован с поддержкой ACL. Для этого в файле /etc/fstab нужно найти строку с var-разделом, например:

/dev/sda6/var ext3defaults 1 2

и добавить при монтировании поддержку ACL:

/dev/sda6/var ext3defaults,acl 1 2

Перезагружаем ПК чтобы смонтировать /var с новой опцией.
В браузере открываем веб-интерфейс CUPSи по адресу http://192.168.226.1:631 (адрес компьютера на котором установлен CUPS-сервер) Дальше все должно быть просто. Переходим на вкладку Administration, жмем кнопку Add printer, вводим название будущего принтера, комментарий и краткие сведения где он физически находиться. Далее жмем Continue, выбираем к какому порту принтер подключен (для примера выбрал LPT), опять жмем Continue, выбираем производителя, марку принтера (если производитель отсутствует - ищем драйвер в интернете и загружаем с помощью кнопки Browse) и жмем кнопку Add printer. Все. Принтер установлен. Сейчас можно перейти на вкладку Printers, найти там установленный принтер и распечатать тестовую страницу (кнопка Print Test Page).

Перезагружаем samba.

Заходим в Windows (под Администратором или членом группы Domain Admins и устанавливаем принтер с samba. Все, теперь можно пробовать распечатать тестовую страницу из Windows.



CoderInside, впервые опубликовано на Воронежском Linux-портале


Сетевые решения. Статья была опубликована в номере 06 за 2007 год в рубрике sysadmin

©1999-2022 Сетевые решения