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?

Wenn nicht, wie würden Sie es tun?

Christophe Drevet-Droguet
quelle

Antworten:

13

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.

[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
# Domain
ad_domain = domain.local
# Servers
ad_server = dc01.domain.local,dc02.domain.local,dc03.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

[domain/DOMAIN_GROUP2]
id_provider = ad
# Domain
ad_domain = domain.local
# Servers
ad_server = dc01.domain.local,dc02.domain.local,dc03.domain.local
# Restrict to group members
ldap_user_search_base = DC=domain,DC=local?subtree?(memberOf=CN=group2,OU=Groups,DC=domain,DC=local)
# Shell
override_shell = /shell/path/for/group2
# Homedir
override_homedir = /home/%u


[domain/DOMAIN]
id_provider = ad
# Domain
ad_domain = domain.local
# Servers
ad_server = dc01.domain.local,dc02.domain.local,dc03.domain.local
# Homedir
override_homedir = /home/%u

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.

Christophe Drevet-Droguet
quelle
Das ist wirklich klug :)
Orsiris de Jong
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.
Christophe Drevet-Droguet
Ich habe diese Konfiguration ausprobiert, sie funktioniert nicht: unix.stackexchange.com/questions/465103/…
dr_
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).

jmp242
quelle
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.
Christophe Drevet-Droguet