Настройка интеграции 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
МСВСфера
sudo sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
sudo systemctl disable --now firewalld

Шаг 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
МСВСфера
sudo dnf install -y sssd-tools samba samba-client samba-common chrony authselect-compat sssd samba-winbind
sudo systemctl enable --now chronyd.service

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

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

sudo timedatectl set-timezone Europe/Moscow

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

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

Шаг 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]
    log file = /var/log/samba/samba.log
    log level = 1
    security = user
    dedicated keytab file = FILE:/etc/samba/cifs.keytab
    kerberos method = dedicated keytab
    server role = STANDALONE
    realm = [REALM]
    netbios name = [ДОМЕН ПОСЛЕДНЕГО УРОВНЯ]
    workgroup = [ДОМЕН ПОСЛЕДНЕГО УРОВНЯ]
    idmap config * : range = 1000 - 200000
    idmap config * : backend = tdb

    winbind enum users = yes
    winbind enum groups = yes
    winbind use default domain = yes


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

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

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

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

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

Заменить в строке 21 [Группа] на имя группы, которой разрешена запись на сервере. (Доступно указание множества групп через запятую)

Пример /etc/samba/smb.conf
[global]
    log file = /var/log/samba/samba.log
    log level = 1
    security = user
    dedicated keytab file = FILE:/etc/samba/cifs.keytab
    kerberos method = dedicated keytab
    server role = STANDALONE
    realm = AVANPOST.LOCAL
    netbios name = AVANPOST
    workgroup = AVANPOST
    idmap config * : range = 1000 - 200000
    idmap config * : backend = tdb

    winbind enum users = yes
    winbind enum groups = yes
    winbind use default domain = yes

[exampleshare]
    path = /usershare/
    write list = @Administrators, @mygroup

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

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

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

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

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

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

Узнать SID домена можно с помощью команды по шаблону:

Шаблон команды
ldapsearch -H ldap://[FQDN] -D "cn=Administrator,ou=users,dc=[Домен3УР],dc=[Домен2УР],dc=[Домен1УР]" -w '[ПАРОЛЬ АДМИНИСТРАТОРА]' -b "dc=[Домен3УР],dc=[Домен2УР],dc=[Домен1УР]" -s base "(objectClass=*)" "objectsid" | grep objectsid
Пример команды
ldapsearch -H ldap://t-ds-gpads01.intr.contoso.ru -D "cn=Administrator,ou=users,dc=intr,dc=contoso,dc=ru" -w 'Avanp0st' -b "dc=intr,dc=contoso,dc=ru" -s base "(objectClass=*)" "objectsid" | grep objectsid

Так же узнать 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
МСВСфера
sudo dnf install -y samba-client keyutils cifs-utils krb5-workstation chrony authselect-compat sssd
sudo systemctl enable --now chronyd.service

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

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

sudo timedatectl set-timezone Europe/Moscow

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

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

Шаг 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


Обсуждение