Im folgenden wird beschrieben wie Sie ein Red Hat Enterprise Linux System (ab Version 7.x) so einrichten, dass sich dessen Benutzer über den sssd AD-Provider an der ETHZ Infrastruktur authentisieren können und beim Login automatisch ein lokales Homeverzeichnis erstellt wird, falls dieses noch nicht existiert.
Voraussetzungen
Pakete
Bitte stellen Sie sicher, dass die folgenden Pakete installiert sind:
krb5-workstation oddjob-mkhomedir realmd sssd sssd-ad samba-common-tools
Die Paketnamen können bei anderen Distributionen abweichen.
Posix Attribute
Das an der ETHZ genutzte Active Directory D.ETHZ.CH enthält bereits die notwendigen Posix Erweiterungen (Services for Unix).
Attribute wie das Home Verzeichnis, oder die Login Shell lassen sich mit dem nethz Admin-Tool in den Mailbox-Service-Einstellungen bearbeiten.
Die empfohlene Einstellung für das Unix-Home-Verzeichnis lautet
/home/IHR_USERNAME, wobei Sie bitte
IHR_USERNAME durch den Namen Ihres Benutzerkontos ersetzen. Standardmässig ist der Wert für das Home-Verzeichnis auf
/nas/IHR_USERNAME gesetzt. Möchten Sie diese Einstellung beibehalten, beachten Sie bitte die Hinweise im Abschnitt SELinux.
DNS
Stellen Sie bitte sicher, dass die DNS Server korrekt konfiguriert sind und in der Suchreihenfolge zuerst
d.ethz.ch gelistet wird. Sollten Sie den DHCP Server der ID KOM nutzen, werden diese Einstellungen automatisch korrekt befüllt. Für eine manuelle Konfiguration finden Sie ein Beispiel in der Beschreibung für sssd.
Zeitsynchronisation
Die Uhrzeit des Rechners sollte nicht wesentlich von der Zeit des Domaincontrollers abweichen. Deshalb sollte unbedingt ein Zeitserver zur Synchronisation verwendet werden.
realmd
Das Programm realm ermöglicht es Ihnen auf einem einfachen Weg einen Rechner an das Active Directory der ETH Zürich zu joinen.
realm join --user=IHR_OUADMIN --computer-ou=OU=computers,OU=ID-RHN,OU=Services,OU=ID-BD-CD,OU=Hosting,DC=d,DC=ethz,DC=ch d.ethz.ch
Ersetzen Sie bitte IHR_OUADMIN durch den Namen des Kontos, das join Rechte auf die unter
--computer-ou angegebene OU hat. Die im obigen Beispiel angegebene OU passen Sie bitte an Ihre Gegebenheiten an.
Sollte nach dem Ausführen des Kommandos keine Fehlermeldung angezeigt werden, wurde der Domainjoin erfolgreich durchgeführt.
Test
Nach der erfolgreichen Einrichtung, sollten sich mit Hilfe von:
getent passwd IHR_USERNAME@d.ethz.ch
Benutzerinformationen abrufen lassen. Ersetzen Sie hierbei bitte IHR_USERNAME durch den Active Directory Benutzernamen, den Sie abfragen möchten.
Den Status der realmd Konfiguration können Sie mit Hilfe von:
realm list
abrufen.
Jetzt sollten Sie sich mit Ihrem Active Directory Benutzeraccount einloggen können. Beachten Sie bitte, dass Sie auch hier @d.ethz.ch anfügen müssen.
Security
Standardmässig können sich alle Active Directory Benutzer anmelden. Um dies zu verhindern können Sie zunächst den Zugriff für alle Domainuser unterbinden:
realm deny --all
Und danach für einzelne Benutzerkonten freigeben:
realm permit USERNAME@d.ethz.ch
Wobei Sie bitte
USERNAME durch den Namen des Benutzer ersetzen, der Zugriff erhalten soll.
Es besteht ausserdem die Möglichkeit den Zugriff für Benutzergruppen zu erlauben:
realm permit -g IHRE_ADGRUPPE
Ersetzen Sie bitte
IHRE_ADGRUPPE durch den tatsächlichen Namen der Gruppe die Zugriff erhalten soll.
sudo
Zur Einrichtung von sudo können Sie eine Datei
/etc/sudoers.d/IHRE_ADGRUPPE mit folgendem Inhalt erstellen:
%IHRE_ADGRUPPE ALL=ALL
Ersetzen Sie auch hier bitte wieder
IHRE_ADGRUPPE durch den tatsächlichen Namen der Gruppe, der Sie sudo-Zugriff ermöglichen möchten. Beachten Sie bitte, dass das führende %-Zeichen erhalten bleiben muss, wenn Sie eine Gruppe angeben möchten.
Passen Sie bitte nach der Erstellung der Datei die Rechte wie folgt an:
chmod 700 /etc/sudoers.d/IHRE_ADGRUPPE
SELinux
Sollten Sie SELinux aktiviert haben und das Defaulthome /nas verwenden wollen, gehen Sie bitte wie folgt vor:
mkdir /nas
semanage fcontext -a -e /home /nas
restorecon -R -v /nas
FQDN
In der Standardkonfiguration muss immer der Domainname mit an den Usernamen angehängt werden. Wenn Sie keine lokalen Benutzerkonten angelegt haben, die mit Domainkonten in Konflikt stehen könnten, haben Sie die Möglichkeit diese Funktion abzuschalten.
Dazu setzen Sie bitte in der Konfigurationsdatei /etc/sssd/sssd.conf unterhalb der Domainkonfiguration die Option use_fully_qualified_names = False.
/etc/sssd/sssd.conf
[domain/d.ethz.ch]
use_fully_qualified_names = False
und starten danach den Service sssd neu:
systemctl restart sssd
UID Mapping
Per Default werden uids und gids automatisch erstellt. Möchten Sie stattdessen, dass die im Active Directory hinterlegten Werte verwendet werden (wie im RFC2307 beschrieben), fügen Sie bitte in der Konfigurationsdatei /etc/sssd/sssd.conf den Parameter ldap_id_mapping = false unterhalb der Domain-Konfiguration ein:
/etc/sssd/sssd.conf
[domain/d.ethz.ch]
ldap_id_mapping = false
Beenden Sie dannach bitte den sssd Service, löschen den Cache und starten den sssd Service neu:
systemctl stop sssd
rm /var/lib/sss/db/cache*
systemctl start sssd
Gruppen werden nicht aufgelöst
Wenn Gruppen mit
getent group my-group
nicht aufgelöst werden, kann dies ebenfalls mit dem mapping zusammenhängen. Mit der Option
[domain/d.ethz.ch]
debug_level = 6
und dem Aufruf (nach Stoppen des sssd) von
# sssd -i
ist in der Ausgabe dann zu sehen
(Wed Sep 28 16:29:29 2016) [sssd[be[D.ETHZ.CH]]] [sdap_idmap_sid_to_unix] (0x0080): Could not convert objectSID [S-1-5-21-2025429265-764733703-1417001333-401394] to a UNIX ID
(Wed Sep 28 16:29:29 2016) [sssd[be[D.ETHZ.CH]]] [sdap_save_group] (0x0080): Could not convert SID string: [Eingabe-/Ausgabefehler]
Dieses Problem lässt sich ebenfalls mit ldap_id_mapping = false beheben.