Zentyal/HowTos/Ubuntu-Clients einbinden

Normalerweise wird bei der Installation eines Rechners ein Benutzer, und später noch weitere Benutzer, angelegt. Mit diesen lokalen Benutzern kann man sich dann an diesem Rechner anmelden und den Rechner benutzen. Die Gespeicherten Dokumente und Einstellungen sind nur auf diesem Rechner vorhanden.

In einem Netzwerk, in dem ein Benutzer an mehreren Rechner arbeitet, ist dieses Herangehensweise aufwendig. Auf jedem Rechner muss für jeden Benutzer ein Benutzerkonto angelegt werden. Die Dokumente müssen zwischen den Rechnern hin und her kopiert werden. Außerdem hat der Benutzer auf jedem Rechner andere Einstellungen. Hat er z. B. auf einem Rechner ein Lesezeichen im Browser eingerichtet, so wird dieses nicht automatisch auf die anderen Rechner übertragen.

Das folgende HowTo beschreibt, wie man einen Ubuntu-Client so einrichtet, dass die auf dem Zentyal-Server eingerichteten Benutzernamen und Passwörter zur Anmeldung an jedem Rechner im Netzwerk genutzt werden können. Außerdem wird gezeigt, wie man die Benutzerverzeichnisse (Homeverzeichnisse), die auf dem Zentyal-Server angelegt wurden, auf den Rechnern eingebunden (gemounted) werden, und somit Dokumente und Einstellungen auf jedem Rechner gleich sind.

Hinweis: Eine weiter Möglichkeit Ubuntu Clients einzubinden, die nicht per NFS alle Homeverzeichnisse exportieren wird in diesem HowTo beschrieben

Authentifizierung - Benutzername und Passwort

Die Benutzernamen und Passwörter liegen in einem Datenbank-Verzeichnis, dass über LDAP angesprochen wird. Die Kommunikation erfolgt über Port 390.

Um einen Client an die LDAP-Datenbank anzubinden muss auf dem Client das Paket ldap-auth-config und nscd installiert werden. Auf der Konsole geht das mit

sudo apt-get install ldap-auth-config nscd

Während der Installation werden einige Eingaben bzgl. der Servers verlangt. Die einzugebenden Daten findet man auf Zentyal-Server im Untermenüpunkt Office → Benutzer und Gruppen → LDAP-Einstellungen (s. Abb.).

Die Eingaben werden im Folgenden erklärt, die Galerie unten zeigt jeweils einen Screenshot dazu.

  1. LDAP server Uniform Resource Identifier: Die Adresse des Zentyal-Servers und der Port 390 (Achtung: Firewall darf diese Port nicht blockieren.)
  2. Distinguished name of the search base: Das LDAP-Basisverzeichnis, hier dc=acme,dc=intern
  3. LDAP version to use: Die zu nutzende LDAP-Version, hier Version 3
  4. Make local root Database admin: Ja
  5. Does the LDAP database require login?: Nein
  6. LDAP Account for Root: Der Wurzeldomänenname, hier cn=zentyal,dc=acme,dc=intern
  7. LDAP Root account password: Das Zugangspasswort (wurde bei der Zentyalinstallation automatisch erzeugt).

Die Angaben zum LDAP findet man unter dem Menüpunkt Office → Benutzer & Gruppen → LDAP-Einstellungen.

LDAP-Einstellungen unter dem Menüpunkt Office > Benutzer & Gruppen > LDAP-Einstellungen

Hinweise

  • Beim Kopieren des Passworts muss man darauf achten, dass man keinen abschließenden Zeilenumbruch oder ein Leerzeichen am Anfang kopiert. Am Besten das Passwort vorher in einem Texteditor einfügen. Alternativ kann man auch zum Markieren doppelt auf das Passwort klicken.
  • Funktioniert die Namensauflösung und hat der Zentyal-Server den z. B. Namen oder den Alias ldap-server, so kann auch dieser hier verwendet werden.

Die Verwendung eines Namens ist der Verwendung einer IP-Adresse vorzuziehen. Zieht man irgendwann mit dem Benutzer und Gruppe-Modul auf einen anderen Server um, muss man nur dem neuen Server diesen Namen geben, auf den Clients muss keine Änderung durchgeführt werden. Hostname als %%LDAP%% server Uniform Resource Identifier

Nun muss man noch angeben, dass die Namen, Gruppen, usw. per nss aufgelöst werden sollen.

sudo auth-client-config -t nss -p lac_ldap

Danach startet man noch die beiden zugrunde liegenden Dienste neu

sudo /etc/init.d/libnss-ldap restart
sudo /etc/init.d/nscd restart

und man kann sich mit Benutzernamen vom Zentyal-Server einloggen. Allerdings noch nicht auf der grafischen Oberfläche, da die Benutzer noch keine Homeverzeichnisse haben und unter /home keine anlegen dürfen. Die Homeverzeichnisse muss man noch per NFS mounten.1)

Homeverzeichnisse per NFS mounten

Auf dem Server

Zunächst installiert man auf dem Server das Paket nfs-kernel-server, damit dieser per NFS Ordner freigeben kann:

sudo apt-get install nfs-kernel-server

Damit der Server weiß, dass er die Homerzeichnisse freigeben soll, trägt man dies in die Datei /etc/exports ein (z. B. mit sudo /etc/exports auf der Konsole öffnen). Die betreffende Zeile ist

/home 0.0.0.0/0.0.0.0(rw,async,no_subtree_check)

Dabei benennt die erste Angabe den freizugebenden Ordner an. Die zweite Angabe gibt an, dass alle Clients (IP-Adressenbereich) darauf zugreifen dürfen. Die Parameter in Klammern werden hier erklärt.

Nun liest man mit

sudo exportfs -ra 

die neue Konfiguration ein.

Auf dem Client

Der Client liest aus der Datei /etc/fstab, welche Freigaben er wo mounten muss. Um die Homeverzeichnisse zu mounten trägt man in die /etc/fstab

10.0.2.60:/home /home nfs rw 0 0

ein. Dabei ist die erste Angabe 10.0.2.60:/home der Ordner auf dem Server, und die zweite Angabe (/home) der Ordner auf dem Client, in den die Freigabe gemountet werden soll. Die 3 Angabe bedeutet, dass die Freigabe zum lesen und schreiben (read/write) gemountet wird. Weitere Angaben findet man hier.
Nun werden bei nächsten Booten automatisch die Homeverzeichnisse des Zentyal-Servers im Ordner /home des Clients gemountet. Für einen Benutzer macht es dann keine Unterschied, wo er sich einloggt, er hat überall das gleich Homeverzeichnis.

Das Mounten kann man auch ohne Neustart durch

sudo mount -a

erreichen.

Anmerkung: Dadurch, dass beim Booten die Homeverzeichnisse unter /home gemountet werden, sind die lokalen Homeverzeichnisse nicht mehr vorhanden. Somit kann sich kein lokaler Benutzer mehr einloggen . Man kann aber mit dem Programm usermod das Homeverzeichnis eines lokalen Benutzers verschieben. Man kann z. B. den Ordner /localhome anlegen, für die Benutzerverzeichnisse der lokalen Benuzer.
Ist fordperfect ein lokaler Benutzer, so wird mit

mkdir /localhome   # Ordner localhome erstellen
sudo usermod -m -d /localhome/fordperfect fordperfect

das Homeverzeichnis verschoben.

Begrüßungsbildschirm einrichten

Ubuntu nutzt lightDM als Displaymanager. Dieser ist für den Begrüßungsbildschirm verantwortlich. Normalerweise werden die lokalen Benutzer angezeigt. Man wählt dann einen dieser Benutzer aus und gibt das Kennwort ein. Damit man jeden Benutzer anmelden kann, muss ein Eingabefeld für den Benutzernamen angezeigt werden.

Dazu gibt fügt man in der Datei /etc/lightdm/lightdm.conf die Zeile

greeter-hide-users=true

ein und startet mit

sudo /etc/init.d/lightdm restart

den Displaymanager neu. Danach kann man sich mit jedem Benutzernamen anmelden.

Script zum automatischen Einbinden von Clients

Da man in einem Netzwerk meistens mehrere Clients nach der beschriebenen Methode einrichten muss, sollte man diesen Schritt automatisieren. Sämtliche oben aufgezeigten Befehle kann man in einem Script zusammenfassen. Die Eingaben, die man bei der Installation des Pakets ldap-auth-client gemacht hat kann man mit Hilfe des Tools debconf-get-selections im Vorfeld automatisch setzen, so dass die manuell Eingabe entfällt.

Das folgende Script übernimmt diese Aufgabe. Im Abschnitt Angaben zum LDAP am Anfang setzt man für die vier Variablen ldapserver, basedn, rootdn und passwort durch die Werte vom Zentyal-Server.
Dann kopiert man das Script auf den Client und macht es mit

sudo chmod +x ubuntu_Client_Einbinden.sh

ausführbar. Mit

sudo ./ubuntu_Client_Einbinden.sh

führt man das Script aus. Nach Abarbeitung des Scripts sind alle beschriebenen Einstellungen gemacht.

ubuntu_Client_Einbinden.sh
#!/bin/sh
 
#########################################################
#########################################################
# Angaben zum LDAP
 # Die folgenden Werte ersetzen
 # keine Leerzeichen vor und nach dem Gleichheitszeichen
ldapserver=10.0.2.60     # ohne Port nur IP oder Hostname
basedn=dc=acme,dc=intern
rootdn=cn=zentyal,dc=acme,dc=intern
passwort=rVhH5PIgaDYwZFNdAPi2
#########################################################
#########################################################
 
 
# Werte für den Installer setzen
echo "Setze Werte für den 'ldap-auth-config'-Installer"
# LDAP-Server
echo "ldap-auth-config	ldap-auth-config/ldapns/ldap-server	string	$ldapserver:390" | debconf-set-selections 
# Distinguished Name (baseDN)
echo "ldap-auth-config	ldap-auth-config/ldapns/base-dn	string	$basedn" | debconf-set-selections 
# LDAP version
echo "ldap-auth-config	ldap-auth-config/ldapns/ldap_version	select	3" | debconf-set-selections 
# Lokaler Datenbank-Root
echo "ldap-auth-config	ldap-auth-config/dbrootlogin	boolean	true" | debconf-set-selections 
# Kein Datenbanklogin erforderlich
echo "ldap-auth-config	ldap-auth-config/dblogin	boolean	false" | debconf-set-selections 
# LDAP root-Account
echo "ldap-auth-config	ldap-auth-config/rootbinddn	string	$rootdn" | debconf-set-selections 
# LDAP-root Passwd
echo "ldap-auth-config	ldap-auth-config/bindpw	password	$passwort" | debconf-set-selections 
echo "ldap-auth-config	ldap-auth-config/rootbindpw password	$passwort" | debconf-set-selections 
 
# Installation der Pakete
echo "Installiere 'ldap-auth-config' und 'nscd'"
apt-get install -y ldap-auth-config nscd
 
# nss einrichten
echo "Richte nss ein"
auth-client-config -t nss -p lac_ldap
 
# Dienste neu starten
echo "Starte die Dienste 'libnss-ldap' und 'nscd' neu"
/etc/init.d/libnss-ldap restart
/etc/init.d/nscd restart
 
# Homeverzeichnisse per NFS mounten
 # NFS-common installierne
echo "Installiere 'nfs-common'"
sudo apt-get install -y nfs-common
 
fstabEintrag="$ldapserver:/home /home nfs rw 0 0"
 #Testen, ob schon ein entsprechender Eintrag in der /etc/fstab existiert
if grep -Exq "$ldapserver:/home[[:space:]]+/home[[:space:]]+nfs[[:space:]]+rw[[:space:]]+0[[:space:]]+0[[:space:]]*" /etc/fstab ||
#Oder, ob home schon Mountpunkt ist
grep -Exq ".+:/.+[[:space:]]+/home[[:space:]]+.*" /etc/fstab
then 
	echo "Der Mountpunkt"
	echo "$fstabEintrag"
	echo "existiert bereits."
else
	echo "Füge $fstabEintrag zur /etc/fstab hinzu."
	cp /etc/fstab /etc/fstab.orig
	echo $fstabEintrag >> /etc/fstab
fi
 
 
#Testen, ob der NFS-Server die Homeverzeichnisse exportiert
 
if showmount -e $ldapserver | grep -Ex "/home[[:space:]]+.*"
then
	echo "Mounte alles: mount -a"
	mount -a
else
	echo "Der Host $ldapserver exportiert nicht das Verzeichnis /home"
	echo "Installiere dort das Paket 'nfs-kernel-server' und trage"
	echo "/home in die Datei /etc/exports ein."
fi;
 
# LightDM einrichten
echo "Richte Anmeldebildschirm ein"
echo ""
cp /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.orig
if grep -Exq "greeter-hide-users=.*" /etc/lightdm/lightdm.conf
then
	sed -i '/greeter-hide-users=.*/d' /etc/lightdm/lightdm.conf
fi
echo "greeter-hide-users=true" >= /etc/lightdm/lightdm.conf
 
 
echo "Konfiguration abgeschlossen. Probiere"
echo " su <benutzer-vom-ldap-server>"
echo "um sich mit einem Benutzer des LDAP-Servers anzumelden."
1) Zum Testen kann man aber mit
su %%<benutzer-vom-zentyal-server>%%
auf Konsole den Benutzer wechseln.

Diskussion

test89.0.86.155, 2013/07/16 21:21

Hallo, vielen Dank für diese tolle Seite. Ich habe aber ein Problem: Bei grafischem login (LDM) ist kein Logout mehr möglich (auf der konsole geht's). Ich vermute irgendein PAM-Problem. Habe es mit zwei Servern und verschiedenen Clients probiert. Habt ihr eine Idee? Unter Zentyal 2.2 ging noch alles, unter 3.0 leider nicht.

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
88 +9 =​ ?
 
 
zentyal/howtos/ubuntu/ldap.txt · Zuletzt geändert: 2013/02/08 17:13 von admin