
Ich versuche, verschiedene Login-Shells für verschiedene Benutzer einer AD-Domäne zu definieren.wie hier beschrieben. Ziel ist es, Mitgliedern einer bestimmten Gruppe die Anmeldung zu verweigern, ihnen jedoch SSH-Tunneling zu ermöglichen.
Hier unten ist die Datei /etc/sssd/sssd.conf
. MYDOMAIN.GLOBAL ist die vom AD bereitgestellte Standarddomäne. Die folgende Konfiguration definiert eine Testdomäne MYDOMAIN_TEST.GLOBAL, die nicht im AD enthalten ist, als Domäne für diese eingeschränkten Benutzer. (Dies ist nur eine Konfiguration zum Testen: Später override_shell = /bin/zsh
wird im Domänenabschnitt MYDOMAIN_TEST.GLOBAL durch ersetzt override_shell = /sbin/nologin
.)
[sssd]
domains = MYDOMAIN.GLOBAL,MYDOMAIN_TEST.GLOBAL
config_file_version = 2
services = nss, pam
[nss]
default_shell = /bin/bash
[domain/MYDOMAIN.GLOBAL]
ad_server = ad.mydomain.global
ad_domain = MYDOMAIN.GLOBAL
ldap_user_search_filter = (memberOf=CN=AdminsGroup,OU=Groups,DC=MYDOMAIN,DC=GLOBAL)
id_provider = ad
simple_allow_groups = [email protected]
override_shell = /bin/bash
[domain/MYDOMAIN_TEST.GLOBAL]
ad_server = ad.mydomain.global
ad_domain = MYDOMAIN.GLOBAL
ldap_user_search_filter = (memberOf=CN=LimitedGroup,OU=Groups,DC=MYDOMAIN,DC=GLOBAL)
id_provider = ad
simple_allow_groups = [email protected]
override_shell = /bin/zsh
Ein Mitglied von MYDOMAIN.GLOBAL kann sich über SSH anmelden, während ein Mitglied von MYDOMAIN_TEST.GLOBAL dies nicht kann und die Fehlermeldung „Zugriff verweigert, bitte versuchen Sie es erneut“ oder „Authentifizierung fehlgeschlagen“ erhält.
Die sssd
Logfiles zeigen keine Fehler an.
Warum das?
Muss MYDOMAIN_TEST.GLOBAL im AD vorhanden sein? Wenn ja, ist es möglich, dies irgendwie zu umgehen und sss mit verschiedenen „lokalen Kategorien“ von Benutzern zu konfigurieren, um das zu tun, was ich will?
(Hinweis: Dies kann anscheinend mit nlscd durchgeführt werden, dagemäß dieser FrageUnddiese andere Frage, aber es erfordert einen LDAP-Server und die Konfiguration zur Verwendung eines AD ist ein ganz anderes Problem.)
Antwort1
Dies sollte mit neueren Versionen von SSDD funktionieren:
[sssd]
domains = MYDOMAIN_ADMINS,MYDOMAIN_LIMITED,MYDOMAIN_ALL
config_file_version = 2
services = nss, pam
[nss]
default_shell = /bin/bash
[domain/MYDOMAIN_ADMINS]
ad_server = srv001.company.local,srv002.company.local,srv003.company.local,srv004.company.local
ad_domain = company.local
ldap_user_search_base = DC=company,DC=local?subtree?(memberOf=CN=unix_admins,OU=Groupes,OU=Main Office,DC=company,DC=local)
id_provider = ad
override_shell = /usr/bin/pwd
override_homedir = /home/%u
[domain/MYDOMAIN_LIMITED]
ad_server = srv001.company.local,srv002.company.local,srv003.company.local,srv004.company.local
ad_domain = company.local
ldap_user_search_base = DC=company,DC=local?subtree?(memberOf=CN=unix_limited,OU=Groupes,OU=Main Office,DC=company,DC=local)
id_provider = ad
override_shell = /usr/bin/date
override_homedir = /home/%u
[domain/MYDOMAIN_ALL]
ad_server = srv001.company.local,srv002.company.local,srv003.company.local,srv004.company.local
ad_domain = company.local
ldap_user_search_base = DC=company,DC=local
id_provider = ad
override_homedir = /home/%u
Das ldap_user_search_base
wird anstelle des jetzt veralteten (entfernten?) verwendet ldap_user_search_filter
.
Ich weiß nicht, ob das Hinzufügen simple_allow_groups
eines ldap_user_search_base
Filters richtig ist oder nicht. Ich frage mich, ob es auch nur mit einer Direktive funktionieren würde simple_allow_groups
.
Antwort2
Danke an dieSSDD-BetreuerIch habe die Antwort gefunden. Hier ist eine funktionierende Konfiguration, die das tut, was ich brauche, d. h. SSH-Tunneling zulässt, aber keine SSH-Anmeldung für AD-Benutzer, die Mitglieder der AD LimitedGroup sind.
Beachten Sie, dass ein Mitglied der eingeschränkten Gruppe sich als user@MYDOMAIN_TEST.GLOBAL
und nicht als anmelden muss [email protected]
, da es sonst nicht funktioniert.
Der Kern der Lösung besteht darin, in der Direktive den Domänennamen des SSSD-Abschnitts anstelle des AD-Domänennamens zu verwenden simple_allow_groups
. Beachten Sie jedoch, dass die Konfiguration auch ohne die Zeilen access_provider = simple
und funktioniert. Es ist auch möglich , ohne die Direktive simple_allow_groups = ...
zu setzen , wie von einem Benutzer in den Kommentaren berichtet.simple_allow_groups = group
use_fully_qualified_names = True
Beachten Sie auch, dass diese Konfiguration ldap_user_search_base
anstelle des veralteten verwendet ldap_user_search_filter
.
Die anderen Konfigurationsoptionen dienen nur der Vollständigkeit, da sie bereits in der Konfigurationsdatei enthalten waren.
[sssd]
domains = MYDOMAIN.GLOBAL,MYDOMAIN_TEST.GLOBAL
config_file_version = 2
services = nss, pam
[nss]
default_shell = /bin/bash
[domain/MYDOMAIN_TEST.GLOBAL]
ldap_user_search_base = DC=MYDOMAIN,DC=GLOBAL?subtree?(memberOf=CN=LimitedGroup,OU=Groups,DC=MYDOMAIN,DC=GLOBAL)
default_shell = /sbin/nologin
ad_server = ad.mydomain.global
ad_backup_server = ad2.mydomain.global
ad_domain = MYDOMAIN.GLOBAL
krb5_realm = MYDOMAIN.GLOBAL
realmd_tags = manages-system joined-with-adcli
cache_credentials = False
id_provider = ad
krb5_store_password_if_offline = True
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = simple
simple_allow_groups = LimitedGroup@MYDOMAIN_TEST.GLOBAL
[domain/MYDOMAIN.GLOBAL]
ldap_user_search_base = DC=MYDOMAIN,DC=GLOBAL?subtree?(memberOf=CN=AdminsGroup,OU=Groups,DC=MYDOMAIN,DC=GLOBAL)
default_shell = /bin/bash
ad_server = ad.mydomain.global
ad_backup_server = ad2.mydomain.global
ad_domain = MYDOMAIN.GLOBAL
krb5_realm = MYDOMAIN.GLOBAL
realmd_tags = manages-system joined-with-adcli
cache_credentials = False
id_provider = ad
krb5_store_password_if_offline = True
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = simple
simple_allow_groups = [email protected]