Изменение командной оболочки для доменного пользователя в доверенном домене MS AD на Astra Linux

Руководство по изменению командной оболочки для доменных пользователей MS AD в Astra Linux через sssd.conf и sss_override

2026.05.30                  


Изменение командной оболочки для доменного пользователя в доверенном домене MS AD на Astra LinuxИзменение командной оболочки для доменного пользователя в доверенном домене 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-атрибутами:

  1. Откройте Active Directory Users and Computers (с включённым режимом "Advanced Features").
  2. Найдите пользователя → Свойства → вкладка Attribute Editor.
  3. Измените атрибут 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. См. документацию.


Проверка результата

После применения изменений:

  1. Выйдите из сессии доменного пользователя и войдите снова.
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.


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта