Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Описание проблемы
При последовательном выполнении следующих условий:
- Компьютер под управлением 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 в секции [global] и имеют следующий вид:
Блок кода |
---|
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=<имя_пользователя>
Для устранения проблемы:
Желательно временно запретить вход пользователей, для чего создать файл /run/nologin (или /etc/nologin):
Предупреждение После создания любого из файлов /run/nologin или /etc/nologin вход будет запрещен всем пользователям, включая администраторов. Запрет будет действовать до удаления файлов. При перезагрузке файлы будут удалены автоматически. Текущая сессия после создания файла будет продолжаться, но, если выйти из сессии не удалив файл, то для следующего входа необходимо будет перезагрузить компьютер. Команда для создания файлаВременно запретить вход пользователя:
Command sudo passwd -l "$user"touch /run/nologin Принудительно прекратить все пользовательские сессии пользователя:
Command sudo loginctl terminate-user "$user"
- Установить Получить старые и новые идентификаторы пользователя. Для дальнейшего использования идентификаторы сохраняются в переменных окружения:
Новый UID:
Command new_UID=`sudo -u "$user" id -u``getent passwd $user | cut -d: -f3` Новый GID:
Command new_GID=`sudo -u "$user" id -g``getent passwd $user | cut -d: -f4` Ранее применявшийся UID:
Command old_UID=$(sudo ls -lnd `getent passwd "$user" | cut -d: -f6`/Desktop | cut -d" " -f 3) Ранее применявшийся GID
Command old_GID=$(sudo ls -lnd `getent passwd "$user" | cut -d: -f6`/Desktop | cut -d" " -f 4)
Опционально: проверить наличие файлов, принадлежащих пользователю и не находящихся в его домашнем каталоге:
Command sudo find / -type f,d ! -path "/home/$user/*" ! -path "/proc/*" ! -path "/sys/*" \( -user "$user" -or -group "$user" \) -exec stat {} \; - Далее возможны два варианта: с сохранением ранее применявшихся идентификаторов или с назначением новых:
- Вариант 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 при этом не требуется;
- Вариант 1. Для сохранения ранее применявшихся идентификаторов и ранее использовавшегося алгоритма установления соответствия:
Опционально проконтролировать использование старых и новых атрибутов в различных конфигурационных файлах и при необходимости произвести замены идентификаторов в соответствии с выбранным ранее вариантом. Например:
Использование старых идентификаторов в часто применяемых конфигурационных файлах:
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
Использование старых идентификаторов в ACL (см. Списки управления доступом к файловым объектам (ACL) в Astra Linux):
Command sudo getfacl -Rsnt / | egrep "^(# file|(USER|user|GROUP|group)\s+($new_GID|$new_UID|$old_GID|$old_UID))" | awk '/# file/{file=$0;next} { print $0,file }' Информация ACL автоматически присваиваются разделяемым устройствам (приводы оптических дисков, клавиатура, джойстик, мышь мультимедийные устройства и пр., подробнее см. Разделение прав доступа к устройствам CD/DVD). Наличие таких ACL со старыми идентификаторами не критично для работы пользователей.
Если был запрещен вход пользователей, то разрешить вход пользователей:
Command sudo rm /run/nologin
Разрешить вход пользователя:
Command sudo passwd -u "$user"
Общий сценарий
Сценарий, выполняющий указанные выше действия, приведен ниже. Сценарий использует два аргумента: имя пользователя и название варианта действий: old с сохранением идентификаторов, new - c обновлением.
. Опциональные действия по проверке файловых объектов вне домашнего каталога пользователя в сценарий не включены. Текст сценария:
Раскрыть | ||
---|---|---|
|