В статье рассматривается создание и настройка первичного контроллера
Windows домена с несколькими расшаренными ресурсами и общим принтером.
Администрирование домена будет осуществляться удалённо, через утилиту
net. Приведённые ниже действия выполнялись на Slackware Linux 11, только
с использованием пакетов входящих в поставку дистрибутива. С небольшими
отличиями, это руководство может быть использовано на любом другом
дистрибутиве.
Список ресурсов будущего сервера:
* "docs" - документация ()
* "distrib" - дистрибутивы ПО
* "incoming" - каталог для загрузки файлов на сервер обычными пользователями
* "clients" - информация о клиентах (доступ только для определенной группы)
Пользователи принадлежащие группе администраторов будут имеют полный
доступ к содержимому этих ресурсов. Обычные пользователи смогут только
читать опубликованные на сервере файлы. Ресурс "clients" будет доступен
только для пользователей которые входят в группу "Менеджеры". При входе
в домен, всем пользователям будут корретироваться часы и монтироваться
сетевые диски. Для обычных пользователей набор монтируемых ресурсов
будет отличаться от набора для менеджеров. В нашем примере у них будет
отстуствовать сетевой диск clients.
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
В директории /srv/netlogon необходимо создать два файла nt_managers.bat и
users.bat. Эти файлы будут выполняться одноимёнными группами пользователей
при входе в домен. В них содержаться команды для монтирования сетевых дисков
и синхронизации часов. В примере, между ними одно различие: обычным
пользователям не будет монтироваться сетевой диск на ресурс clients.
# cat /srv/samba/netlogon/users.bat
net time \SERVER /set /yes
net use x: \SERVERincoming
net use y: \SERVERdocs
net use z: \SERVERdistrib
# cat /srv/samba/netlogon/nt_managers.bat
net time \SERVER /set /yes
net use x: \SERVERincoming
net use y: \SERVERdocs
net use z: \SERVERdistrib
net use w: \SERVERclients
Внимание: очень важно чтобы файлы были в Window'ой кодировке и dos'м
окончанием строки (<CR><NL>). Самый лучший способ - создать их в
Блокноте и затем закачть по FTP на сервер (хотя можно открыть в vim'e
сразу с преобразованием
vim --cmd "edit ++enc=cp1251 ++ff=dos" -- /srv/samba/netlogon/nt_managers.bat)
Настройка
Для директорий incoming и clients выставим другие права. Все
пользователи домена должны иметь права на чтение/запись в директорию
incoming. Для этого сменим группу этой директории на users и дадим
членам этой группы права на запись.
В директорию clients должны иметь доступ только менеджеры. Ограничение
на доступ выставлены в конфигурационном файле выше (строка valid users =
@managers). Все члены этой группы также должны иметь права на запись.
Для этого поступим так же как и с incoming. Сменим группу на nt_managers
и дадим ей права на запись.
Для того чтобы в директориях 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 ? S 0:00 /usr/sbin/smbd -D
6899 pts/2 R+ 0:00 grep mbd
Пробуем подключиться и посмотреть на доступные сетевые ресурсы
# smbclient -L localhost -Uroot%123
Создание групп
Переходим к созданию групп пользователей
Cоздадим необходимые linux группы чтобы потом сопоставить их с
аналогичными группами Windows. В Windows по умолчанию прописаны
следующие основные группы:
1) Guests 2) Users 4) Administrators
Windows группе Guests можно сопоставить Linux группу nobody, Users -
users, для Administrators - nt_admins. Заодно создадим отдельную группу
для менеджеров nt_manager.
Как только создан пользователь - администратор, дальше, для управления
доменом, в основном будет использоваться утилита net. С ее помощью
производятся все административные действия.
Проверим, добавился ли он в группу "Domain Admins"
# net rpc group members "Domain Admins" -Ubambucha%123
ASUbambucha
По умолчанию у группы 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
Для того чтобы ввести в домен Windows ПК нужно:
1) ПКМ на иконке "Мой компьютер", выбрать пункт "Свойства"
2) Перейти на вкладку "Имя компьютера"
3) Нажать кнопку "Изменить"
4) Выбрать пункт "Является членом домена:"
5) Ввести название домена (в примере ASU), кнопка "ОК"
6) Ввести имя и пароль пользователя, который имеет право на
добавление ПК в домен (в примере bambucha, пароль 123)
7) Перезагрузить :)
8) В окне ввода имени пароля, нажать кнопку "Параметры" и
выбрать домен (в примере ASU)
Добавление пользователей
Добавим в БД 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
# net rpc group -U bambucha%123
Domain Users
Domain Computers
Domain Admins
Domain Guests
Managers
Список всех пользователей
# net rpc user -U bambucha%123
bambucha
user1
user2
user3
comp1$
comp2$
comp3$
Список администраторов (группа "Domain Admins")
# net rpc group members "Domain Admins" -U bambucha%123
ASUbambucha
Список обычных пользователей (группа "Domain Users")
# net rpc group members "Domain Users" -U bambucha%123
ASUuser1
ASUuser2
ASUuser3
Список пользователей-менеджеров (группа "Managers")
# net rpc group members "Managers" -U bambucha%123
ASUuser3
Список компьютеров (группа "Domain Computers")
# net rpc group members "Domain Computers" -U bambucha%123
ASUcomp1$
ASUcomp2$
ASUcomp3$
Если какому то пользователю нужны дополнительные права, позже его можно
добавить в локальную группу "Опытные пользователи" следующей коммандой
(также эту комманду, для каждого пользователя можно вызывать
автоматически, см. smb.conf):
# net rpc group addmem "Опытные пользователи" "ASUuser_name" -S "user_comp" -Ubambucha%123
Список комманд для управления доменом
Ниже собраны комманды используемые для управления доменом и получения о
нем информации. Чтобы не вводить новые названия, оставил их из примера.
Управление
1) Добавить/удалить сопоставление
# net groupmap {add,delete} ntgroup="Managers" unixgroup=nt_managers
2) Добавить/удалить пользователя
# net rpc user {add,delete} user1 -U bambucha%123
3) Добавить/удалить компьютер
# net rpc user {add,delete} comp1$ -U bambucha%123
4) Добавить/убрать пользователя в доп. группу
# net rpc group {addmem,delmem} "Managers" user1 -U bambucha%123
5) Сменить основную группу пользователя
# usermod -g nt_managers user3
6) Установить пароль для пользователя
# smbpasswd user1
7) Ввести сервер в домен
# net rpc join -Ubambucha%123
8) Проверить на вход в домен
# net rpc testjoin
9) Добавить права определенной группе
net rpc rights grant "Domain Admins" SeMachineAccountPrivilege SeTakeOwnershipPrivilege SeBackupPrivilege
SeRestorePrivilege SeRemoteShutdownPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege
SeDiskOperatorPrivilege -Ubambucha%123
Информация
1) Список сопоставлений:
# net groupmap list
2) Список всех пользователей
# net rpc user -U bambucha%123
3) Список всех групп
# net rpc group -U bambucha%123
4) Список пользователей принадлежащих определенной группе
# net rpc group members "Managers" -U bambucha%123
5) Список компьютеров (группа "Domain Computers")
# net rpc group members "Domain Computers" -U bambucha%123
6) Группы, которым принадлежит определенный пользователь
# net rpc user info user3 -Ubambucha%123
7) Общая информация о домене
# net rpc info -Ubambucha%123
Установка принтера
1) Удаляем старый CUPS
# removepkg cups
2) Копируем из директории Testing новый CUPS и устанавливаем
# installpkg cups-1.2.4-i486-1.tgz
Если планируется подключать принтер HP, в поствке Slackware есть набор
драйверов для этих принтеров (находиться в Testing). Устанавливаем
В каждый из этих блоков добавляем строку разрешающую доступ к WEB
интерфейсу CUPS с вашего ПК (в данном примере c ПК 192.168.226.1):
Allow From 192.168.226.1
Ищем строку
Listen localhost:631
и меняем на
Listen *:631
т.е. слушать соединения на всех интерфейсах
6) Раздел /var должен быть смонтирован с поддержкой ACL. Для этого в
файле /etc/fstab нужно найти строку с var разделом, например
/dev/sda6 /var ext3 defaults 1 2
и добавить при монтировании поддержку ACL
/dev/sda6 /var ext3 defaults,acl 1 2
7) Перезагружаем ПК чтобы смонтировать /var с новой опцией
8) В браузере открываем WEB интерфейс CUPS: http://192.168.226.1:631
(адрес компьютера на котором установлен CUPS сервер) Дальше все должно
просто. Переходим на вкладку Administration, жмем кнопку Add printer,
вводим название будущего принтера, комментарий и краткие сведения где он
физически находиться. Далее жмем Continue, выбираем к какому порту
принтер подключен (для примера выбрал LPT), опять жмем Continue,
выбираем производителя, марку принтера (если производитель отсутствует -
ищем драйвер в интернете и загружаем с помощью кнопки Browse) и жмем
кнопку Add printer. Все. Принтер установлен. Сейчас можно перейти на
вкладку Printers, найти там установленный принтер и распечатать тестовую
страницу (кнопка Print Test Page).
9) Перезагружаем SAMBA
# /etc/rc.d/rc.samba restart
10) Заходим в Windows (под Администратором или членом группы Domain
Admins), жмем Пуск, Настройка, Принтеры и факсы, Установка принтера.
Выбираем "Сетевой принтер", "Обзор принтеров". Из списка выбираем сервер
с SAMBA, а в нем установленный ранее принтер. Принтер установлен, можно
пробовать распечатать тестовую страницу из Windows.