Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

FreeBSD: Установка Samba файлового сервера в домене Windows (Active Directory)

Практика



Задача: установить на имеющуюся FreeBSD файловый сервер на базе Samba. Необходимо, чтобы файловый сервер был в домене и пускал доменных пользователей из ОС Windows.



Включаем ACL

Убедитесь, что диск, который будет содержать общие ресурсы, не примонтирован, и выполните команду:
$ sudo tunefs -a enable /dev/ad1s1
где вместо /dev/ad1s1 указываем диск и слайс, на которых будут располагаться наши общие ресурсы.

Если же общие ресурсы будут находится на системном диске - т.е. отмонтировать Вы его не можете, пока система работает - то придется топать к серверу, загружаться в режиме "Single mode" и уже тогда выполнять эту команду (tunefs доступна из Single mode - проверено).



Устанавливаем Kerberos

$ cd /usr/ports/security/heimdal
$ sudo make install clean

В вывалившемся окне настроек, если не пользуем IPv6, выключаем его. Для того, чтобы можно было работать с OpenLDAP с использованием Kerberos - ставим соответствующую галочку.

Теперь идем в /etc и создаем файл krb5.conf вот такого вида:
[libdefaults]
 default_realm = MYDOMAIN.RU
 clockskew = 300
 v4_instance_resolve = false
 v4_name_convert = {
  host = {
   rcmd = host
   ftp = ftp
  }
  plain = {
   something = something-else
  }
 }

[realms]
 MYDOMAIN.RU = {
  kdc = pdc.mydomain.ru
  admin_server = pdc.mydomain.ru
  default_domain = mydomain.ru
 }
 OTHER.REALM = {
  v4_instance_convert = {
   kerberos = kerberos
   computer = pdc.mydomain.ru
  }
 }

[domain_realm]
 .mydomain.ru = MYDOMAIN.RU

здесь
  • вместо MYDOMAIN.RU и mydomain.ru вводите название своего домена
  • в опции kdc меняем pdc.mydomain.ru на сетевое имя или IP Вашего контроллера домена (одного)
  • в опции admin_server меняем pdc.mydomain.ru на сетевое имя или IP Вашего контроллера домена (одного). Можно использовать то же имя, что и в kdc
  • в опции computer меняем pdc.mydomain.ru на сетевое имя или IP Вашего контроллера домена (одного)



Синхронизируем время

Для успешной аутентификации необходимо, чтобы время на сервере FreeBSD и контроллерах домена Windows шло одинаково - это непременное требование, несоблюдение которого грозит отказом со стороны контроллера домена в выдаче разрешений.

$ sudo ntpdate pdc.mydomain.ru

где вместо pdc.mydomain.ru указывайте сетевое имя или IP Вашего контроллера домена.



Проверяем

$ sudo kinit -p domainadminuser

где вместо domainadminuser вводите логин администратора домена (если Вы таковым являетесь - вводите свой логин). Указывать "@MYDOMAIN" или "MYDOMAIN\" не нужно!

Вас запросят пароль для данного юзера - вводите его. Если все хорошо - система просто ничего не скажет. Иначе она сигнализирует об ошибке.

Проверяем дальше:
$ sudo klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: mydomainadmin@MYDOMAIN.RU

  Issued           Expires          Principal
Sep 13 18:23:49  Sep 14 04:23:49  krbtgt/MYDOMAIN.RU@MYDOMAIN.RU

Если ответ похож на тот, что выше - значит мы все делаем правильно и можно продолжать.



Настройка nsswitch

Теперь идем в /etc и правим файл nsswitch.conf. Оставляем в нем только следующие записи:
passwd: files winbind
group: files winbind
hosts: files dns



Теперь устанавливаем Samba

$ cd /usr/ports/net/samba35
$ sudo make install clean

На самом деле у Вас может быть последней самба уже не 3.5 (samba35), а выше. Соответственно, название каталога можеть быть немножко другим.

В конфигураторе я выбирал следующие опции (заметьте, что я не поднимал сервер печати CUPS на этом сервере SAMBA, потому опцию CUPS я не указывал):
  • LDAP
  • ADS
  • WINBIND
  • SWAT
  • ACL_SUPPORT
  • FAM_SUPPORT
  • SYSLOG
  • QUOTAS
  • PAM_SMBPASS
  • PORT

SWAT включайте в случае, если Вы хотите немного полениться и выполнять настройку SAMBA через веб-консоль. ;)

По пути компиляции у Вас могут запросить еще несколько раз "отметить опции".


Теперь топаем в /etc и открываем на редактирование файл rc.conf. Вот какие строчки нужно дописать или убедиться, что они есть:
inetd_enable="YES"
nmbd_enable="YES"
smbd_enable="YES"
winbindd_enable="YES"

Открываем файл inetd.conf (находящийся здесь-же - в /etc) и раскомментируем следующую строчку:
swat    stream  tcp     nowait/400      root    /usr/local/sbin/swat    swat

Перезагружаем сервер (можно и каждую службу стартануть вручную, но если есть возможность ребутнуться - давайте не будет ее упускать):

$ sudo reboot



Настройка Samba

Т.к. мы ленивые и включили SWAT в настройках inetd, да и сам inetd включили, то настраивать мы будем не через конфиг-файл (кстати, лежит он по адресу "/usr/local/etc/smb.conf"), а через веб-консоль.

Да-да, у Samba есть веб-консоль управления, называемая SWAT. Чтобы попасть в нее - набираем в строке браузера:

http://192.168.0.1:901

где вместо 192.168.0.1 вводим IP адрес сервера, вводим логин "root" и рутовый для этого сервера пароль - и мы в консоли управления.

Через эту консоль управления задаем необходимые параметры и сохраняем их с помощью кнопки "Commit" (или "Сохранить", если, как у меня, SWAT показал свою сущность в русском языке).


Пример настройки

Итак, переходим к вкладке "Wizard".
  • Тип сервера ставим "Член домена".
  • Настроить WINS как: "Не использовать" или "Клиент другого WINS сервера".
  • Удаленный сервер WINS: Указываем WINS сервер Вашего домена (если он есть). При этом "Настроить WINS как" должно быть "Клиент другого WINS сервера".
  • Сделать доступными домашние каталоги: Нет (нафига пользователям видеть папки /home/... пользователей сервера FreeBSD).

Жмем "Сохранить".


Теперь идем на вкладку "GLOBALS" и задаем необходимые параметры. Я рекомендую выбирать режим "Сложный" - есть некоторый набор опций, который нужно поменять, но которые не видны из "Простого" режима.

Вот что у меня прописано на этой странице (привел только основные параметры):
  • dos charset = CP866
  • unix charset = KOI8-R (тут ставите ту кодировку, которая используется на Вашем FreeBSD сервере. Т.е. если Вы используете UTF-8 в консоли - то ставите UTF-8)
  • display charset = CP866
  • workgroup = MYDOMAIN (тут указываете имя Вашего домена)
  • realm = MYDOMAIN
  • netbios name = MYSERVER (имя сервера)
  • netbios aliases =
  • netbios scope =
  • server string = Samba Server (тут можете писать то, что Вам хочется - название сервера, например, или его описание)
  • interfaces =
  • bind interfaces only = No (укажите в interfaces нужные интерфейсы, через которые слушать трафик Самбе, и поставьте эту опцию = Yes в случае, если Вы хотите ограничить работу сервера общих папок только конкретной сетевой картой)
  • security = DOMAIN
  • auth methods = winbind
  • encrypt password = Yes
  • update encrypted = Yes
  • client schannel = Auto
  • server schannel = Auto
  • allow trusted domains = Yes
  • map to guest = Never
  • null passwords = No
  • obey pam restrictions = No
  • password server = * (или укажите IP адрес контроллера домена)
  • smb passwd file = /usr/local/etc/samba/smbpasswd
  • private dir = /usr/local/etc/samba
  • passdb backend = tdbsam
  • algoriphmic rid base = 100
  • root directory =
  • guest account = nobody
  • enable privilages = Yes
  • pam password change = No
  • passwd program =
  • check password script =
  • username map =
  • password level = 0
  • username level = 0
  • user password sync = No
  • restrict anonymous = 0
  • lanman auth = No
  • ntlm auth = Yes
  • NTLMv2 auth = No (кстати, могут быть проблемы с доменами WS2008R2, если включить этот параметр - судя по информации из форумов)
  • client lanman auth = No
  • client plaintext auth = No
  • client use spnego principal = No
  • invalid users = (здесь можно указать - каким пользователям и группам нельзя работать с Самбой на глобальном уровне, т.е. вообще; перечисление через запятую, названия групп начинаются с собачки @)
  • valid users = (если пустой - то ничего не запрещает, иначе здесь можно указать пользователей и группы, только которым можно работать с сервером - другие работать не смогут)
  • admin users = (здесь перечисляются пользователи и группы, которые наделены админскими правами - могут все в Samba)
  • read list = (перечисленным здесь пользователям дается доступ только на чтение)
  • write list = (перечисленным здесь пользователям дается доступ на чтение и запись)
  • acl check permissions = Yes
  • acl group control = Yes
  • acl map full control = Yes
  • create mask = 0744 (маска создаваемых файлов в папках)
  • security mask = 0777 (маска атрибутов, которые может менять пользователь Windows через обычное окно "Безопасность" в проводнике. 0777 указывает, что пользователь может менять все атрибуты)
  • directory mask = 755 (маска создаваемых папок)
  • directory security mask = 0777 (то же, что и security mask - для директорий)
  • force unknown acl user = Yes (позволяет отображать пользователя/группу "Неизвестный" в окне "Безопасность" проводника Windows в случае, если файл был создан не через Samba, а с самого сервера пользователем, который не светится через авторизацию самба - например, локальным пользователем самого сервера)
  • hosts allow = (если пустой, то ничего не запрещает; иначе можете указать здесь IP адреса или сети, которым позволено работать с Samba, остальные (не попадающие в этот список) компьютеры допущены не будут)
  • hosts deny = (здесь можно указать IP адреса или сети компьютеров, которым с Samba работать нельзя)
  • kerberos method = default
  • map untrusted to domain = No
  • max protocol = NT1 (можно установить как SMB2 - это протокол, максимально совместимый с Windows Vista и выше, но пока находится в режиме "экспериментальный")
  • min protocol = CORE
  • ea support = No (не нужен нам доступ с OS/2)
  • nt acl support = Yes (а вот ACL Windows нам нужен)
  • nt pipe support = Yes
  • nt status support = Yes
  • profile acls = No (включать следует только для Windows 2000 и Windows XP без ServicePack - т.е. не нужно)
  • anounce as = NT
  • map acl inherit = Yes (на самом деле полезная опция, при включении ее ACL - т.е. права - наследуются, как это происходит в самой Windows... однако создатели Samba заявляют, что работать данная опция будет только на Linux. К сожалению, на момент написания статьи я еще не успел проверить данный факт)
  • case sensetive = No (т.к. Windows не различает большие и маленькие буковки - то и Sambe этого делать не стоит)
  • hide dot files = Yes (скрывать - не показывать для клиентов Windows - файлы с точкой в начале имени, т.е. те файлы, которые традиционно считаются скрытыми в Unix)
  • hide unwritable files = No (забавная опция, которая позволяет не показывать пользователям файлы, к которым у них нет доступа на запись)
  • map archive = Yes (пробрасывать атрибут "Архивный" в стандартный диалог проводника)
  • map hidden = No (то-же - для "Скрытый")
  • map system = No (то-же - для "Системный")
  • map readonly = Yes (то-же - для "Только для чтения")
  • idmap uid = 10000-20000 (диапазон UID для того, чтобы Idmap мог замапить доменных пользователей в локальных - без этого работать не будет. Не должен пересекаться с диапазоном используемых локально пользователей - см /etc/passwd)
  • idmap gid = 10000-20000 (диапазон GID для того, чтобы Idmap мог замапить доменные группы в локальные - без этого работать не будет. Не должен пересекаться с диапазоном используемых локально групп - см /etc/group)

При необходимости можно прочитать справку по каждой опции (на английском) - кликнув на ссылку "Справка" рядом с опцией.

И нажимаем на "Соханить изменения".

Теперь переходим на вкладку "STATUS" и перезапускаем всех связанных демонов кнопкой "Перезапустить все".


PS. Внимательно все настраивайте. Так, не указание winbind в качестве службы авторизации (параметр auth methods), или не указание диапазона UID и GID для Idmap... или еще какой промах - и с авторизацией начнутся танцы.



Включаем сервер в домен

Выполняем:
$ sudo net ads join -U domainadminuser
Using short domain name -- MYDOMAIN
Joined 'SERVERNAME' to realm 'mydomain'

здесь вместо domainadminuser введите логин доменного администратора.

Заметка. При этом служба winbindd может не запуститься ранее из-за того, что в домен компьютер заведен не был. Поэтому после того, как Вы добавите его в домен - вручную запустите эту службу (хотя бы даже через SWAT).

Проверяем, что к домену подсоединились успешно и winbind работает нормально:
$ sudo wbinfo -t
checking the trust secret for domain MYDOMAIN via RPC calls succeeded

Теперь проверяем, что winbind видит пользователей и группы в домене, а так-же проходим аутентификацию:
$ sudo wbinfo -u
$ sudo wbinfo -g
$ sudo wbinfo -a domainuser%mysuperpassword



Создаем папки общих ресурсов

В консоли топаем в директорию, где хранятся общие ресурсы и создаем новую папку. Эта папка будет использована как хранилище общего ресурса - т.е. именно в ней будут находится файлики и под-папки новой шары.

Например
$ cd /sharesdisk
$ sudo mkdir share1
$ sudo chmod 777 share1

Как видно, мы дали права на запись в данную директорию всем и вся со стороны сервера Unix. Это необходимо - без этого ничего через Samba сделать внутри директории не получается.


Возвращаемся в SWAT и переходим на вкладку SHARES. Здесь Вы можете создавать общие ресурсы. Все относительно просто и понятно.

Для создания ресурса - введите его имя (как оно будет отображаться при входе на сервер через сеть из Windows) и нажмите "Создать ресурс"

Далее указываем параметры ресурса.
  • comment : Комментарии
  • path : Путь к директории на сервере FreeBSD - к папке, созданной выше
  • invalid users : Пользователи, которым нельзя работать с ресурсом
  • valid users : Если не указано, то ничего не запрещает (всем можно смотреть); иначе здесь можете перечислить пользователей и группы, только которым можно заходить в эту папку (например, "director, @buhgalteria")
  • admin users : Пользователи, имеющие максимальные права - администраторы
  • read list : Этим пользователям и группам можно только читать файлы, но не писать в них (и папки)
  • write list : Пользователи и группы с правами Read-Write.
  • read only : Ресурс находится в режиме "Только чтение". Следует заметить, что для пользователей из списков "read list" и "write list" этот параметр неважен - Samba для них игнорирует "read only".
  • acl group control : Включить ли поддержку ACL
  • force unknown acl user : позволяет отображать пользователя/группу "Неизвестный" в окне "Безопасность" проводника Windows в случае, если файл был создан не через Samba, а с самого сервера пользователем, который не светится через авторизацию самба - например, локальным пользователем самого сервера
  • guest ok : позволять ли вход "гостям", т.е. неавторизованным пользователям
  • hosts allow : позволять доступ только с перечисленных компьютеров или сетей (ничего не запрещает, если параметр пустой)
  • hosts deny : запрещять доступ с перечисленных компьютеров или сетей
  • map acl inherit : Наследовать права доступа от родительского объекта
  • case sensetive : Учитывать регистр в названиях файлов и папок (рекомендую снять - винда то регистр не учитывает)
  • browsable : показывать папку при входе на сервер через сетевое окружение (аналог виндового sharename$)
  • access based share enum : Если включить, то папка в проводнике при заходе на сервер будет видна только пользователям, которые могут в нее заходить (имеют права на чтение или запись). Аналог появившейся опции в WS2008. Т.е. те пользоватли, которых все равно не пустило бы в папку из-за нехватки прав - эту папку просто не увидят.
  • available : Включить или выключить данный общий ресурс. Т.е. можно временно выключить данную папку, не удаляя ее объявление из Samba.

После этого сохраняем ресурс.



Проверяем

Теперь в проводнике Windows набираем адрес нашего сервера и мы должны увидеть созданную папку так-же, как будто зашли на компьютер с Windows на борту.
создано: 2017-05-10
обновлено: 2020-10-31
135128



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX