SSSD сохраняет неправильную оболочку в кеше

Я использую SSSD для аутентификации пользователей в Linux на локальном сервере Active Directory (Windows). Он работает нормально, это моя конфигурация:

[sssd]
domains = my.domain
config_file_version = 2
services = nss, pam

[domain/my.domain]
ad_domain = my.domain
ad_server = my-dc.my.domain
krb5_realm = MY.DOMAIN
realmd_tags = joined-with-samba
cache_credentials = true
auth_provider = ad
id_provider = ad
krb5_store_password_if_offline = true
default_shell = /bin/bash
ldap_id_mapping = true
use_fully_qualified_names = false
fallback_homedir = /home/%u
access_provider = simple
simple_allow_groups = IT

Проблема в том, что у нас есть один пользователь, которому нужен zsh . Поэтому я изменил атрибут loginShell пользователей на / usr / bin / zsh . Это нормально работает при первом входе пользователя в систему. Но как только пользователь вошел в систему, и я сделал getent passwd username , он говорит, что оболочка пользователя - / bin / bash . Поэтому, когда пользователь выходит из системы и снова входит в систему, действительно bash используется как оболочка.

Когда я выполняю sss_cache -u username , оболочка снова устанавливается правильно, и пользователь получает правильная оболочка при входе в систему. Я не хочу отключать кеширование, потому что любой простой контроллера домена не должен влиять на вход в систему пользователей Linux.

Я попытался удалить default_shell , но это изменило только то, что оболочка по умолчанию пуста, а не / bin / bash , такое же поведение.

4
задан 22 August 2019 в 12:20
2 ответа

Поскольку другой ответ совершенно неверен, вот фактическое решение (изhttps://lists.fedorahosted.org/archives/list/sssd-users@lists.fedorahosted.org/thread/BXFRHRI5VCLTQNE565ZVGZTEGALSNNJY/):

Интересно, подключается ли SSSD к глобальному каталогу для некоторых поисков но не другие, что дает атрибуты POSIX как «удаленные», когда SSSD ищет информацию в GC и эффективно удаляет их из кеша.

Установка: ad_enable_gc = false в разделе [domain]докажет, верна ли эта гипотеза.

Вот решение: отключите поиск в глобальном каталоге. Большое спасибо @Lennie , который предложил это в первую очередь, но я не сделал этого до сих пор.

0
ответ дан 23 April 2020 в 06:57

Вы можете использовать значение по умолчанию в разделе nss.

[nss]
default_shell = /bin/bash

И переопределить с помощью override_shell = <ваша оболочка>

override_shell (string)
    Override the login shell for all users. This option can be specified globally in the [nss] section or per-domain. 

Edit1: для конкретных групповых изменений

[sssd]
config_file_version = 2
services = nss, pam
domains=DOMAIN_GROUP1,DOMAIN_GROUP2,DOMAIN

[nss]
default_shell = /bin/bash

[domain/DOMAIN_GROUP1]
id_provider = ad
ad_domain = mydomain.local
ad_server = mydc01.domain.local,mydc02.domain.local,mydc03.domain.local
# Restrict to group members
ldap_user_search_base = DC=domain,DC=local?subtree?(memberOf=CN=group1,OU=Groups,DC=domain,DC=local)
# Shell
override_shell = /shell/path/for/group1
# Homedir
override_homedir = /home/%u

#same way for other groups
[domain/DOMAIN_GROUP2]
..........
..........
..........

Надеюсь, это поможет.

2
ответ дан 3 December 2019 в 03:53

Теги

Похожие вопросы