======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 ([[grundlagen:benutzer_und_gruppen&#das_homeverzeichnis|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 [[http://forum.zentyal.org/index.php/topic,12925.0.html|in diesem HowTo]] beschrieben =====Authentifizierung - Benutzername und Passwort ===== Die Benutzernamen und Passwörter liegen in einem Datenbank-Verzeichnis, dass über [[wp>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 <code terminal> sudo apt-get install ldap-auth-config nscd </code> 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. - **%%LDAP%% server Uniform Resource Identifier:** Die Adresse des Zentyal-Servers und der Port 390 (**Achtung**: [[zentyal:firewall|Firewall]] darf diese Port nicht blockieren.) - **Distinguished name of the search base**: Das %%LDAP%%-Basisverzeichnis, hier ''dc=acme,dc=intern'' - **%%LDAP%% version to use**: Die zu nutzende %%LDAP%%-Version, hier Version 3 - **Make local root Database admin**: ''Ja'' - **Does the %%LDAP%% database require login?**: ''Nein'' - **%%LDAP%% Account for Root**: Der Wurzeldomänenname, hier ''cn=zentyal,dc=acme,dc=intern '' - **%%LDAP%% Root account password**: Das Zugangspasswort (wurde bei der Zentyalinstallation automatisch erzeugt). {{gallery> :zentyal:howtos:ubuntu?ldap_*.png&nocache&lightbox }} Die Angaben zum %%LDAP%% findet man unter dem Menüpunkt //Office -> Benutzer & Gruppen -> %%LDAP%%-Einstellungen//. [{{ zentyal:howtos:ubuntu:ldap_einstellungen.png?800 |%%LDAP%%-Einstellungen unter dem Menüpunkt //Office > Benutzer & Gruppen > %%LDAP%%-Einstellungen//}}] <WRAP 90% round box center> **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. {{ zentyal:howtos:ubuntu:ldap-hostname.png?600 |Hostname als %%LDAP%% server Uniform Resource Identifier}} </WRAP> Nun muss man noch angeben, dass die Namen, Gruppen, usw. per [[wp>Name_Service_Switch|nss]] aufgelöst werden sollen. <code terminal> sudo auth-client-config -t nss -p lac_ldap </code> Danach startet man noch die beiden zugrunde liegenden Dienste neu <code terminal> sudo /etc/init.d/libnss-ldap restart sudo /etc/init.d/nscd restart </code> 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 [[grundlagen:dateirechte_dateisystem_und_verzeichnisstruktur#netzwerkfreigaben_und_nfs|NFS]] mounten.((Zum Testen kann man aber mit <code terminal>su %%<benutzer-vom-zentyal-server>%%</code> auf Konsole den Benutzer wechseln.)) =====Homeverzeichnisse per NFS mounten===== ====Auf dem Server==== Zunächst installiert man auf dem Server das Paket ''nfs-kernel-server'', damit dieser per [[grundlagen:dateirechte_dateisystem_und_verzeichnisstruktur#netzwerkfreigaben_und_nfs|NFS]] Ordner freigeben kann: <code terminal> sudo apt-get install nfs-kernel-server </code> 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 <code> /home 0.0.0.0/0.0.0.0(rw,async,no_subtree_check) </code> 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 [[uu>NFS#Freigaben|hier]] erklärt. Nun liest man mit <code terminal> sudo exportfs -ra </code> 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'' <code> 10.0.2.60:/home /home nfs rw 0 0 </code> 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 [[uu>NFS#Auf-Freigaben-zugreifen|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 <code terminal> sudo mount -a </code> erreichen. <WRAP 90% round box center> **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 [[uu>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 <code terminal> mkdir /localhome # Ordner localhome erstellen sudo usermod -m -d /localhome/fordperfect fordperfect </code> das Homeverzeichnis verschoben. </WRAP> =====Begrüßungsbildschirm einrichten===== Ubuntu nutzt [[uu>lightdm|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 <code> greeter-hide-users=true </code> ein und startet mit <code terminal> sudo /etc/init.d/lightdm restart </code> 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 [[#authentifizierung_-_benutzername_und_passwort|Installation des Pakets ldap-auth-client]] gemacht hat kann man mit Hilfe des Tools [[http://debiananwenderhandbuch.de/debconf.html#debconf-get-selections|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 <code terminal> sudo chmod +x ubuntu_Client_Einbinden.sh </code> ausführbar. Mit <code terminal> sudo ./ubuntu_Client_Einbinden.sh </code> führt man das Script aus. Nach Abarbeitung des Scripts sind alle beschriebenen Einstellungen gemacht. <file bash 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." </file>

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:
238 -0 = ?
 
 
zentyal/howtos/ubuntu/ldap.txt · Zuletzt geändert: 2013/02/08 17:13 von admin