Настройка интеграции Samba-сервера с Avanpost DS

ВНИМАНИЕ:

В инструкции приведены команды для четырех операционных систем: REDOS 8REDOS 7ASTRAALT

Для шагов с отличающимися в зависимости от ОС действиями указаны команды для всех трех ОС. Необходимо выполнять команды только для используемой вами ОС.

Для интеграции Samba с Avanpost DS требуется подготовить один введенный в домен хост для сервера Samba и как минимум одну введенную в домен рабочую станцию для клиента Samba на одной из поддерживаемых ОС согласно инструкции по введению в домен рабочих станций.

Сначала требуется настроить сервер, затем можно переходить к настройке клиентов Samba.

ВАЖНО: Для корректной работы Samba необходимо соблюдение условий:

  1. Системное время на контроллере домена Avanpost DS, Samba сервере, и рабочих станциях в домене должно быть синхронизировано.
    Команда для проверки текущего времени
    date
  2. В веб-интерфейсе Avanpost DS должны быть созданы PTR записи для всех контроллеров в домене.
    Команда для проверки PTR записей
    dig -x [IP контроллера домена, на котором настроены PDNS и PDNS-RECURSOR]
    dig -x 192.168.1.11

    Подробнее о PTR записях см. статью "6.8. Управление DNS" руководства по администрированию.

1. Настройка сервера Samba

Для настройки сервера Samba необходимо подключиться к хосту по SSH и выполнить шаги:

Шаг 1.1. Отключить SElinux и Firewall (Только для ОС RedOS и Alt) .

Для этого необходимо выполнить команды:

RedOS 8
sudo sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
sudo systemctl disable --now firewalld
RedOS 7
sudo sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
sudo systemctl disable --now iptables
Astra
НЕ выполняем данный шаг на Astra
Alt
sudo systemctl disable --now iptables

Шаг 1.2. Установить необходимые пакеты.

Для этого необходимо выполнить команды:

RedOS 8
sudo dnf install -y sssd-tools samba samba-client samba-common chrony authselect-compat sssd samba-winbind
sudo systemctl enable --now chronyd.service
RedOS 7
Astra
sudo apt install sssd-tools samba smbclient samba-common chrony sssd ssh samba-winbind
Alt
sudo apt-get install -y sssd-tools samba samba-client samba-common chrony sssd samba-winbind
sudo systemctl enable --now chronyd.service

Шаг 1.3. Установить часовой пояс.

Для этого необходимо выполнить команду:

sudo timedatectl set-timezone Europe/Moscow

Шаг 1.4. Ввести Samba-сервер в домен Avanpost DS.

Подробная инструкция по вводу хостов в домен представлена в разделе: "6.7. Введение в домен рабочих станций".

Шаг 1.5. Создать службу "cifs" в веб-интерфейсе администратора Avanpost DS и экспортировать ее keytab-файл.

Для этого необходимо в разделе "Рабочие станции" веб-интерфейса администратора Avanpost DS открыть карточку Samba-сервера, перейти на вкладку "Службы", ввести имя новой службы "cifs" и нажать кнопку "Создать".
Затем в строке службы "cifs" нажать на символ ключа ( ). Начнется загрузка keytab-файла для сервиса "cifs".

Шаг 1.6. Загрузить keytab-файл службы "cifs" на Samba-сервер.

Скаченный на шаге 1.5. keytab-файл скопировать на Samba-сервер в директорию "/etc/samba/" с помощью SFTP клиента.

Шаг 1.7. Создать директорию, к которой будет предоставлен доступ Samba-сервером.

Для этого необходимо выполнить команду, подставив в шаблон путь до необходимой директории:

Шаблон команды
sudo mkdir [путь до директории]
Пример команды
sudo mkdir /usershare/

Шаг 1.8. Изменить владельца созданной на шаге 1.7. директории.

Для этого необходимо выполнить команды, подставив в шаблон путь до необходимой директории:

Шаблон команд
sudo chown nobody:nobody [путь до директории]
sudo chmod 777 [путь до директории]
Пример команд
sudo chown nobody:nobody /usershare/
sudo chmod 777 /usershare/

Шаг 1.9. Заполнить конфигурационный файл "/etc/samba/smb.conf".

Для этого необходимо:

1.9.1. Сделать резервную копию конфигурационного файла "/etc/samba/smb.conf".

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf_old

1.9.2. Создать и открыть для редактирования новый конфигурационный файл "/etc/samba/smb.conf".

sudo nano /etc/samba/smb.conf

1.9.3. Заполнить открывшийся файл по шаблону: 

Шаблон /etc/samba/smb.conf
[global]
  workgroup = [REALM ПОСЛЕДНЕГО УРОВНЯ]
  realm = [REALM]
  security = ADS
  dedicated keytab file = FILE:/etc/samba/cifs.keytab
  kerberos method = dedicated keytab

  passdb backend = tdbsam

  printcap name = cups
  load printers = yes
  cups options = raw

  idmap config [REALM ПОСЛЕДНЕГО УРОВНЯ] : range = 10000 - 20000
  idmap config [REALM ПОСЛЕДНЕГО УРОВНЯ] : backend = rid
  idmap config * : backend        = tdb
  idmap config * : range          = 3000 - 7999

  include = /etc/samba/usershares.conf
  log level = 9
  log file = /var/log/samba.log

[[Сетевая папка]]
    path = [Путь до директории]
    write list = @[Группа] # Группа которой разрешена запись, регистр важен

Заменить в строке 3 [REALM] на REALM сервера Samba (Домен2ур.Домен1ур) в верхнем регистре.

Заменить в строках 2, 14, 15 [REALM ПОСЛЕДНЕГО УРОВНЯ] на REALM последнего уровня в верхнем регистре. Например, домена avanpost.local необходимо указать "AVANPOST".

Заменить в строке 23 [Сетевая папка] на произвольное название для сетевой папки Samba.

Заменить в строке 24 [Путь до директории] на путь до директории, созданной на шаге 1.8.

Заменить в строке 25 [Группа] на имя группы, которой разрешена запись на сервере.

Пример /etc/samba/smb.conf
[global]
  workgroup = AVANPOST
  realm = AVANPOST.LOCAL
  security = ADS
  dedicated keytab file = FILE:/etc/samba/cifs.keytab
  kerberos method = dedicated keytab

  passdb backend = tdbsam

  printcap name = cups
  load printers = yes
  cups options = raw

  idmap config AVANPOST : range = 10000 - 20000
  idmap config AVANPOST : backend = rid
  idmap config * : backend        = tdb
  idmap config * : range          = 3000 - 7999

  include = /etc/samba/usershares.conf
  log level = 9
  log file = /var/log/samba.log

[exampleshare]
    path = /usershare/
    write list = @Administrators # Группа которой разрешена запись, регистр важен

Шаг 1.10. Указать SID домена для Samba-winbind.

Для этого необходимо выполнить команду по шаблону:

Шаблон команды
sudo net setdomainsid [SID]

Заменить [SID] на SID домена.

Пример команды
sudo net setdomainsid S-1-5-21-1219792643-3871094281-3954467648

Как узнать SID домена?

Узнать SID домена можно в Apache DS. (О настройке Apache DS см. статью "5.3. Настройка Apache Directory Studio для работы с Avanpost DS")
Для этого необходимо:

  1. Нажать на домен в каталоге "Root DSE".
  2. Открыть значение атрибута "objectsid". 
  3. В открывшемся HEX редакторе нажать "Edit as Text". Откроется текстовый редактор с SID домена.

Шаг 1.11. Перезапустить сервисы Samba и Samba-winbind и добавить их в автозапуск.

Для этого необходимо выполнить команды:

sudo systemctl enable --now smb.service
sudo systemctl enable --now winbind.service
sudo systemctl restart smb.service winbind.service

2. Настройка клиента Samba

Для настройки клиента Samba необходимо подключиться к рабочей станции по SSH и выполнить шаги:

Шаг 2.1. Установить необходимые пакеты.

Для этого необходимо выполнить команды:

RedOS 8
sudo dnf install -y samba-client keyutils cifs-utils krb5-workstation chrony authselect-compat sssd
sudo systemctl enable --now chronyd.service
RedOS 7
Astra
sudo apt install smbclient keyutils cifs-utils krb5-user chrony sssd ssh
sudo systemctl enable --now chronyd.service
Alt
sudo apt-get install -y samba-client keyutils cifs-utils krb5-workstation chrony sssd
sudo systemctl enable --now chronyd.service

Шаг 2.2. Установить часовой пояс.

Для этого необходимо выполнить команду:

sudo timedatectl set-timezone Europe/Moscow

Шаг 2.3. Ввести Samba-клиент в домен DS.

Подробная инструкция по вводу хостов в домен представлена в разделе "6.7. Введение в домен рабочих станций".

Шаг 2.4. Авторизоваться под доменным пользователем Avanpost DS с правами администратора. 

Для этого необходимо выполнить команду, подставив в шаблон логин доменного пользователя Avanpost DS с правами администратора:

Шаблон команды
su - [УЗ администратора]
Пример команды
su - lipov

Шаг 2.5. Проверить доступность папки на Samba-сервере.

Для этого необходимо выполнить команду, подставив в шаблон полное доменное имя (FQDN) Samba-сервера:

Шаблон команды
smbclient --use-kerberos=required -L [FQDN Samba-сервера]
Пример команды
smbclient --use-kerberos=required -L smb.avanpost.local

В выводе команды должен отобразиться список доступных папок для монтирования:

Пример вывода команды
# Password for [admin@AVANPOST.LOCAL]:
#
#        Sharename       Type      Comment
#        ---------       ----      -------
#        exampleshare    Disk     
#        IPC$            IPC       IPC Service (Samba 4.20.2)
# SMB1 disabled -- no workgroup available

Шаг 2.6. Авторизоваться под локальным пользователем, состоящим в группе sudoers.

Для этого необходимо выполнить команду, подставив в шаблон логин локального пользователя, состоящего в группе sudoers:

Шаблон команды
su - [УЗ администратора]
Пример команды
su - admin

Шаг 2.7. Создать директорию для монтирования.

Для этого необходимо выполнить команду:

sudo mkdir /media/sharefolder

Шаг 2.8. Выполнить монтирование.

Для этого необходимо выполнить команды по шаблону:

Шаблон команды
sudo -i
kinit [имя пользователя] # Доменный пользователь DS с правами администратора
mount -t cifs //[Samba-сервер]/[Сетевая папка]/ [Точка монтирования] -o user=[ИМЯ],cruid=root,uid=$(id [ИМЯ] -u),gid=$(id [ИМЯ] -g),domain=[REALM],sec=krb5

Заменить в строке 2 <имя пользователя> на имя доменного пользователя DS с правами администратора.

Заменить в строке 3:

  • [Samba-сервер] на полное доменное имя (FQDN) Samba-сервера;

  • [Сетевая папка] на имя сетевой папки Samba, указанной в конфигурационном файле на шаге 1.9.3;

  • [Точка монтирования] на путь до директории, созданной на шаге 2.7;

  • [ИМЯ] на имя доменного пользователя Avanpost DS с правами администратора;

  • [REALM] на REALM сервера Samba (Домен2ур.Домен1ур).

Пример команды
sudo -i 
kinit lipov # Доменный пользователь DS с правами администратора
mount -t cifs //smb.avanpost.local/exampleshare/ /media/sharefolder -o user=lipov,cruid=root,uid=$(id lipov -u),gid=$(id lipov -g),domain=avanpost.local,sec=krb5


Обсуждение