За основу взята оф статья 1С. Только у них про КД на винде. Я же гордый владелец домена на SambaDC, вшитого в SynologyDSM. Есть некоторые подводные камни, которые касаются именно Synology - трудности с рут-доступом по ssh через winCSP. Основной функционал основывается на работе Samba DC (samba-tool).
Итак, имеем:
- Клиенты - тонкий клиент на win10pro в домене
- Сервер 1С - Ubuntu 18LTS. Не в домене. Установка - штатная
- Домен - Samba DC (в исполнении от synology)
Хотим: "чтобы работало одной кнопкой" (когда-нибудь). Сегодня - сквозная авторизация на клиенте.
Переменные, используемые в мануале (чтобы заменить их в notepad++):
%FQDN сервера 1с% = полный dns-адрес сервера 1с. Например, 1csrv.domain.example
%ПОЛНЫЙ АДРЕС ДОМЕНА% = realm. так, как написано в настройках домена. Например, DOMAIN.EXAMPLE
Если эта переменная указана ПРОПИСНЫМИ, то реальные данные указывать ПРОПИСНЫМИ. Если строчными - строчными. Не надо самодеятельности
%IP ДНС-сервера% = ip днс-сервера, обслуживающего Домен. Чаще всего - Контроллер домена. Например, 192.168.0.2
%хост КД% = hostname Контроллера домена. Например, dc01
%FQDN контроллера домена% = полный dns-адрес Контроллера домена. Например, dc01.domain.example
%Учетка% = имя пользователя домена. Не заблокирован, Без Суффикса. Например, Admin
%Версия% = версия действующего Сервера 1с. Например, 8.3.22.2283
%рабочая директория% = путь до исполняемых файлов Сервера 1с. Например, /opt/1cv8/x86_64/8.3.22.2283
на АД (synology DSM - samba-dc):
1. Добавить хост сервера 1с в ДНС (хост должен иметь статичный IP)
2. Создать пользователя (usr1c) с рандомным паролем. Без особых групп. Галочка про использовать DES - снята.
3. Войти от root по SSH на КД. (для synology +: sudo -i)
4. Добавить SPN к созданному пользователю
samba-tool spn add usr1cv8/%FQDN сервера 1с% usr1c
5. Отредактировать вручную данные пользователя (найти строку, начинающуюся на userPrincipalName и привести к виду, указанному ниже)
samba-tool user edit usr1c
userPrincipalName: usr1cv8/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
:wq
должно появиться сообщение "Modified User 'usr1c' successfully"
6. Экспортировать keytab
samba-tool domain exportkeytab /tmp/usr1cv8.keytab --principal=usr1cv8/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
должно появиться сообщение "Export one principal to /tmp/usr1cv8.keytab"
7. Скопировать keytab
Для synology:
Установить права для скачивания
chmod 755 /tmp/usr1cv8.keytab
войти через WinSCP
скопировать на копм файл "/tmp/usr1cv8.keytab"
на сервере 1с (ubuntu):
1. Настроить резолв
nano /etc/resolv.conf
nameserver %IP ДНС-сервера%
search %ПОЛНЫЙ АДРЕС ДОМЕНА%
сохранить
systemctl restart systemd-resolved
2. Проверить, что пинги по короткому dns (имени хоста КД) работают
3. Сверить время. Установить, если надо, синхронизацию
ntpdate %хост КД%
4. Установить (если не установлен) krb
apt install krb5-user
5. Настроить конфиг:
nano /etc/krb5.conf
[libdefaults]
default_realm = %ПОЛНЫЙ АДРЕС ДОМЕНА%
dns_lookup_realm = false
dns_lookup_kdc = false
default_tkt_enctypes = rc4-hmac
default_tgs_enctypes = rc4-hmac
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[realms]
%ПОЛНЫЙ АДРЕС ДОМЕНА% = {
kdc = %FQDN контроллера домена%
default_domain = %ПОЛНЫЙ АДРЕС ДОМЕНА%
}
[domain_realm]
%полный адрес домена% = %ПОЛНЫЙ АДРЕС ДОМЕНА% // тут именно маленькие буквы
.%полный адрес домена% = %ПОЛНЫЙ АДРЕС ДОМЕНА% // тут именно маленькие буквы
%ПОЛНЫЙ АДРЕС ДОМЕНА% = %ПОЛНЫЙ АДРЕС ДОМЕНА%
.%ПОЛНЫЙ АДРЕС ДОМЕНА% = %ПОЛНЫЙ АДРЕС ДОМЕНА%
[appdefaults]
pam = {
debug = true
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = false
krb4_convert = false
}
6. Проверить, что настроили правильно. Получить билет на учетку, данные от которой заранее известны и валидны
kinit %Учетка%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
пароль от %Учетка%
Если никаких сообщений об ошибках - все ок.
klist
Должно вывести что-то подобное
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: %Учетка%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
kdestroy
7. Найти рабочую директорию 1с
systemctl status system-srv1cv8*
будет что-то подобное "/opt/1cv8/x86_64/%Версия%
перейти в папку
cd %рабочая директория%
8. Скопировать в %рабочая директория% файл, полученный с КД "usr1cv8.keytab". Название должно быть таким же
9. Выставить права (если, конечно, пользователь и группа по-умолчанию)
chown usr1cv8:grp1cv8 usr1cv8.keytab
chmod 600 usr1cv8.keytab
10. Проверить, что файл читается и в нем тот пользователь, что требуется
klist -e -k -t %рабочая директория%/usr1cv8.keytab
должно вывести что-то похожее
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
1 15.03.2024 17:30:43 usr1cv8/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА% (arcfour-hmac)
11. Пробуем подключиться к ДК с помощью этого файла
kinit -k -t %рабочая директория%/usr1cv8.keytab usr1cv8/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
если нет ошибок klist
предполагаемый вывод:
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: usr1cv81/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
Valid starting Expires Service principal
15.03.2024 17:33:56 16.03.2024 03:33:56 krbtgt/%ПОЛНЫЙ АДРЕС ДОМЕНА%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
renew until 16.03.2024 17:33:56
если похоже - все ок.
kdestroy
в Базе Данных:
1. Администрирование - Настройки пользователей и прав - Пользователи
2. Открыть конкретного пользователя. В параметрах входа выбрать "Аутентификация операционной системы"
3. В открывшемся окне слева выбрать %полный адрес домена%, справа - пользователя
должно получиться \\%полный адрес домена%\%пользователь%
разницы ПРОПИСНЫЕ или строчные знаки - нет. НЕ работает с коротким именем (netBIOS, суффикс)домена
4. Записать и закрыть
5. Проверить
Важно!
В настройках подключения БД "Вариант аутентификации" должен быть отмечен кружок "Выбирать автоматически"
В файле *.v8i это параметр WA=1
Если установка 1С была штатной и по мануалу ничего не меняли, перезагружать сервер 1С не нужно.
Гуд Люк!)