Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Описание проблемы
При последовательном выполнении следующих условий:
- Компьютер под управлением Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) без установленных оперативных обновлений или с установленным оперативным обновлением БЮЛЛЕТЕНЬ № 2021-1126SE17 (оперативное обновление 1.7.1) введен в домен Windows AD с использованием инструмента astra-winbind (см. Быстрый ввод Astra Linux в AD Windows);
- После ввода компьютера в домен выполнялись входы доменных пользователей (соответственно, создавались домашние каталоги этих пользователей);
- После создания домашних каталогов доменных пользователей установлено обновление БЮЛЛЕТЕНЬ № 2022-0819SE17 (оперативное обновление 1.7.2);
нарушается вход доменных пользователей в консольную и графическую сессию. Проблема вызвана устранением неточностей в работе алгоритма сопоставления идентификаторов пользователей/групп Astra Linux (UID/GID) и доменных пользователей/групп Windows (SID). Параметры сопоставления по умолчанию задаются в конфигурационном файле службы samba /etc/samba/smb.conf и имеют следующий вид:
Блок кода |
---|
idmap config * : range = 3000-7999 idmap config * : backend = tdb idmap config <имя_рабочей_группы_или_домена> : range = 10000-299999 idmap config <имя_рабочей_группы_или_домена> : backend = rid |
При этом в зависимости от используемых алгоритмов (установленных обновления) для сопоставления Для сопоставления идентификаторов исходно используется первый диапазон идентификаторов (3000-7999) или, а после установки обновления 1.7.2 , используется второй диапазон (10000-299999).
Устранение проблемы
Далее предполагается, что:
- Обновление БЮЛЛЕТЕНЬ № 2022-0819SE17 (оперативное обновление 1.7.2) установлено;
- Настройки выполняются в сессии администратора с правами суперпользователя (администратора с высоким уровнем целостности при работе с включенным МКЦ) или в сценарии, выполняющемся от имени такого администратора;
Для удобства имя пользователя, для которого выполняются настройки сохранено в переменной окружения user:
Command user=<имя_пользователя>
Для устранения проблемы:
Временно запретить вход пользователя:
Command sudo passwd -l "$user" Принудительно прекратить все пользовательские сессии:
Command sudo loginctl terminate-user "$user"
- Установить старые и новые идентификаторы пользователя. Для дальнейшего использования идентификаторы сохраняются в переменных окружения:
Новый UID:
Command new_UID=`sudo -u "$user" id -u` Новый GID:
Command new_GID=`sudo -u "$user" id -g` Ранее применявшийся UID:
Command old_UID=$(ls -lnd `getent passwd "$user" | cut -d: -f6` | cut -d" " -f 3) Ранее применявшийся GID
Command old_GID=$(ls -lnd `getent passwd "$user" | cut -d: -f6` | cut -d" " -f 4)
- Далее возможны два варианта: с сохранением ранее применявшихся идентификаторов или с назначением новых:
- Вариант 1. Для сохранения ранее применявшихся идентификаторов и ранее использовавшегося алгоритма установления соответствия:
Заменить в атрибутах файловых объектов новые идентификаторы старыми
Command sudo find / -type f,d ! -path "/proc/*" -group $new_GID -exec chown :$old_GID {} \;
sudo find / -type f,d ! -path "/proc/*" -user $new_UID -exec chown $old_UID {} \;Из конфигурационного файла службы samba /etc/samba/smb.conf удалить строки с новым диапазоном идентификаторов. Это строки вида:
Блок кода idmap config <имя_рабочей_группы_или_домена> : range = 10000-299999 idmap config <имя_рабочей_группы_или_домена> : backend = rid
Для удаления можно использовать команду:
Command sudo sed -i "/^\s*idmap\s\+config\s\+[^*]\+/d" /etc/samba/smb.conf Перезапустить службу samba и связанные с ней службы:
Command sudo systemctl restart smbd nmbd winbind
Вариант 2. Для применения новых идентификаторов:
Заменить в атрибутах файловых объектов старые идентификаторы на новые:
Command sudo find / -type f,d ! -path "/proc/*" -group $old_GID -exec chown :$new_GID {} \;
sudo find / -type f,d ! -path "/proc/*" -user $old_UID -exec chown $new_UID {} \;Внесение изменений в конфигурацию samba при этом не требуется;
Опционально проконтролировать использование старых и новых атрибутов в различных конфигурационных файлах. Например:
Command sudo egrep -r "($new_GID|$new_UID|$old_GID|$old_UID)" /etc/parsec /etc/fstab /etc/security/pam_mount.conf.xml /etc/samba/smb.conf
и при необходимости произвести замены идентификаторов в соответствии с выбранным ранее вариантом;
Разрешить вход пользователя:
Command sudo passwd -u "$user"
Общий сценарий
Сценарий, выполняющий указанные выше действия, приведен ниже. Сценарий использует два аргумента: имя пользователя и название варианта действий: old с сохранением идентификаторов, new - c обновлением.
Текст сценария:
Раскрыть | ||
---|---|---|
|