В сборку Ульяновск.BSD включён пакет программ samba. С помощью этого пакета, в частности, можно организовать сервер хранения данных. Если такой сервис развертывается в сети Windows с доменной структурой и централизованным управлением пользователями и компьютерами через Active Directory, то можно организовать доступ к нему пользователей с авторизацией в Active Directory. Одновременно с этим возможно раздавать права на доступ к хранимым данным в соответствии с доменными пользователями и группами.
Допустим имеются следующие исходные данные:
- Имя машины c samba-сервером (hostname): ulbsd
- IP-адрес машины c samba-сервером: 192.168.0.248
- Полное имя Windows-домена: EXAMPLE.LOCAL
- IP-адрес контроллера домена Windows Server 2012 R2 Standard, являющегося и DNS-сервером для домена: 192.168.0.135
- IP-адрес шлюза в Интернет и резервного DNS-сервера: 192.168.0.1
Итак, в файле /etc/rc.conf на samba-сервере необходимо проверить наличие следующих строк:
samba_server_enable="YES"
winbindd_enable="YES"
А также в файле /etc/rc.conf на samba-сервере необходимо установить постоянный IP-адрес (вместо em0 нужно подставить имя своего интерфейса):
ifconfig_em0="inet 192.168.0.248 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
В файл /etc/hosts на samba-сервере необходимо добавить строку:
192.168.0.248 ulbsd.example.local ulbsd
В файл /etc/resolv.conf на samba-сервере необходимо прописать следующее:
search example.local
nameserver 192.168.0.135
nameserver 192.168.0.1
В файле /etc/nsswitch.conf на samba-сервере необходимо изменить строки group и passwd следующим образом:
group: files winbind
passwd: files winbind
Конфигурационный файл /usr/local/etc/smb4.conf на samba-сервере необходимо привести к следующему виду:
[global]
server string = ULBSD Samba Server
workgroup = EXAMPLE
security = ADS
realm = EXAMPLE.LOCAL
idmap config * : backend = tdb
idmap config * : range = 100000-999999
idmap config EXAMPLE : backend = rid
idmap config EXAMPLE : range = 10000-99999
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind refresh tickets = Yes
winbind offline logon = Yes
domain master = No
preferred master = No
use sendfile = Yes
logging = file
create mask = 0664
directory mask = 0775
dos charset = cp866
guest account = ftp
map to guest = Bad User
usershare allow guests = Yes
usershare max shares = 100
usershare owner only = No
[incoming]
comment = Public read/write directory
path = /var/ftp/incoming
guest ok = Yes
force user = ftp
read only = No
[pub]
comment = Public read directory
path = /var/ftp/pub
guest ok = Yes
[share]
comment = Files exchange directory
path = /var/ftp/share
read only = No
hide unreadable = Yes
inherit acls = Yes
inherit permissions = Yes
map acl inherit = Yes
После изменения конфигурационных файлов нужно перезагрузить машину с samba-сервером.
После перезагрузки можно вводить samba-сервер в домен:
net ads join -U администратор
В случае успеха после ввода пароля администратора произойдет выход в командную строку без каких либо сообщений.
Для проверки ввода в домен можно воспользоваться следующей командой:
net ads testjoin
Свидетельством успешного ввода в домен должно быть сообщение "Join is OK".
После ввода в домен необходимо перезапустить samba:
service samba_server restart
Теперь можно проверить работоспособность. Команда wbinfo -u должна выдавать список доменных пользователей, команда wbinfo -g должна выдавать список доменных групп, команда getent passwd должна выдавать локальных и доменных пользователей одним списком, команда getent group должна выдавать локальные и доменные группы одним списком.
Создание каталога share и перезапуск samba:
mkdir -p /var/ftp/share
chown -R "администратор":"пользователи домена" /var/ftp/share
chmod 0770 /var/ftp/share
service samba_server restart
Для того, чтобы можно было устанавливать права на каталог для нескольких пользователей и групп и управлять ими непосредственно из Windows, необходимо включить для файловой системы на samba-сервере поддержку расширенных списков доступа (POSIX.1e ACL). Для этого необходимо загрузиться в однопользовательском режиме (выбрать при старте системы 2. Boot Single User) и выполнить команду:
tunefs -a enable /
После этого расширенный список доступа для какого-либо каталога или файла можно просмотреть командой:
getfacl имя_каталога_или_файла
Работа рассмотренных конфигураций проверена в Ульяновск.BSD в стандартной установке с версией samba 4.7 на файловой системе UFS и контроллером домена на базе Windows Server 2012 R2 Standard. Проект samba активно развивается, поэтому необходимо следить за изменениями.
Примечание 1: Чтобы не иметь проблем с доступом, назначение постоянного IP-адреса для samba-сервера крайне желательно. IP-адрес может быть установлен вручную или назначаться DHCP-сервером по MAC-адресу. В случае назначения DHCP-сервером, необходимо также, чтобы DHCP-сервер правильно выдавал адреса DNS-серверов.
Примечание 2: Пример установки и настройки Active Directory на Windows Server 2012 R2 Standard можно посмотреть, например, здесь.
Примечание 3: Время на samba-сервере и контроллере домена обязательно должно быть одинаковым. Допустима разница не более чем в 5 минут. В противном случае авторизация в домене может не работать.
Добавляя комментарий, убедитесь, что он соответствует теме.
Подумайте, будет ли он интересен другим. Спам, умышленная реклама и личная
переписка не допускаются. Соблюдайте правила русского языка. Комментарии
публикуются после проверки модератором и могут быть удалены без объяснения
причин. Ответы на заданные в комментариях вопросы могут исходить от любого
пользователя и являются неофициальными.