Гайд: как перенести пользователей в Астра Линукс, мигрируя с другой ОС или в домен - Часть 2
Начало в Части 1
7. Архитектура доменной миграции
Типовая схема:
┌────────────────────┐
│ Доменный сервер │
│ ALD Pro / FreeIPA │
│ LDAP, Kerberos, │
│ DNS, пользователи │
└─────────┬──────────┘
│
│ сеть, DNS, Kerberos
│
┌─────────┴──────────┐
│ Клиентские ПК │
│ Астра Линукс │
│ ввод в домен │
│ вход доменных │
│ пользователей │
└────────────────────┘
Клиентский компьютер:
- Имеет корректное сетевое имя.
- Использует правильный DNS.
- Имеет синхронизированное время.
- Вводится в домен.
- Получает возможность пускать доменных пользователей.
- Создает домашние каталоги при первом входе.
8. Подготовка клиента Астра Линукс к вводу в домен
8.1. Настройка имени компьютера
Проверьте текущее имя:
hostnamectl
Установите правильное имя:
sudo hostnamectl set-hostname ws01.example.local
Проверьте /etc/hosts:
nano /etc/hosts
Пример:
127.0.0.1 localhost
127.0.1.1 ws01.example.local ws01
Если у машины есть реальный внутренний IP, можно указать его:
192.168.10.15 ws01.example.local ws01
8.2. Настройка DNS
Клиент должен использовать DNS-сервер домена.
Проверьте:
resolvectl status
или:
cat /etc/resolv.conf
Пример корректной настройки:
nameserver 192.168.10.10
search example.local
Если сеть управляется через NetworkManager, DNS обычно задается в настройках соединения.
Проверить, что доменное имя резолвится:
ping example.local
ping ald.example.local
Для FreeIPA/ALD Pro также полезно проверить службы:
nslookup -type=SRV _ldap._tcp.example.local
nslookup -type=SRV _kerberos._udp.example.local
8.3. Синхронизация времени
Для Kerberos критично точное время.
Проверьте время:
timedatectl
Включите синхронизацию:
sudo timedatectl set-ntp true
Проверьте службу времени:
systemctl status chrony
или:
systemctl status systemd-timesyncd
9. Ввод Астра Линукс в домен ALD Pro / FreeIPA
Дальнейшие команды предполагают, что домен работает на базе FreeIPA/ALD Pro.
9.1. Установка клиентских пакетов
Обновите пакеты:
sudo apt update
Установите необходимые пакеты:
sudo apt install freeipa-client sssd oddjob-mkhomedir
В зависимости от редакции и версии названия пакетов могут немного отличаться.
Если пакет не находится, выполните поиск:
apt search freeipa-client
apt search ipa-client
apt search sssd
9.2. Ввод в домен через ipa-client-install
Если DNS настроен правильно, часто достаточно:
sudo ipa-client-install --mkhomedir
Если автоматическое обнаружение не срабатывает, укажите параметры вручную:
sudo ipa-client-install \
--domain=example.local \
--realm=EXAMPLE.LOCAL \
--server=ald.example.local \
--mkhomedir
Где:
--domain— DNS-домен;--realm— Kerberos-область, обычно заглавными;--server— адрес сервера домена;--mkhomedir— автоматически создавать домашний каталог при первом входе.
Во время установки система может запросить:
- подтверждение обнаруженного домена;
- учетную запись администратора домена;
- пароль администратора.
9.3. Проверка ввода в домен
Проверка 1: конфигурация клиента.
sudo ipa-client-install --status
Если такой параметр не поддерживается в вашей версии, проверьте конфигурационные файлы:
cat /etc/ipa/default.conf
Пример содержимого:
[global]
basedn = dc=example,dc=local
realm = EXAMPLE.LOCAL
domain = example.local
server = ald.example.local
host = ws01.example.local
Проверка 2: видны ли доменные пользователи.
getent passwd ivanov@example.local
или:
id ivanov@example.local
Пример ожидаемого вывода:
uid=10001(ivanov@example.local) gid=10001(ivanov@example.local) groups=10001(ivanov@example.local)
Проверка 3: проверка аутентификации.
su - ivanov@example.local
или попробуйте войти в графическом режиме.
10. Автоматическое создание домашних каталогов
Если пользователь входит впервые, его домашний каталог должен быть создан автоматически.
Установите и включите oddjob-mkhomedir:
sudo apt install oddjob-mkhomedir
sudo systemctl enable --now oddjobd
В некоторых редакциях может потребоваться включить PAM-модуль создания домашнего каталога:
sudo pam-auth-update
В интерактивном меню включите пункт, связанный с созданием домашнего каталога, например:
Create home directory on login
или:
mkhomedir
Также можно проверить конфигурацию:
grep mkhomedir /etc/pam.d/*
11. Настройка домашних каталогов для доменных пользователей
По умолчанию домашний каталог может создаваться как:
/home/ivanov
или, при использовании нескольких доменов:
/home/example.local/ivanov
Настройка может выполняться в /etc/sssd/sssd.conf.
Пример:
[domain/example.local]
fallback_homedir = /home/%u
Если хотите разделять пользователей по доменам:
[domain/example.local]
fallback_homedir = /home/%d/%u
Где:
%u— имя пользователя;%d— домен.
После изменения sssd.conf:
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd
sudo sss_cache -E
12. Перенос локального пользователя в доменного
Очень частая ситуация:
- пользователь был локальным:
/home/ivanov; - теперь он будет доменным:
ivanov@example.local; - нужно сохранить файлы и настроить вход через домен.
12.1. Проверка доменного пользователя
Получите UID и GID доменного пользователя:
id ivanov@example.local
Пример:
uid=20001(ivanov@example.local) gid=20001(ivanov@example.local) groups=20001(ivanov@example.local)
12.2. Резервная копия старого домашнего каталога
sudo tar -czf /backup/home-ivanov-before-domain.tar.gz /home/ivanov
12.3. Смена владельца существующего каталога
Если домашний каталог останется /home/ivanov:
sudo chown -R 20001:20001 /home/ivanov
sudo chmod 700 /home/ivanov
Но лучше получить UID и GID автоматически:
DOMAIN_USER="ivanov@example.local"
HOME_DIR="/home/ivanov"
UID_NUM=$(id -u "$DOMAIN_USER")
GID_NUM=$(id -g "$DOMAIN_USER")
sudo chown -R "$UID_NUM:$GID_NUM" "$HOME_DIR"
sudo chmod 700 "$HOME_DIR"
12.4. Если доменный пользователь должен иметь другой домашний каталог
Например, локальный пользователь был ivanov, а доменный домашний каталог будет:
/home/example.local/ivanov
Тогда можно перенести данные:
DOMAIN_USER="ivanov@example.local"
OLD_HOME="/home/ivanov"
NEW_HOME="/home/example.local/ivanov"
UID_NUM=$(id -u "$DOMAIN_USER")
GID_NUM=$(id -g "$DOMAIN_USER")
sudo mkdir -p "$NEW_HOME"
sudo rsync -aHAX "$OLD_HOME/" "$NEW_HOME/"
sudo chown -R "$UID_NUM:$GID_NUM" "$NEW_HOME"
sudo chmod 700 "$NEW_HOME"
13. Массовый перенос локальных пользователей в доменные
Допустим, у вас есть список локальных пользователей, которые теперь стали доменными.
Создайте файл migration.csv:
ivanov,ivanov@example.local
petrov,petrov@example.local
sidorov,sidorov@example.local
Скрипт:
#!/bin/bash
INPUT_FILE="migration.csv"
while IFS=, read -r localuser domainuser; do
if [ -z "$localuser" ] || [ -z "$domainuser" ]; then
continue
fi
OLD_HOME="/home/$localuser"
if [ ! -d "$OLD_HOME" ]; then
echo "Домашний каталог $OLD_HOME не найден."
continue
fi
if ! id "$domainuser" &>/dev/null; then
echo "Доменный пользователь $domainuser не найден."
continue
fi
UID_NUM=$(id -u "$domainuser")
GID_NUM=$(id -g "$domainuser")
echo "Мигрируем $localuser -> $domainuser"
sudo chown -R "$UID_NUM:$GID_NUM" "$OLD_HOME"
sudo chmod 700 "$OLD_HOME"
done < "$INPUT_FILE"
Сделайте исполняемым:
chmod +x migrate_to_domain.sh
./migrate_to_domain.sh
14. Создание пользователей в домене централизованно
Если домен на базе FreeIPA/ALD Pro, пользователей можно создавать через веб-интерфейс, командой ipa или через скрипты.
14.1. Создание одного пользователя в FreeIPA
Вариант с запросом пароля:
ipa user-add ivanov \
--first=Иван \
--last=Иванов \
--displayname="Иван Иванов" \
--email=ivanov@example.local \
--password
Вариант со случайным паролем:
ipa user-add ivanov \
--first=Иван \
--last=Иванов \
--displayname="Иван Иванов" \
--email=ivanov@example.local \
--random
Команда покажет одноразовый пароль или результат операции. Его нужно безопасно передать пользователю.
14.2. Массовое создание пользователей
Создайте файл ipa_users.csv:
ivanov,Иван,Иванов,ivanov@example.local
petrov,Петр,Петров,petrov@example.local
sidorov,Сидор,Сидоров,sidorov@example.local
Скрипт:
#!/bin/bash
INPUT_FILE="ipa_users.csv"
while IFS=, read -r login first last email; do
if ipa user-show "$login" &>/dev/null; then
echo "Пользователь $login уже существует."
continue
fi
echo "Создаем пользователя $login"
ipa user-add "$login" \
--first="$first" \
--last="$last" \
--displayname="$first $last" \
--email="$email" \
--random
done < "$INPUT_FILE"
Важно:
Не храните пароли в открытых файлах. Лучше использовать --random, одноразовые пароли или защищенный процесс выдачи паролей.
14.3. Добавление пользователей в группы домена
Создать группу:
ipa group-add developers
Добавить пользователя:
ipa group-add-member developers --users=ivanov
Проверить:
ipa group-show developers
15. Настройка прав администратора в домене
Если нужно разрешить доменным пользователям выполнять sudo, создайте соответствующие правила.
15.1. Простой вариант: группа администраторов
В FreeIPA можно добавить пользователей в привилегированную группу, например admins, но это нужно делать осознанно.
ipa group-add-member admins --users=petrov
15.2. Настройка sudo через FreeIPA
Пример создания правила:
ipa sudorule-add allow_admin_commands
ipa sudorule-add-user allow_admin_commands --users=petrov
ipa sudorule-add-host allow_admin_commands --hosts=ws01.example.local
Разрешить все команды:
ipa sudorule-add-allow-command allow_admin_commands --sudocmds='all'
Проверить:
ipa sudorule-show allow_admin_commands
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.