Изменение командной оболочки для доменного пользователя в доверенном домене MS AD на Astra Linux
Доменные пользователи из Active Directory не отображаются в /etc/passwd локально — их данные подгружаются через SSSD/Winbind при аутентификации. Поэтому стандартные команды chsh или usermod не работают для доменных учётных записей.
Способы изменения shell для доменных пользователей
Способ 1: Глобальное переопределение через sssd.conf (рекомендуется)
Этот метод изменяет shell для всех доменных пользователей на данном хосте.
1. Откройте конфигурационный файл:
sudo nano /etc/sssd/sssd.conf
2. В секции вашего домена добавьте параметр override_shell:
[domain/example.com]
id_provider = ad
access_provider = ad
override_shell = /bin/bash
3. Убедитесь, что указанный shell присутствует в /etc/shells:
grep "/bin/bash" /etc/shells
4. Перезапустите SSSD и очистите кеш:
sudo systemctl restart sssd
sudo sss_cache -E # или вручную: sudo rm -rf /var/lib/sss/db/*
Примечание для Astra Linux:
В Astra Linux Special Edition по умолчанию используется sssd как рекомендуемый механизм интеграции с AD.
Способ 2: Локальное переопределение через sss_override (для отдельных пользователей)
Инструмент sss_override позволяет задать параметры точечно для конкретного пользователя локально на клиенте.
Синтаксис:
# Изменить shell для конкретного доменного пользователя
sudo sss_override user-add <DOMAIN\\username> -s /bin/zsh
# Просмотреть переопределения
sudo sss_override user-find <DOMAIN\\username>
# Удалить переопределение
sudo sss_override user-del <DOMAIN\\username>
Пример:
sudo sss_override user-add EXAMPLE\\ivanov -s /bin/bash
sudo systemctl restart sssd
Важно:
- Переопределения хранятся только в кеше SSSD и будут утеряны при его очистке.
- В доменах FreeIPA команда
sss_overrideне поддерживается. - Для применения изменений требуется перезапуск службы
sssd.
Способ 3: Атрибут loginShell в Active Directory (централизованное управление)
Если в вашей инфраструктуре используется RFC2307-схема или расширенная схема AD с UNIX-атрибутами:
- Откройте Active Directory Users and Computers (с включённым режимом "Advanced Features").
- Найдите пользователя → Свойства → вкладка Attribute Editor.
- Измените атрибут
loginShellна нужное значение (например,/bin/bash).
4. На клиенте Astra Linux в sssd.conf убедитесь, что включена поддержка схемы AD:
[domain/example.com]
ldap_schema = ad
shell_fallback = /bin/bash # резервный shell, если loginShell не задан
5. Очистите кеш и перезапустите SSSD:
sudo sss_cache -u username@domain.com
sudo systemctl restart sssd
Способ 4: Переопределение по группам (продвинутый сценарий)
Если требуется назначать разные shell'и в зависимости от принадлежности к группе домена:
# /etc/sssd/sssd.conf
[sssd]
domains = example.com
[domain/example.com]
id_provider = ad
# Переопределение для всех пользователей домена
override_shell = /bin/sh
# Переопределение для конкретной группы (требует SSSD ≥ 1.13)
[override]
override_shell = /bin/bash
override_shell_gid = 10001 # GID группы в домене
Детали реализации зависят от версии SSSD. См. документацию.
Проверка результата
После применения изменений:
- Выйдите из сессии доменного пользователя и войдите снова.
2. Проверите текущий shell:
echo $SHELL
getent passwd username@domain.com | cut -d: -f7
3. Для диагностики используйте:
sss_cache -u username@domain.com # принудительное обновление кеша
journalctl -u sssd -f # мониторинг логов SSSD
Устранение неполадок
| Проблема | Решение |
|---|---|
chsh: user does not exist in /etc/passwd |
Ожидаемое поведение для доменных пользователей. Используйте sss_override или sssd.conf. |
| Изменения не применяются | Очистите кеш: sudo sss_cache -E и перезапустите sssd. |
| Shell сбрасывается после перезагрузки | Убедитесь, что override_shell прописан в правильной секции [domain/...] файла sssd.conf. |
| Пользователь не может войти после смены shell | Проверьте, что указанный shell есть в /etc/shells и имеет корректные права. |
Источники и дополнительная документация
- Официальная документация Astra Linux: Ввод в домены Windows AD - wiki.astralinux.ru/pages/viewpage.action?pageId=27361515
- Справка по
sss_override: Настройка размещения домашних каталогов - wiki.astralinux.ru/pages/viewpage.action?pageId=302044924 - Server Fault: Changing shell with SSSD/AD - serverfault.com/questions/790577
Рекомендация для Astra Linux:
Используйте sssd вместо winbind для интеграции с AD — это рекомендуемый и более функциональный способ. Перед внесением изменений в конфигурацию создайте резервную копию /etc/sssd/sssd.conf.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.