[stextbox id=“warning“ caption=“Achtung“]Dies ist die alte Version meines tutorials, dass nur noch zu Dokumentationszwecken hier steht![/stextbox]
Die neue Version findet sich unter dem Kapitel: Linux Fileserver
[stextbox id=“warning“ caption=“Achtung“]Dies ist die alte Version meines tutorials, dass nur noch zu Dokumentationszwecken hier steht![/stextbox]
Die neue Version findet sich unter dem Kapitel: Linux Fileserver
Backups werden immer wichtiger. Deshalb möchte ich hier backup Strategeien für Windows, sowie für Linux Systeme vorstellen.
__ Debian ist ein geniales Betriebssystem; der Paketmanager apt ist einer der besten. Und doch hat Debian einen entscheidenden Nachteil: Die Pakete sind meist hoffnungslos veraltet.
Für die "wichtigsten" Pakete wie php, mysql, usw. bei denen man häufig updates benötigt stehen sog. "backports" zur Verfügung, das bekannteste ist etwa dotdeb.org.
Was aber, wenn man eine aktuelle Version eines anderen Pakets benötigt, z.B. Nagios oder Ganglia? -Zwar könnte man diese auch selber kompilieren, allerdings können sie dann erstens nicht mehr über den Paketmanager upgedatet werden und zweitens ist auch eine Deinstallation meist sehr schwierig.
Die Lösung ist es ein eigenes, lokales Debian Repository aufzubauen, dass man dann in die sources.list aufnehmen kann. Dort kann man dann die selbst erstellen Debian Pakate rein legen.
In diesem Workshop werden wir diese Schritte im Beispiel von Ganglia durchgehen.. __
Folgendes brauchen wir für den Workshop:
Als erstes installieren wir checkinstall:
wget <a href="http://asic-linux.com.mx/~izto/checkinstall/files/deb/checkinstall_1.6.1-1_i386.deb" target="blank">http://asic-linux.com.mx/~izto/checkinstall/files/deb/checkinstall_1.6.1-1_i386.deb</a> dpkg -i checkinstall_1.6.1-1_i386.deb |
Nun bereiten wir die zu installierende Software (hier Ganglia) vor; es werden alle Schritte wie sie zum kompilieren nötig sind ausgeführt, ausser den letzen ("make install") – Diesen muss man lediglich mit "checkinstall" ersetzen um das Paket zu erstellen.
wget <a href="http://downloads.sourceforge.net/ganglia/ganglia-3.0.6.tar.gz?modtime=1197841793&big_mirror=0" target="blank">http://downloads.sourceforge.net/ganglia/ganglia-3.0.6.tar.gz?modtime=1197841793&big_mirror=0</a> tar -xvzf ganglia-3.0.6.tar.gz cd ganglia-3.0.6 ./configure make |
Nun haben wir die kompilierten Dateien, es wurde aber noch nichts installiert. Dies ist auch gut so, denn nun kommt checkinstall zum Einsatz. Checkinstall ruft "make install" auf, fängt dabei die Schritte die hier gemacht würden ab und erstellt damit ein Debian Paket.
[stextbox id=“note“ caption=“Hinweis“]Bei Debian Paketen sollte zusätzlich der Parameter "–review-control" mitgegeben werden, um später die Abhängigkeiten festlegen zu können;
ansonsten würde nur die Software installiert ohne ggf. andere dazu benötigte Programme (Im Fall von Ganglia z.B. das RRDTool).
checkinstall --review-control make install |
[/stextbox]
Danach kann man noch einige Angaben zum Paket machen wie z.B. eine Beschreibung. -Falls das Paket (in einer älteren Version) im offiziellen Debian repository enthalten ist am besten die originale übernehmen. Infos zum jeweiligen Debian Paket kann man unter: http://packages.debian.org/ nach schauen.
Am Schluss wird dann noch das sog. Controlfile aufgerufen. Dies ist eine spezielle Datei in der man die Angaben zum Paket wie Name, Abhängigkeiten, Empfehlungen, usw. bearbeiten kann.
Am wichtigsten sind hier die Abhängigkeiten (Depends). Diese findet man, wenn man unter http://packages.debian.org/ das jeweilige Paket sucht.
Diese sollte man nun so wie Sie auf der Seite stehen übernehmen, inklusive der runden Klammern.
Ein Beispiel für das Controlfile von Ganglia:
(Paketbeschreibung unter: http://packages.debian.org/stable/gmetad?lang=en )
Package: ganglia Priority: extra Section: checkinstall Installed-Size: 1132 Maintainer: meine@email-adresse.tld Architecture: i386 Version: 3.0.6-1 Depends: adduser, libart-2.0-2, libc6, libc6.1, librrd2 Suggests: ganglia-monitor, ganglia-webfrontend Description: Ganglia is a scalable, real-time cluster monitoring environment with that collects cluster statistics in an open well-defined XML format. This package contains the 'gmetad', which collects information from ganglia monitor clients, and writes them to RRD databases. |
[stextbox id=“note“ caption=“Hinweis“]In den eckigen Klammern steht die Architektur;
normalerweise braucht man nur die Pakete einzubinden auf dessen Architektur man sie installieren möchte;
in den meisten Fällen also i386, bzw. ia64.[/stextbox]
Wenn wir alles angepasst haben speichern und schliessen wir die Datei.
So, nun haben wir in dem Verzeichnis ein .deb File, dass wir nun mit: "dpkg -i ganglia.deb" bereits installieren könnten.
Wir wollen aber noch einen Schritt weiter gehen und gleich ein lokales repository einrichten, so dass wir ab nun die selbst erstellten Pakete ganz einfach mittels "apt-get NAME" installieren und updaten können.
{209:left} !Debian repository Erstellen
Hierzu müssen wir noch zuerst die dpkg-dev Tools installieren:
apt-get install dpkg-dev |
Nun können wir die Verzeichnisstruktur anlegen. Die sieht bei i386 Systemen so aus:
dists/etch/main/binary-i386/
Eine genaue Beschreibung wie eine Debian Repository aussehen muss findet sich im Debian repository-howto ; hier werden deshalb nur auf die nötigsten Schritte eingegangen.
Diese erstellen wir nun:
mkdir -p /repo/dists/etch/main/binary-i386/ |
Hier kopieren wir nun das .deb File hin:
cp -pv ganglia_3.0.6-1_i386.deb /repo/dists/etch/main/binary-i386/ |
Nun wechseln wir in dieses Verzeichnis und erstellen mit dem tool "dpkg-scanpackages" die Index Datei für den packetmanager:
cd /repo/dists/etch/main/binary-i386/ dpkg-scanpackages /repo/dists/etch/main/binary-i386/ /dev/null | gzip -9c > /repo/dists/etch/main/binary-i386/Packages.gz |
Diese Datei hat genau den gleichen Aufbau wie die das Controlfile plus evtl. noch einige weitere Angaben, wie z.B. wo sich das deb-file befindet.
Diese kontrollieren und ergänzen wir nun ggf.:
vi /repo/dists/etch/main/binary-i386/Packages.gz |
Für Ganglia sieht dies z.B. so aus:
Package: ganglia Priority: extra Section: checkinstall Installed-Size: 1132 Maintainer: meine@email-adresse.tld Architecture: i386 Version: 3.0.6-1 Depends: adduser, libart-2.0-2 (>= 2.3.16), libc6 (>= 2.3.5-1), librrd2 Suggests: ganglia-monitor, ganglia-webfrontend Description: Ganglia is a scalable, real-time cluster monitoring environment with that collects cluster statistics in an open well-defined XML format. This package contains the 'gmetad', which collects information from ganglia monitor clients, and writes them to RRD databases. Filename: dists/etch/main/binary-i386/ganglia_3.0.6-1_i386.deb |
Nun muss man eigentlich das Repository nur noch in die /etc/apt/sources.list eintragen:
echo "deb file:///repo/ etch main" >> /etc/apt/sources.list |
Ab jetzt kann man die aktuelle Software ganz einfach mittels:
apt-get install NAME |
installieren.
|| Link | Beschreibung
[http://www.linux-user.de/ausgabe/2006/07/047-checkinstall/index.html|Linux-User Beitrag 07/2006] | Dieser Beitrag erklärt die Bedienung von checkinstall.
[http://linuxwiki.de/CheckInstall|Tips&Tricks zu Checkinstall] | Kleine Tips-Seite auf linuxwiki.de
[http://www.debian.org/doc/debian-policy/ch-relationships.html|Debian Packaging Manual] | Informationen über das Erstellen von Debian Paketen
[http://www.debian.org/doc/manuals/repository-howto/repository-howto.de.html|Debian repository-howto] | Eine detaillierte Anleitung wie man Debian repositorys erstellt
[http://www.apt-get.org/|apt-get.org] | Beispiele von "echten" Debian repositorys
||
|| File | Beschreibung
[http://asic-linux.com.mx/~izto/checkinstall/|CheckInstall] | Ein Programm um automatisch Debian und RPM-Pakete zu erstellen. Sehr nützlich!
||
Das booten eines Betriebssystems oder Installation eines Betriebssystems über einen so genannten „Netzwerk-Boot“ wäre eine praktische Sache: So könnte man die Server installieren ohne ein CD-ROM Laufwerk einzubauen, oder man könnte eine „Notfall-Konsole“ vom Netzwerk aus starten wenn das Betriebssystem mal kaputt ist um es zu reparieren und seine Daten zu Retten.
Mit einem zusätzlichen Webserver lassen sich dann auch komplexe automatisierte Installationen machen.
Hier wollen wir mal Schritt für Schritt beschreiben wie man einen Netzwerkboot einrichtet.
Continue reading Booten vom Netzwerk
__ Falls man auf einem Netzlaufwerk Dateien löscht, werden diese normalerweise nicht in den Papierkorb verschoben, sondern direkt und unwiederbringlich gelöscht.
Wünscht man sich auch für Netzlaufwerke einen "Papierkorb" lässt sich dies mit einem kleinen samba-feature einfach Nachrüsten. __
Dazu trägt man einfach bei der entsprechenden samba freigabe folgendes ein:
[FreigabeMitPapierkorb]
comment = Temporary file space
path = /share
public = yes
# vfs modul 'Papierkorb' einbinden
vfs objects = recycle
recycle: repository = .recycle
recycle: keeptree = Yes
recycle: exclude = <em>.tmp, </em>.temp, <em>.log, </em>.ldb
recycle: exclude_dir = tmp
recycle:versions = Yes |
Hinweise zur Verwendung der Parameter liefert die [http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2651247|SAMBA-Dokumentationsseite] zu VFS-Objekten; dort finden sich auch einige andere interessante Beispiele.
[stextbox id=“warning“ caption=“Achtung“]Diese Seite befindet sich noch in der bearbeitung – Benutzen auf eigene Gefahr![/stextbox]
__ Bei Fileservern ist es wichtig diese sauber zu halten; Viren und Würmer verbreiten sich oft auch auf Netzlaufwerken.
Mit "samba-vscan" gibt es eine gute Lösung, die Viren "on-access" scannt, d.h. jede Datei die auf den Fileserver kopiert wird, wird auf Viren überprüft; ist die Datei ein Virus wird diese automatisch in quarantäne gestellt; es lassen sich also keine Viren mehr auf Netzlaufwerken erstellen. __
[stextbox id=“warning“ caption=“Achtung“]Diese Seite befindet sich noch in der bearbeitung – Benutzen auf eigene Gefahr![/stextbox]
__ LDAP-Verzeichnisse stellen eine art globale Datenbank dar. -Die einfachtse Anwendung ist hier z.B. das Führen von Firmen-/ oder Familienweiten Adressbüchern.
Oftmals kennt man dies von den Mailsystemen in Outlook oder Lotus Notes, bei dem man einfach nur den Namen des Mitarbeiters eingeben kann und die e-mail Adresse erscheint. Oder die "Who-is-who" Verzeichnisse, bei denen man die Telefonnummern, Foto, usw. von anderen mitarbeitern nachschlagen kann.
Doch mit LDAP lässt sich noch viel mehr machen. Man kann sozusagen das gesammte inventar in einem LDAP-Verzeichniss speichern und interessante Web-Anwendungen damit machen.
Wir werden hier jetzt auf Debian-etch einen solchen LDAP-Server installieren und in anderen Tutorials spezifisch erweitern (z.B. für SAMBA).
Zusätzlich wird mit phpLDAPadmin noch eine schöne Web-Administraions Oberfläche aufgesetzt. __
Unter Debian genügen die "apt-get install" aufrufe, da dort alle Abhängigkeiten automatisch installiert werden. Für andere Distributionen hier die Pakete die benötigt werden; diese kann man sich seperat downloaden und dann z.B. mit "rpm -ihv [paket]" installieren.
Zunächst mal die abhängikeiten installieren (kann nicht verkehrt sein g):
apt-get install make gcc gcc++ gengetopt libpopt-dev python-crypto |
Dann LDAP selbst:
apt-get install slapd ldap-utils |
Nun müssen wir den noch rekonfigurieren:
dpkg-reconfigure slapd |
Die Fragen werden nun wie folgt beantwortet:
<SMALL>Hinweis: Der DNS-Name kann auch etwas anderes sein, z.B. ‚fileserver.home.meinName.tld‚</SMALL>
Soll die OpenLDAP-Server-Konfiguration ausgelassen werden?: Nein
DNS Name: samba.local
Name seiner Organisation: samba.local
Admin Kennwort: 123456
Kennwort wiederholen: 123456
Zu verwenden Datenbankmaschine : BDB
soll die Datenbank entfernt werden, wenn slapd vollständig gelöscht wird?: Nein
Es möchte die alte Datenbank verschieben: Ja__
LDAPV2: Nein
Testen kann man das ganze nun mit:
ldapsearch -x -b "dc=samba,dc=local" |
(oder halt der DNS Name, den ihr eingegeben habt)
Dabei sollte sowas rauskommen:
# extended LDIF # # LDAPv3 # base with scope subtree # filter: (objectclass=*) # requesting: ALL # # samba.local dn: dc=samba,dc=local objectClass: top objectClass: dcObject objectClass: organization o: samba.local dc: samba # admin, samba.local dn: cn=admin,dc=samba,dc=local objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2 |
Nun müssen wir noch den apache2-webserver installieren (für die Weboberfläche):
apt-get install apache2 |
Und schliesslich die Weboberfläche selbst 😉 :
apt-get install phpldapadmin |
Nun kann man sich unter: http://IP-DES-SERVERS/phpldapadmin anmelden und Einträge hinzufügen.
Auf diese kann man nun ganz einfach mit Thunderbird, Outlook, usw. zugreifen.
Hier die Schritte für Thunderbird:
# Extras – Adressbuch
# Extras – Einstellungen
# Unter "Verfassen" die Registerkarte "Adressieren" wählen
# Häckchen bei "LDAP-Verzeichnisserver", dann "Anpassen" drücken
# "Hinzufügen" wählen
# Daten Eingeben, z.B. LDAP-Server / 10.0.0.3 / cn=admin,dc=samba,dc=local
Für ein Adressbuch reicht dies bereits aus. Wer bereits SAMBA als Domaincontroller einsetzt interessiert sich vielleicht auch für die nächsten Schritte, wenn wir LDAP in SAMBA integrieren.
Standardmässig werden die LDAP-Meldungen ins syslog geloggt. Da man aber besonders beim deubbgen extrem viele Meldungen bekommt, möchte man besser ein eigenes Logfile dafür haben.
Dazu muss man in syslog-deamon nur den Eintrag: "local4" konfigurieren:
touch /var/log/ldap.log chown openldap:openldap /var/log/ldap.log echo "local4.* /var/log/ldap.log" >> /etc/syslog.conf /etc/init.d/sysklogd restart && /etc/init.d/slapd restart |
Die Meldungen des LDAP-Servers werden nun unter: /var/log/ldap.log gespeichert.
Dieses Tutorial geht davon aus, dass ein SAMBA Domaincontroller bereits nach dem Linux Fileserver Tutorial einsatzbereit läuft.
Für die Installation von PAM mit OpenLDAP werden noch die folgenden Pakete beötigt: libnss-ldap, libpam-ldap und nscd.
apt-get install libnss-ldap libpam-ldap nscd |
Die folgenden Fragen wie folgt beantworten:
Make local root Database admin: Ja
Does the LDAP database require login: Nein
Root login account: cn=admin,dc=samba-ldap,dc=local
Root login password: samba-ldap
Local crypt to use when changing passwords: crypt
LDAP Server host: 127.0.0.1
The distinguished name of the search base: dc=samba-ldap,dc=local
LDAP version to use: 3
Datenbank benötigt Login: Nein
Konfiguration nur für den Eigentümer les-/schreibbar machen: Ja
Nun muss noch der NSCD-Dienst gestartet werden:
/etc/init.d/nscd start |
Nun können wir LDAP an SAMBA anpassen. Dazu generieren wir als erstes mal ein Verschlüsseltes LDAP-Passwort:
slappasswd |
Die Ausgabe, etwas wie: " {SSHA}EDmTvpZ56jZAOelNPBR4MwReReHNJXo+" können wir gleich in die Zwischenablage kopieren.
Nun das File: /etc/ldap/slapd.conf öffnen und die 2 Zeilen rootdn/rootpw ändern/einfügen (rootpw ist das Passwort, dass wir vorhin erstellt haben):
rootdn "cn=admin,dc=samba-ldap,dc=local"
rootpw {SSHA}EDmTvpZ56jZAOelNPBR4MwReReHNJXo+ |
Da wir für unsere Anwendung ganz andere Zugrissrechte als die Standardmässigen benötigen, schiessen wir die folgenden am besten gleich raus:
access to attrs=userPassword by dn="cn=admin,dc=samba-ldap,dc=local" write by anonymous auth by self write by * none access to dn.base="" by * read access to * by dn="cn=admin,dc=samba-ldap,dc=local" write by * read |
Dafür setzten wir nun diese ein:
access to attrs=userPassword by self write by anonymous auth by * none access to attrs=sambaLMPassword by self write by anonymous auth by * none access to attrs=sambaNTPassword by self write by anonymous auth by * none access to * by * read |
Dann muss noch die Zeile:
index objectClass eq |
ersetzt werden durch:
index objectClass,uidNumber,gidNumber eq index cn,sn,uid,displayName pres,sub,eq index memberUid,mail,givenname eq,subinitial index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq |
Nun können wir diese Datei schliessen und dafür: /etc/default/slapd öffnen.
Dort ersetzen wir:
SLAPD_OPTIONS="" |
in
SLAPD_OPTIONS="-4" |
, speichern und schliessen die Datei und öffnen: /etc/ldap/ldap.conf.
Hier tragen wir noch HOST, BASE und URI ein:
HOST 127.0.0.1 BASE dc=samba-ldap,dc=local URI ldap://localhost:389 |
Als erstes müssen wir nun noch die samba-Dokumentation, die smbldap-tools, sowie das Tool: "mkntpwd" installieren; letzteres ist dazu da NT-Passwörter zu kreieren.
apt-get install samba-doc |
Dann noch einige LDAP-Tools:
apt-get install smbldap-tools |
Um die funktionstüchtigkeit von den sambaldap-tools zu gewärleisten, müssen noch einige Perl-Module installiert werden:
apt-get install libnet-ldap-perl libcrypt-smbhash-perl libunicode-maputf8-perl libio-socket-ssl-perl libdigest-sha1-perl |
Dazu müssen wir noch die smbldap-tools configfiles kopieren:
gunzip -c /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf cp -pv /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf |
Nach dem wir alle Perl-Module installiert haben, können wir einen Test der sambaldap-tools machen:
smbldap-usershow |
Kommt nun folgende Ausgabe, hat die Installation des sambaldap Tools und die Installation der Perl Module funktionert:
(c) Jerome Tournier - IDEALX 2004 (<a href="http://www.idealx.com)-" target="blank">http://www.idealx.com)-</a> Licensed under the GPL
Usage: /usr/local/sbin/smbldap-usershow [-?] username
-? show this help message |
mkntpwd muss kompiliert werden:
$ cd /opt/ wget <a href="http://www.silcom.com.pe/soft/mkntpwd.tar.gz" target="blank">http://www.silcom.com.pe/soft/mkntpwd.tar.gz</a> tar -zxf mkntpwd.tar.gz cd mkntpwd make cp mkntpwd /usr/local/bin |
Testen mit:
mkntpwd |
Ausgabe:
# mkntpwd
Usage: mkntpwd [-L lanmgrpwd] [-N ntpasswd]
mkntpwd password
mkntpwd -f [-] [filename]
-L lanmgrpasswd LanManager cleartextpwd <= 14 chars
-N ntpasswd NT cleartextpwd <=128 chars (usually <=14)
with both options present the encrypted LanManager-Pwd is
printed first, followed by a ':' and the encrypted NT-Pwd.
The second usage behaves like mkntpwd -L pwd -N pwd
The third usage reads the password from STDIN or a File. Printout
is the same as second.
anton@genua.de |
smbldap-tools Konfiguration
Nun können wir die smbldap-tools konfigurieren.
Als erstes müssen wir die so genannte SID unserer Domäne ermitteln. Diese wird bei jeder Domäne anders aussehen, deswegen nicht wundern wenn Ihr eine andere habt als hier angegeben.
net getlocalsid SAMBA-LDAP |
SID for domain SAMBA-LDAP is: S-1-5-21-2856778860-2055491937-1446371655
Diese SID müssen wir jetzt in die smbldap.conf einfügen:
/etc/smbldap-tools/smbldap.conf
Dort suchen wir jetzt nach dem SID Eintrag und löschen das Beispiel von IDEALIX.ORG raus und tragen dafür unseren ein:
SID="Eure SID" |
Als nächstes müssen wir den Wert sambaDomain in dieser Datei auf unsere Domäne so wie in der smb.conf angegeben abändern:
sambaDomain="SAMBA-LDAP" |
Wir verwenden in diesem HowTo keine Verschlüsselung und somit können wir ldapTLS auf = 0 setzen.
ldapTLS="0" |
Für die Installation benötigen die smbldap-tools noch unseren LDAP Suffix:
suffix="dc=samba-ldap,dc=local" |
Wie in der smb.conf angegeben verwalten wir die Computer Accounts im SubTree Machines. Aus diesem Grund müssen wir noch den computersdn ändern:
computersdn="ou=Machines,${suffix}" |
Um herauszufinden welche UnixIDs noch frei sind müssen wir noch angeben in welchen Domain Pools nach freien IDs suchen soll:
sambaUnixIdPooldn="sambaDomainName=SAMBA-LDAP,${suffix}" |
Da wir schon in der smb.conf schon angeben haben wo sich das Home Verzeichnis der Benutzer befindet können wir den Wert userSmbHome auf „“ setzen.
userSmbHome="" |
Das gleiche auch mit den Benutzerprofilen:
userProfile="" |
Nun hinterlegen wir noch den Laufwerksbuchstaben für das Persönliche Laufwerk:
userHomeDrive="H:" |
Da auch die smbldap-tools wissen müssen in welchem Server die Daten gespeichert warden sollen, tragen wir jetzt in die /etc/smbldap-tools/smbldap_bind.conf die benötigten Werte ein.
/etc/smbldap-tools/smbldap_bind.conf
Die vorhanden Daten ersetzen wir gegen:
slaveDN="cn=admin,dc=samba-ldap,dc=local" slavePw="samba-ldap" |
masterDN="cn=admin,dc=samba-ldap,dc=local" masterPw="samba-ldap" |
Nun gehts ans anpassen der Samba-Config.
<EM>Achtung: </EM>Wenn ihr den Samba-Server schon produktiv im einsatz habt am besten ein Backup der smb.conf machen: cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.noldap! -Dann könnt ihr, falls was schief geht durch austauschen der smb.conf.noldap wieder die alte Funktionalität herstellen.
Folgende zusätzliche Änderungen sind nun in die /etc/samba/smb.conf Einzutragen:
# Password Backend passdb backend = ldapsam:ldap://127.0.0.1/ |
# Samba Tools zur Verwaltung der Benutzer, Gruppen und Computerkonten im LDAP add user script = /usr/local/sbin/smbldap-useradd –m –a “%u” delete user script = /usr/local/sbin/smbldap-userdel “%u” add group script = /usr/local/sbin/smbldap-groupadd –p “%g” delete group script = /usr/local/sbin/smbldap-groupdel “%g” add user to group script = /usr/local/sbin/smbldap-groupmod –m “%u” “%g” delete user from group script = /usr/local/sbin/smbldap-groupmod –x “%u””%g” set primary group script = /usr/local/sbin/smbldap-usermod –g “%u” “%g” add machine script = /usr/local/sbin/smbldap-useradd –w “%u” |
# LDAP werte für den Zugriff von Samba auf die LDAP Datenbank ldap admin dn = cn=admin,dc=samba-ldap,dc=local ldap delete dn = Yes ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap machine suffix = ou=Machines ldap passwd sync = Yes ldap suffix = dc=samba-ldap,dc=local ldap ssl = no host msdfs = Yes |
# Administratoren des Servers – alle Aktionen warden mit dem Systembenutzer root # ausgeführt admin users = root, Administrator |
Damit LDAP auch weiß, wie es mit Samba Benutzern und seinen Passwörtern umzugehen hat müssen wir jetzt noch das samba Schema entpacken und in der slapd.conf eintrage.
gunzip –c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema |
In der Datei slapd.conf im /etc/ldap/ Verzeichniss tragen wir nach den vorhanden Schemas noch das samba.schema ein, wie unten zu sehen ist.
# Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema |
Damit der smbd und LDAP auch miteinander Kommunizieren können und dürfen muss noch das admin Kennwort in der secrets.tdb hinterlegt werden. Dies geschieht durch den smbpasswd Befehl mit der Option –w.
Das Passwort muss natürlich angepasst werden.
smbpasswd -w samba-ldap |
Ausgabe:
"Setting stored password for "cn=admin,dc=samba-ldap,dc=local" in secrets.tdb"
Wenn man einen Produktiven SAMBA-PDC auf LDAP authentifizierung upgraded, kann es in der Anfangsphase häufig zu Problemen kommen, so dass ein login an der Domäne teilweise gar nicht mehr möglich ist.
Hat man also keine Testumgebung zur Verfügung, bzw. arbeiten schon user an der Domäne, muss man diese quasi auf "knopfdruck" wieder zur alten Konfiguration herstellen können.
Ich habe mir zu diesem zeck von jedem configfile, dass verändert wird 2 Kopien gemacht: Eine ldap-version und eine noldap-Version. Mit 2 kleinen Scripts setze ich jeweils links auf diese Versionen. Die noldap-Version habe ich zudem mit dem "immutable" attribut ausgestattet, damit sicher gestellt wird, dass diese nicht verändert werden kann.
So richtet man sich eine solche Umgebung ein:
pam.d-Verzechnis auserhalb des /etc kopieren:
cp -pRv /etc/pam.d /root/ldap-pam |
2 Versionen der Files anlegen:
cp -pv /root/ldap-pam/common-account /root/ldap-pam/common-account.ldap cp -pv /root/ldap-pam/common-account /root/ldap-pam/common-account.noldap cp -pv /root/ldap-pam/common-auth /root/ldap-pam/common-auth.ldap cp -pv /root/ldap-pam/common-auth /root/ldap-pam/common-auth.noldap cp -pv /root/ldap-pam/common-password /root/ldap-pam/common-password.ldap cp -pv /root/ldap-pam/common-password /root/ldap-pam/common-password.noldap cp -pv /root/ldap-pam/common-session /root/ldap-pam/common-session.ldap cp -pv /root/ldap-pam/common-session /root/ldap-pam/common-session.noldap cp -pv /root/ldap-pam/login /root/ldap-pam/login.ldap cp -pv /root/ldap-pam/login /root/ldap-pam/login.noldap cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.ldap cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.noldap |
Funktionierende Config unveränderbar machen:
chattr -V +i /root/ldap-pam/*.noldap chattr -V +i /etc/samba/smb.conf.noldap |
Scripts schreiben:
vi /root/ldapon.sh
ln -vs /root/ldap-pam/common-account.ldap /etc/pam.d/common-account ln -vs /root/ldap-pam/common-auth.ldap /etc/pam.d/common-auth ln -vs /root/ldap-pam/common-password.ldap /etc/pam.d/common-password ln -vs /root/ldap-pam/common-session.ldap /etc/pam.d/common-session ln -vs /root/ldap-pam/login.ldap /etc/pam.d/login ln -vs /etc/samba/smb.conf.ldap /etc/samba/smb.conf /etc/init.d/samba restart |
vi /root/ldapoff.sh
ln -vs /root/ldap-pam/common-account.noldap /etc/pam.d/common-account ln -vs /root/ldap-pam/common-auth.noldap /etc/pam.d/common-auth ln -vs /root/ldap-pam/common-password.noldap /etc/pam.d/common-password ln -vs /root/ldap-pam/common-session.noldap /etc/pam.d/common-session ln -vs /root/ldap-pam/login.noldap /etc/pam.d/login ln -vs /etc/samba/smb.conf.noldap /etc/samba/smb.conf /etc/init.d/samba restart |
Scripts ausführbar machen:
chmod 755 /root/ldapon.sh chmod 755 /root/ldapoff.sh |
So kann ich einerseits die "normalen" configdateien in /etc/pam.d bearbeiten (da sie ja nur links sind) nicht ausversehen die "falschen" editieren (da sie unveränderbar sind) und mittels /.ldapon.sh, bzw. /.ldapoff.sh jederzeit die LDAP-, oder die (funktionierende) nicht-LDAP Umgebung aufrufen.
Hinweis: Läuft die LDAP-Konfiguration sollte man die links unter /etc/pam.d/ löschen und stattdessen die *.ldap Files wieder Zurück kopieren.
So, nun werden die Security-Module des Systems noch so konfiguriert, dass auch das ganze Linux System die Infos zuerst aus der LDAP-Datenbank liesst.
<EM>Achtung:</EM> Damit wird ggf. das /etc/passwd /etc/groups und /etc/shadow System ungültig! -Die User/PW Daten sind dann alle in der LDAP Datenbank!
Daher erfolgt hier zu einigen der zu bearbeitenden Dateien eine genauere Beschreibung; es ist sehr wichtig zu wissen, was ihr hier ändert!
PAM common settings für alle Services
<SMALL>PAM steht für "Pluggable Authentication Modules". Diese regeln unter Linux den Modus für die Zugriffs-Liste. Standardmässig werden bei einem Unix-System die Benutzer-Infos aus den Dateien: /etc/passwd /etc/groups und /etc/shadow gelesen.
Diese kann man aber im PAM Modul ändern, so dass die Infos z.B. auch aus einer mysql, oder eben LDAP Datenbank (oder beiden) geholt werden können.
Es gilt grundsätzlich, dass zuerst der erste Eintrag in der Reihenfolge abgefragt wird, dann der Zweite, dann der dritte, usw.
D.h. wenn ich einem PAM File angebebe, dass die User-Authentifizierung über LDAP, mysql, passwd erfolgen soll, wird bei einem Login erst das LDAP verzeichnis abgefragt; findet sich die Info darin erfolgt das Login, falls nicht wird die mysql, dann das passwd-file, usw. abgefragt. Ist die Information in allen angegebenen sourcen nicht verfügbar wird eine "login failed" fehlermeldung ausgegeben.</SMALL>
/etc/pam.d/
<SMALL>Im Verzeichnis /etc/pam.d werden die Konfigurationsdateien für jeden Service gespeichert, der die PAM Module nutzt. In unserem Fall also z.B. samba/ldap.</SMALL>
/etc/pam.d/common-account
<SMALL>Das Account Modul regelt ob und wie sich ein benutzer einloggen kann und schaut z.B. nach ob das PW abgelaufen ist, er sich nur zu bestimmten tagen einloggen darf oder ob er sich remote bzw. über die Konsole anmeldet, usw.</SMALL>
account required pam_unix.so account sufficient pam_ldap.so |
/etc/pam.d/common-auth
<SMALL>Im Auth-Modul wird geprüft ob es den Benutzer gibt, dieser ein gültiges Passwort eingegeben hat und zu welcher Gruppe dieser gehört. (Standardmässig sind das die Files: /etc/passwd, /etc/shadow und /etc/group)</SMALL>
auth sufficient pam_unix.so nullok_secure auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so |
/etc/pam.d/common-password
<SMALL>Dieses Modul regelt das updaten/ändern des User-Passworts</SMALL>
password sufficient pam_unix.so nullok obscure min=4 max=8 md5 password sufficient pam_ldap.so use_first_pass use_authtok password required pam_deny.so |
/etc/pam.d/common-session
<SMALL>Dinge die getan werden, bevor der Benutzer sich einloggt; dies sind z.B. das Mounten von User-Spezifischen verzeichnissen, Umgebungsvariablen, usw.</SMALL>
session required pam_unix.so session optional pam_ldap.so |
/etc/nsswitch.conf
<SMALL>Diese Datei enthält die Sourcen wo bestimmte system-calls ihre Informationen abrufen. Die Shell kann sich z.B. die Passwörter von Files oder Datenbanken holen, die Namensauflösung vom DNS-Server, usw.</SMALL>
passwd: compat ldap group: compat ldap shadow: compat ldap |
/etc/libnss-ldap.conf
~ Zeile: 50
rootbinddn cn=admin,dc=samba-ldap,dc=local |
~ Zeile: 179
nss_base_passwd ou=Users,dc=samba-ldap,dc=local?one |
nss_base_passwd ou=Machines,dc=samba-ldap,dc=local?one |
nss_base_shadow ou=Users,dc=samba-ldap,dc=local?one |
nss_base_group ou=Groups,dc=sama-ldap,dc=local?one |
~ Zeile: 217
pam_password md5 |
~ Zeile: 275
ssl no |
Nun haben wire s fast geschaft. Jetzt müssen wir nur noch die Grunddaten in die LDAP Datenbank schreiben.
Da bei manchen Installationen beim ersten Start nach der Installation nur fehlerhafte Daten in die Datenbank geschrieben werden, werden wir diese erstmal stoppen und dann löschen. Nach einem erfolgreichen löschen der Daten müssen wir allerdings vor dem Eintragen unserer Daten die LDAP Datenbank wieder starten.
debain-pdc:~# /etc/init.d/slapd stop
debian-pdc:~# rm /var/lib/ldap/.
debian-pdc:~# /etc/init.d/slapd start
Nun ist die Datenbank soweit vorbereitet damit wir unsere Daten mit smbldap-populate einspielen:
smbldap-populate |
Ausgabe:
Populating LDAP directory for domain SAMBA-LDAP (S-1-5-21-2856778860-2055491937-1446371655) (using builtin directory structure) adding new entry: dc=samba-ldap,dc=local adding new entry: ou=Users,dc=samba-ldap,dc=local adding new entry: ou=Groups,dc=samba-ldap,dc=local adding new entry: ou=Machines,dc=samba-ldap,dc=local adding new entry: ou=Idmap,dc=samba-ldap,dc=local adding new entry: uid=root,ou=Users,dc=samba-ldap,dc=local adding new entry: uid=nobody,ou=Users,dc=samba-ldap,dc=local adding new entry: cn=Domain Admins,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Domain Users,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Domain Guests,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Domain Computers,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Administrators,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Account Operators,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Print Operators,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Backup Operators,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Replicators,ou=Groups,dc=samba-ldap,dc=local adding new entry: sambaDomainName=SAMBA-LDAP,dc=samba-ldap,dc=local Please provide a password for the domain root: Changing password for root New password : samba-ldap Retype new password : samba-ldap |
Jetzt können wir den smbd Final neustarten und versuchen auf die Freigaben zu zugreifen.
/etc/init.d/samba restart |
|| Link | Beschreibung
[http://www.openldap.org/|openldap.org] | Der bekannte LDAP Server für Linux, Dokumentation
[http://www.yolinux.com/TUTORIALS/LinuxTutorialLDAP.html|YoLinux LDAP Tutorial] | Gutes tutprial mit lauffähigem Beispiel
[http://www.pro-linux.de/t_office/openldap-adressbuch.html|Openldap Adressbuch] | Infos für die integration in Outlook/Thunderbird/etc. Clients
[http://www.linux-magazin.de/heft_abo/ausgaben/2001/05/straffe_verwaltung|Linux-Magazin: OpenLDAP Praxis] | Einige interessante Info szum Aufbau von LDAP Servern
[http://www.samba-ldap.de/|samba-ldap.de] | Eine Ganze Webseite, die sich mit dem Thema beschäftigt
||
|| File | Beschreibung
[http://phpldapadmin.sourceforge.net/|phpLDAPadmin] | Sehr schöne Weboberfläche für die Administration von LDAP-Servern
[http://www-unix.mcs.anl.gov/~gawor/ldap/|LDAPBrowser] | JAVA LDAP-Browser um die LDAP-Verbindung zu testen und Einträge zu Erstellen; klappt damit manchmal besser als mit dem Web-Tool!
||
Hat man erst mal einen SAMBA-Fileserver eingerichtet, möchte man auch die Drucker über diesen steuern; besonders bei Netzwerkdruckern wird man die erweiterten Möglichkeiten wie History der gedruckten Dokumente, Druckerstatus, usw. Nutzen.
Und das schönste: Mittlerweile ist die Einrichtung mit SAMBA & CUPS kein Problem mehr!
Continue reading PrintserverIn diesem Tutorial werden wir einen Nameserver mit bind auf CentOS erstellen. Die Konfiguration halten wir dabei sehr flexibel, dass man diesen sowohl als DNS-Server fürs lokale Netzwerk zuhause, wie auch als „Webhosting-Nameserver“ gebrauchen kann.
Continue reading Namesverwaltung mit DNS
DHCP steht für <I>Dynamic Host Configuration Protocol</I> und ist ein Protokoll, mit dem sich ein Computer selbständif fürs Netzwerk konfigurieren kann.
[stextbox id=“note“ caption=“Hinweis“]Falls beim Start des DHCPs ein Fehler kommt, muss man ihn vorher evtl. auf eth1 (statt standardmässig eth0) um konfigurieren.
Bei Debian geht das so:
vi /etc/default/dhcp |
, dort das verwendete (interne) interface eintragen und mittels:
dpkg-reconfigure dhcp |
neu Konfigurieren.[/stextbox]
Nun öffnen wir die DHCP Konfigurations-Datei mittels: vi /etc/dhcpd.conf -Falls diese Datei noch nicht existiert, muss sie erstellt werden.
Darin schreiben wir folgendes (evtl. schon vorhandenen Text löschen):
subnet 10.1.1.0 netmask 255.255.255.0
{
# Global options
range 10.1.1.100 10.1.1.240;
option subnet-mask 255.255.255.0;
option routers 10.0.0.1;
option domain-name-servers 10.1.1.3;
option domain-name "home.lan";
option ip-forwarding on;
option netbios-node-type 1;
} |
Mit dem obigen Code definieren wir mit der Zeile subnet 10.1.1.0 netmask 255.255.255.0 ein Klasse-A-Netzwerk (10.1.1.x) mit der Netzmaske: 255.255.255.0, dies entspricht der Konfiguration, die wir im ersten Artikel bei allen Computern eingetragen haben.
Innerhalb der geschweiften Klammern können wir dann angeben, wie die einzelnen PCs konfiguriert werden sollen:
Nun würden alle PCs jeweils eine zufällige IP-Adresse von 10.1.1.100 bis 10.1.1.240 bekommen, was zwar ganz praktisch ist, wenn mal ein fremder PC ans Netzwerk angeschlossen wird, aber eher weniger geeignet, für unsere festen PCs, da wir uns ja dann nie recht wüssten was für eine IP wir gerade haben. Deshalb geben wir den festen PCs im Netzwerk auch eine feste IP-Adresse.
Diese definieren wir mit:
host pc-name
{
hardware ethernet 00:00:00:00:00:00;
fixed-address 0.0.0.0;
} |
host pc-name leitet hier die Konfiguration für den PC mit dem namen pc-name ein, die Optionen in den geschweiften Klammern bedeuten:
Ein solcher host-block musst du nun für jeden PC im Netzwerk definieren, der eine feste IP-Adresse bekommen soll; diese Blöcke müssen wiederum innerhalb des subnet-blocks stehen.
Für unsere 3 PCs aus dem ersten Beitrag sähe die Konfigurationsdatei dhcpd.conf also so aus (Die Physikalischen Adressen sind rein zufällig und müssen angepasst werden!):
################################################################################
# #
# DHCP Configuration for home.lan on eth1 #
# #
################################################################################
subnet 10.1.1.0 netmask 255.255.255.0
{
#Globale Optionen
range 10.1.1.100 10.1.1.240;
option subnet-mask 255.255.255.0;
option routers 10.0.0.1;
option domain-name-servers 10.1.1.3;
option ip-forwarding on;
option netbios-node-type 1;
#Einzelkonfigurationen
host pc01
{
hardware ethernet 00:FF:00:33:00:BB;
fixed-address 10.1.1.10;
}
host pc02
{
hardware ethernet BB:00:20:00:FF:00;
fixed-address 10.1.1.20;
}
host pc03
{
hardware ethernet 22:FF:00:00:00:AA;
fixed-address 10.1.1.30;
}
} |
Damit hättest du den DHCP-Server auch schon fertig konfiguriert!
Nun kannst du den DHCP-Server starten mit:
/etc/init.d/dhcp start |
|| Link | Beschreibung
[http://www.geo.uni-bonn.de/members/kuepper/linux/DHCP.txt|DHCP-Textfile] | Umfangreiche Informationen über die Einstellungsmöglichkeiten beim DHCPD
||