Подробный гайд: Восстановление Fly, SSH, su в Astra Linux после установки Dallas Lock - Часть 5
9. Если нет доступа: восстановление через rescue
Если ни SSH, ни su, ни локальный вход не работают, используйте аварийную загрузку.
9.1. Через GRUB в rescue
В GRUB:
- Нажмите
eна нужном пункте.
2. В строке ядра добавьте:
systemd.unit=rescue.target
3. Загрузитесь.
Если попросит пароль администратора, введите его.
Если нужно перемонтировать корень на запись:
mount -o remount,rw /
9.2. Через init=/bin/bash
Если rescue не помогает или пароль недоступен:
В строке ядра GRUB временно укажите:
init=/bin/bash
После загрузки:
mount -o remount,rw /
Дальше можно:
- сменить пароль root:
passwd root
- разблокировать пользователя:
passwd username
- отредактировать PAM;
- убрать
/etc/nologin; - восстановить конфиги из резервной копии.
После изменений:
sync
exec /sbin/init
Или принудительная перезагрузка, если система не переходит в нормальный режим:
reboot -f
Внимание: если используется шифрование, вам всё равно нужен пароль/ключ шифрования. Если включён пароль на GRUB или безопасная загрузка ограничивает редактирование, могут потребоваться другие процедуры.
9.3. Через Live-носитель и chroot
Для зашифрованных/LVM-систем общий порядок такой:
# Открыть шифрованный раздел
cryptsetup open /dev/XXXX cryptroot
# Активировать LVM
vgchange -ay
# Смонтировать корневой раздел
mount /dev/mapper/XXXX /mnt
# Подготовить окружение
for d in dev proc sys run; do mount --bind /$d /mnt/$d; done
# Войти
chroot /mnt
Дальше выполняете диагностику и правки как в обычной системе.
10. Проверка после исправлений
После каждого изменения проверяйте не один, а несколько сценариев.
10.1. Проверка учётки
U=username
id "$U"
chage -l "$U"
passwd -S "$U"
faillock --user "$U" 2>/dev/null || true
10.2. Проверка su
su - "$U" -c 'id; echo HOME=$HOME; echo SHELL=$SHELL'
Если su не нужен по политике, используйте:
runuser -l "$U" -c 'id'
sudo -u "$U" id
10.3. Проверка SSH
ssh -vvv "$U"@localhost 'echo ssh-ok'
ssh -vvv -o PreferredAuthentications=password -o PubkeyAuthentication=no "$U"@localhost 'echo password-ok'
Если нужно проверить ключ:
ssh -vvv -o PreferredAuthentications=publickey -o IdentitiesOnly=yes "$U"@localhost 'echo key-ok'
10.4. Проверка пользовательского окружения
runuser -u "$U" -- env | grep -E 'DISPLAY|XAUTHORITY|DBUS_SESSION_BUS_ADDRESS|XDG_RUNTIME_DIR|LD_PRELOAD|LD_LIBRARY_PATH'
runuser -u "$U" -- id
runuser -u "$U" -- dbus-launch true
10.5. Проверка графики
Перезапустите дисплейный менеджер, если это допустимо:
systemctl restart display-manager
Или перезагрузите систему, если менялись:
/etc/ld.so.preload;- переменные окружения;
- ядро/модули;
- PAM;
- службы безопасности.
Проверьте:
systemctl status display-manager --no-pager
loginctl list-sessions
journalctl -b -p warning..err --no-pager | tail -n 100
10.6. Создать тестового пользователя
Очень полезный шаг. Если тестовый пользователь работает, а реальный нет — проблема в профиле/домашнем каталоге/группах/метках конкретного пользователя.
useradd -m -s /bin/bash diaguser
passwd diaguser
id diaguser
su - diaguser -c 'id'
ssh diaguser@localhost 'echo ok'
После диагностики удалите:
userdel -r diaguser
11. Типовые ошибки и решения
11.1. Permission denied (publickey,password)
Причины:
- неверный пароль;
- аккаунт заблокирован;
- пароль истёк;
PasswordAuthentication no;AllowUsers/DenyUsers;- PAM-модуль СЗИ запрещает вход;
- ключ не подходит;
- неверные права на
~/.ssh.
Что делать:
passwd -S username
chage -l username
faillock --user username 2>/dev/null || true
/usr/sbin/sshd -T | grep -Ei 'passwordauthentication|pubkeyauthentication|allowusers|denyusers|allowgroups|denygroups|authenticationmethods'
ls -ld /home/username/.ssh /home/username/.ssh/authorized_keys
11.2. Connection closed by authenticating user
Причины:
- сессия открывается и сразу закрывается;
ForceCommand;- пользовательский профиль завершает работу;
pam_execскрипт СЗИ падает;- оболочка отсутствует;
- блокировка со стороны СЗИ.
Проверка:
ssh username@localhost /bin/true
ssh username@localhost 'echo ok'
getent passwd username | cut -d: -f7
grep -R 'ForceCommand' /etc/ssh/sshd_config /etc/ssh/sshd_config.d 2>/dev/null
grep -R 'pam_exec' /etc/pam.d 2>/dev/null
11.3. Your account has expired / Password expired
chage -l username
passwd username
chage -E -1 username
11.4. Authentication failure в su
Проверка:
tail -n 100 /var/log/auth.log | grep su
grep -n 'pam_rootok' /etc/pam.d/su
grep -n 'pam_wheel' /etc/pam.d/su
SU_BIN=$(readlink -f "$(command -v su)")
ls -l "$SU_BIN"
11.5. su: Authentication service cannot retrieve authentication info
Возможные причины:
- NSS/LDAP/SSSD недоступны;
- повреждён
/etc/passwdили/etc/shadow; - PAM не может получить данные.
Проверка:
timeout 5 getent passwd username; echo rc=$?
timeout 5 id username; echo rc=$?
systemctl status sssd --no-pager || true
pwck -r
grpck -r
11.6. Fly возвращается в экран входа
Проверка:
tail -n 200 ~/.xsession-errors
journalctl _UID=$(id -u username) -b --no-pager | tail -n 200
journalctl -u display-manager -b --no-pager | tail -n 200
dmesg -T | grep -Ei 'segfault|denied|blocked|apparmor|parsec' | tail -n 50
11.7. Чёрный экран после входа
Проверка:
grep -E '\(EE\)|\(WW\)' /var/log/Xorg.0.log 2>/dev/null
grep -E '\(EE\)|\(WW\)' ~/.local/share/xorg/Xorg.0.log 2>/dev/null
runuser -u username -- env | grep -E 'DISPLAY|XAUTHORITY|LD_PRELOAD|LD_LIBRARY_PATH|QT_QPA_PLATFORM|GTK_MODULES'
Что можно временно попробовать:
sudo -u username bash -lc '
mkdir -p ~/fly-config-backup
mv ~/.config/fly* ~/fly-config-backup/ 2>/dev/null
mv ~/.config/Fly* ~/fly-config-backup/ 2>/dev/null
mv ~/.Xauthority ~/fly-config-backup/ 2>/dev/null
mv ~/.ICEauthority ~/fly-config-backup/ 2>/dev/null
'
11.8. Fly вообще не отображается в списке сессий
ls -l /usr/share/xsessions/
grep -E 'Exec|TryExec' /usr/share/xsessions/*.desktop 2>/dev/null
dpkg -l | grep -Ei 'fly'
Если файл сессии отсутствует, возможно, пакет окружения был удалён или установка СЗИ привела к конфликту пакетов.
11.9. Порт 22 не слушается
systemctl status ssh sshd --no-pager || true
ss -ltnp | grep ':22'
systemctl cat ssh.service ssh.socket 2>/dev/null | grep -E 'ExecStart|Listen'
Проверьте:
- служба запущена;
- не используется socket activation;
- не изменён порт;
- нет другого процесса на порту 22.
11.10. Ошибка конфигурации sshd
/usr/sbin/sshd -t
Исправьте файл, на который ругается вывод.
Обычно это:
/etc/ssh/sshd_config
/etc/ssh/sshd_config.d/*.conf
После правки:
/usr/sbin/sshd -t
systemctl reload ssh || systemctl restart ssh
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.