Ich versuche, ein Ubuntu 16.04 mit realmd + sssd einer Windows-Domäne (Active Directory) beizutreten. Im Grunde bin ich diesem Beitrag gefolgt, der ziemlich gut funktioniert hat, und ich konnte meinem Server beitreten und mich erfolgreich als AD-Benutzer authentifizieren. Allerdings fehlen bei der Integration zwei Teile:
- Hostnamen des Servers im DNS registrieren
- Verwenden Sie sssd-sudo für die Benutzerautorisierung
Hostnamen des Servers im DNS registrieren
Wie bereits erwähnt, trete ich dem AD erfolgreich bei, indem ichrealm join --user=dpr MYDOMAIN.INT --install=/
verwende :
[email protected] ~ # realm list
mydomain.int
type: kerberos
realm-name: MYDOMAIN.INT
domain-name: mydomain.int
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
login-formats: %[email protected]
login-policy: allow-realm-logins
Trotz des erfolgreichen Beitritts ist mein Server jedoch den anderen Computern in der Domäne nicht bekannt, die seinen Hostnamen ip-172-28-5-174.mydomain.int
verwenden . Ich habe diese Dokumentation gefunden, die ein dyndns_update
erwähnt Einstellung in der Datei sssd.conf.
Da ich Realm verwende. Die sssd-Konfiguration wird automatisch generiert, indem der Join-Befehl ausgegeben wird. Die generierte Konfigurationsdatei sieht folgendermaßen aus:
[sssd]
domains = mydomain.int
config_file_version = 2
services = nss, pam
[domain/mydomain.int]
ad_domain = mydomain.int
krb5_realm = MYDOMAIN.INT
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%[email protected]%d
access_provider = ad
Das heißt, ich muss irgendwie dyndns_update = True
hinzufügen zu dieser generierten Datei. Aber wie?
Verwenden Sie sssd-sudo für die Benutzerautorisierung
Zusätzlich möchte ich sssd dazu bringen, meine Sudo-Konfiguration aus AD zu lesen. Ich denke, dies kann mit sssd-sudo erreicht werden, aber dies muss auch in der sssd.conf-Datei aktiviert/konfiguriert werden, indem sudo
hinzugefügt wird zu den sssd-Diensten und verwenden Sie sudo_provider = ldap
für meine Domäne. Wieder bin ich nicht in der Lage, herauszufinden, wie ich das mit Realm machen soll.
Grundsätzlich möchte ich, dass meine generierte Konfigurationsdatei so aussieht:
[sssd]
domains = mydomain.int
config_file_version = 2
services = nss, pam, sudo
[domain/mydomain.int]
id_provider = ad
access_provider = ad
sudo_provider = ldap
ad_domain = mydomain.int
krb5_realm = MYDOMAIN.INT
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%[email protected]%d
Irgendwelche Ideen, wie dies erreicht werden kann?
Akzeptierte Antwort:
Wenn Active Directory sudoers
verwalten soll müssen Sie ein spezielles Schema in AD laden und dann Ihre Regeln mit einem Tool wie ADSI Edit erstellen. Diese exemplarische Vorgehensweise hat bei mir unter Ubuntu 14.04 funktioniert. Die Highlights sind:
- Importieren Sie
schema.ActiveDirectory
- Erstellen Sie Regeln gemäß der sudoers-ldap-Manpage
- Aktualisiere
etc/nsswitch.conf
umsss
einzuschließen unter den Einträgen auf densudoers =
Linie - Aktualisiere
etc/sssd/sssd.conf
einzuschließen:sudo
unter den Einträgen zu denservices =
Linie- ein leerer
[sudo]
Abschnitt (es sind keine Konfigurationen erforderlich, aber Redhat behauptet, dass dies die richtige Konfiguration der sudo-Unterstützung auslöst) - eine Zeile wie
sudo_provider = ad
(sssd-Dokumente auf pagure.org behaupten, dass der sudo-Anbieter standardmäßig für ldap, ad und ipa aktiviert ist, daher kann dies optional sein)
Wenn ich diesen Vorgang für 16.04 wiederhole (d. h. dieselben AD-Regeln wie 14.04), habe ich tatsächlich andere Probleme. Anscheinend ist dies keine Seltenheit. Es ist möglich, dass es einen Fehler in der Version von sudo gibt, die in 16.04 enthalten ist.
- Im Prinzip sollte dieses Problem durch ein manuelles Upgrade auf die neueste Version behoben werden.
- Das normale
sudo
Paket (nichtsudo-ldap
) ist das richtige Paket, wenn Sie SSSD wollen (und nichtsudo
), um die LDAP-Verbindung zu verwalten. Insbesondere die Installation vonsudo-ldap
erzeugt keine Protokolle insssd_sudo.log
während das reguläresudo
Paket hat. - Während
sssd_sudo
zeigt jetztReturning 2 rules for [<user>@<domain>]
,sudo -l
antwortet immer noch mitSorry, user <user>@<domain> may not run sudo on <host>
nicht ausführen Daher müssen möglicherweise andere Probleme gelöst werden.
Meine Situation ist jedoch möglicherweise nicht typisch, da ich zusätzliche Probleme habe, die nicht üblich zu sein scheinen. Zum Beispiel hatte ich Probleme beim Ausführen von realm join
die mithilfe von Problemumgehungen aus dieser Serverfehlerfrage behoben wurden.
Wenn Sie aufgrund von realmd/sssd/sudo-Problemen in 16.04 hierher gefunden haben, finden Sie hier einige andere gemeldete Probleme, die hilfreich sein können (nicht unbedingt direkt mit dem Problem des OP zusammenhängen):
- IPA-Host-Netzgruppenproblem (weitere Informationen in der free-ipa-Benutzerliste)
- Es gibt ein bekanntes Problem mit der Realmd-Abhängigkeitsauflösung. Wie in der Diskussion erwähnt, löst die Installation von Packagekit für viele (einschließlich uns). Möglicherweise gibt es ein separates Problem mit der Version 16.04.
Wir evaluieren 16.04 für ein Upgrade, also können wir dies auf Eis legen, aber hoffentlich hilft unsere Kleinarbeit anderen.