sssd: Gibt es eine Möglichkeit, eine bestimmte Shell für einige Gruppenmitglieder zu erzwingen?
8
Der Kontext
Ich möchte einige AD-Benutzer auf ein bestimmtes Skript beschränken und die Möglichkeiten auf diesem bestimmten Computer einschränken.
Anstatt sie /bin/bash(zum Beispiel) mit zu verbinden, möchte ich sie zur Verwendung zwingen /path/to/my/script. Diese Benutzer gehören zu einer bestimmten AD-Gruppe.
Andere Leute sollten in der Lage sein, die echte Hülle zu benutzen.
Der klassische Weg
Wenn diese Benutzer lokale Benutzer wären, würde ich einfach das Shell-Feld in ändern /etc/passwd.
Der sssd Weg
Gibt es eine Möglichkeit, nur für die Mitglieder dieser Gruppe einen anderen Shell-Wert bereitzustellen?
Eine Möglichkeit, dieses Ziel zu erreichen, besteht darin, mehrere Domänen zu deklarieren und die ersten nur auf die Mitglieder einer bestimmten Gruppe zu beschränken.
Die Mitglieder der group1Nutzung /shell/path/for/group1, die Mitglieder der group2Nutzung /shell/path/for/group2, alle anderen DOMAINBenutzer verwenden/bin/bash
Ein Nachteil ist, wenn ein Benutzer Mitglied beider Gruppen ist: Er fällt immer in die erste "Domäne" DOMAIN_GROUP1.
BEARBEITEN: Verwendung von ldap_user_search_baseanstelle der veralteten ldap_user_search_filter. Es sollte auf neueren Versionen von sssd funktionieren.
Der AD muss jedoch so konfiguriert sein, dass er die Domänen DOMAIN_GROUP1 und DOMAIN_GROUP2 sowie DOMAIN bereitstellt.
dr_
Ganz und gar nicht. Diese Namen werden intern von sssd verwendet. Der tatsächliche AD-Domänenname ist für beide sssd-Domänen gleich: domain.local. Dies ist der Parameter ad_domain.
Es funktioniert für mich, aber ich verwende eine ziemlich alte Version von sssd. Es scheint, dass das ldap_user_search_filterjetzt nicht unterstützt wird. Aber die ldap_user_search_base scheint Filter zu unterstützen.
Christophe Drevet-Droguet
2
Sie können dies wahrscheinlich nicht für eine Gruppe tun, aber Sie können die Shell pro Benutzer in AD für SSSD ändern. Gehen Sie mit ADSI Edit in die eigentlichen Objektattribute und ändern Sie das Attribut "loginShell" für den Benutzer. Alternativ können Sie Puppet verwenden, um GPO-ähnliche Dinge unter Linux zu bringen und dort möglicherweise zu verwalten (ich bin mir jedoch nicht sicher, ob dies möglich ist).
Ich glaube nicht, dass Sie Puppet oder eine andere Konfigurationssoftware verwenden können, um das Verhalten von NSS zu ändern. Ich weiß, dass ich feststellen kann, welche Shell im loginShellAttribut verwendet werden soll, aber ich kann diese Methode nicht verwenden: Der Benutzer benötigt möglicherweise eine echte Shell auf anderen Computern. und ich würde es vorziehen, die msSFU AD-Erweiterung (die das erforderliche Attribut liefert, nicht wahr?) nicht zu installieren
Christophe Drevet-Droguet
2
Ähm, ich glaube, das Attribut existiert und msSFU bietet Ihnen nur eine andere Benutzeroberfläche als ADSI-Bearbeitung. Server 2008 und höher sind dort RFC-kompatibel (ich bin mir ziemlich sicher, da ich Server 2008R2 und keine SFU installiert habe und die Attribute ständig für SL6-Clients verwende)
jmp242
OK. Ihre Antwort ist also gültig, solange der Benutzer keine Verbindung zu einem anderen Computer mit einer echten Shell oder einem anderen Shell-Skript herstellen muss.
ldap_user_search_filter
jetzt nicht unterstützt wird. Aber die ldap_user_search_base scheint Filter zu unterstützen.Sie können dies wahrscheinlich nicht für eine Gruppe tun, aber Sie können die Shell pro Benutzer in AD für SSSD ändern. Gehen Sie mit ADSI Edit in die eigentlichen Objektattribute und ändern Sie das Attribut "loginShell" für den Benutzer. Alternativ können Sie Puppet verwenden, um GPO-ähnliche Dinge unter Linux zu bringen und dort möglicherweise zu verwalten (ich bin mir jedoch nicht sicher, ob dies möglich ist).
quelle
loginShell
Attribut verwendet werden soll, aber ich kann diese Methode nicht verwenden: Der Benutzer benötigt möglicherweise eine echte Shell auf anderen Computern. und ich würde es vorziehen, die msSFU AD-Erweiterung (die das erforderliche Attribut liefert, nicht wahr?) nicht zu installieren