Kapitel 3. Schnellstart: Allheilmittel für Ungeduldige

John H. Terpstra

Samba Team

Joachim Luft

Deutsche Übersetzung
German Samba-3-Docs-Translation Team

Inhaltsverzeichnis

Eigenschaften und Vorzüge
Beschreibung von Beispielseiten
Arbeitsbeispiele
Stand-alone-Server
Domänen-Mitgliedsserver
Domänencontroller

Als wir zum ersten Mal nach Vorschlägen für die Aufnahme in die Samba HOWTO-Dokumentation fragten, fragte gleich jemand nach Beispielkonfigurationen , und zwar nach vielen. Diese Bitte ist jedoch schwierig zu erfüllen, zumal man unserer Einschätzung nach mehr lernt, wenn man sich viele Ausschnitte aus Produktionssystemen anschaut. Dies ist es, was der Rest dieses Dokuments macht: Es zeigt ausführliche Beschreibungen der Konfigurationsmöglichkeiten innerhalb des Kontextes des betroffenen Kapitels. Wir hoffen, dass dieses Kapitel die verlangte „Medizin“ ist.

Eigenschaften und Vorzüge

Samba braucht sehr wenig Konfiguration, um ein arbeitsfähiges Basissystem zu erzeugen. In diesem Kapitel gehen wir vom Einfachen zum Komplexen vor, und für jeden stellen wir alle Schritte und Konfigurationsdateien vor, die benötigt werden, um Samba zum Laufen zu bringen. Bitte beachten Sie, dass ein umfassend konfiguriertes System wahrscheinlich zusätzliche praktische Möglichkeiten ergibt. Die zusätzlichen Möglichkeiten werden im Rest dieses Dokuments behandelt.

Die Beispiele, die hier benutzt werden, haben wir von Leuten erhalten, die Anfragen zu Beispielkonfigurationen gestellt hatten. Alle Identitäten wurden zu deren Schutz verschleiert, und die Ähnlichkeit zu unrealistischen und nicht existierenden Seiten ist beabsichtigt.

Beschreibung von Beispielseiten

Im ersten Fall von Konfigurationsbeispielen gehen wir vom Fall einer äußerst einfachen Systemvoraussetzung aus. Es gibt manchmal wirklich das Bestreben, etwas zu kompliziert zu machen, statt so einfach wie möglich mit geringstem Aufwand.

??? dokumentiert den Servertyp, der vielleicht der richtige für CD-ROM Freigaben ist oder der auf Dokumente für Netzwerk-Benutzer verweist. Diese Konfiguration wird ebenfalls in ???, ??? erläutert. Der Zweck dieser Konfiguration ist es, ein Freigabe-Laufwerk zur Verfügung zu stellen, auf das von jedem, auch von Gästen, lesend zugegriffen werden kann.

Das zweite Beispiel zeigt eine Minimal-Konfiguration eines Druckservers, so dass jedermann drucken kann, der die richtigen Druckertreiber auf seinem Rechner installiert hat. Dies ist ein Abbild des Systems, das in ???, ??? beschrieben ist.

Das nächste Beispiel ist das eines gesicherten Datei- und Druckservers in einer Büroumgebung, der nur von Benutzern genutzt werden kann, die ein Konto auf diesem System haben. Dieser Server ist absichtlich als ein Arbeitsgruppen-, Datei- und Druckserver ausgelegt, ist aber wesentlich sicherer als ein anonymer Dateiserver. Diese Art von System wird typischerweise die Bedürfnisse eines kleinen Büros abdecken. Der Server bietet keine Netzwerk- Anmelde-Möglichkeiten und keinen Domänencontroller, ist also nur ein Network Attached Storage (NAS)-Device- und Druckserver.

Abschließend betrachten wir noch ein etwas komplexeres System, das sowohl in ein Microsoft Windows-Netzwerk integriert ist als auch dieses komplett ersetzen kann. Die zur Verfügung gestellten Beispiele decken sowohl Domänen-Mitgliedsserver ab als auch Samba-Domänencontroller (PDC/BDC), und schlussendlich beschreiben wir detailliert ein großes verteiltes Netzwerk mit Außenstellen in Filialen.

Arbeitsbeispiele

Die Konfigurationsbeispiele sind so angelegt, dass sie alles enthalten, um Samba zum Laufen zu bekommen. Sie beinhalten keine grundlegenden Konfigurationen von Betriebsystem-Plattformen, dies würde den Rahmen dieses Texts sprengen.

Es wird des Weiteren davon ausgegangen, dass Samba korrekt installiert wurde, entweder durch Installationspakete, die vom Betriebssystem-Provider zur Verfügung gestellt wurden, oder auf andere Weise.

Stand-alone-Server

Der Begriff „Stand-alone-Server“ bedeutet nichts anderes, als die Tatsache, dass es sich nicht um einen Domänencontroller handelt und der Server auch nicht an der Domänenkontrolle teilnimmt. Es kann ein sehr einfacher Arbeitsgruppen-ähnlicher Server sein, oder es kann sich auch um einen etwas komplexeren Server als Mitglied eines Domänensicherheitskontextes handeln.

Anonymer Nur-Lese-Dokumenten-Server

Das Ziel dieses Servertyps ist es, jedem Benutzer jedes Dokument oder jede Datei zugänglich zu machen, das bzw. die auf den Freigaberessourcen liegt. Die Freigaberessourcen können dabei ein CD-ROM-Laufwerk, ein CD-ROM-Image oder eine Dateispeicherebene sein.

Als die Beispiele entwickelt wurden, wurde Wert darauf gelegt, dass das System wachsen und mehr Möglichkeiten bieten kann, wie es eben im echten Arbeitsalltag passiert, wenn eine Firma in ihrer Größe und ihren Bedürfnissen wächst und Veränderung braucht.

Die Konfigurationsdatei:

Beispiel 3.1. Konfiguration Anonymer Nur-Lese-Server

# Global parameters
[global]
workgroup = MITTELERDE
netbios name = HOBBIT
security = share
[data]
comment = Daten
path = /export
read only = Yes
guest ok = Yes

  • Der Dateisystem-Freigabepunkt wird /export sein.

  • Alle Dateien werden von einem Benutzer namens Jack Baumbach gehalten. Jacks Anmeldename wird jackb sein. Sein Passwort wird m0r3pa1n sein, natürlich ist das nur das Beispiel, das wir benutzen; benutzen Sie es nicht in einer Produktionsumgebung, da alle Leser dieses Dokuments das Passwort kennen werden.

Prozedur 3.1. Installationsprozedur Nur-Lese-Server

  1. Fügen Sie den Benutzer dem System hinzu (mit Erzeugung des Benutzer-Homeverzeichnisses):

    root# useradd -c "Jack Baumbach" -m -g users -p m0r3pa1n jackb
    

  2. Erzeugen Sie das Verzeichnis, und setzen Sie die Rechte und Mitgliedschaft:

    root# mkdir /export
    root# chmod u+rwx,g+rx,o+rx /export
    root# chown jackb.users /export
    

  3. Kopieren Sie die Dateien, die freigegeben werden sollen, nach /export.

  4. Installieren Sie die Samba-Konfigurationsdatei (/etc/samba/smb.conf) wie gezeigt.

  5. Testen der Konfigurationsdatei:

    root# testparm
    

    Beachten Sie alle Fehlermeldungen, die evtl. angezeigt werden. Fahren Sie nicht fort, bevor Sie nicht eine fehlerfreie Rückmeldung erhalten. Ein Beispiel der Rückmeldungen der folgenden Datei wird die Datei anzeigen.

    Load smb config files from /etc/samba/smb.conf
    Processing section "[data]"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    Press enter to see a dump of your service definitions
    [Press enter]
    
    # Global parameters
    [global]
    	workgroup = MITTELERDE
    	netbios name = HOBBIT
    	security = share
    
    [data]
    	comment = Data
    	path = /export
    	read only = Yes
    	guest only = Yes
    

  6. Starten Sie Samba mit der für Ihr Betriebssystem-Plattform möglichen Methode.

  7. Konfigurieren Sie Ihren Microsoft Windows-Client für die Arbeitsgruppe MITTELERDE, setzen Sie den Maschinennamen auf ROBBINS, starten Sie den PC neu, und warten Sie ein paar (2 - 5) Minuten. Dann öffnen Sie den Windows Explorer und betrachten die Netzwerkumgebung. Die Maschine HOBBIT sollte sichtbar sein. Wenn Sie auf das Icon dieser Maschine klicken, sollte es sich öffnen und Zugriff auf die Freigabe data ermöglichen. Danach klicken Sie auf diese Freigabe, und Sie sollten Zugriff auf die Dateien haben, die wir vorher im /export Verzeichnis abgelegt hatten.

Die oben genannten Informationen (die nachstehenden „global parameters“) stellen den kompletten Inhalt der Datei /etc/samba/smb.conf dar.

Anonymer Schreib-Lese-Dokumenten-Server

Sie sollten diese Konfiguration als eine Erweiterung des vorstehenden Beispiels ansehen. Der Unterschied ist, dass der Freigabezugriff nun mit der Benutzeridentität von jackb und der primären Gruppe, der jackb angehört, zusammenhängt. Eine weitere Verbesserung, die wir machen können, ist, den Benutzer jackb zu der Datei smbpasswd hinzuzufügen. Um dies zu erledigen, machen Sie Folgendes:

root# smbpasswd -a jackb
New SMB password: m0r3pa1n
Retype new SMB password: m0r3pa1n
Added user jackb.

Das Hinzufügen dieses Benutzers zu der Datei smbpasswd erlaubt es, dass alle Dateien, die in den Explorer-Eigenschaften angezeigt werden, als zu jackb gehörend angezeigt werden und nicht mit Unbekannter Benutzer beschriftet sind.

Die komplette geänderte Datei smb.conf wird in ??? dargestellt.

Beispiel 3.2. Geänderte anonyme Schreib-Lese-Datei smb.conf

# Globale Parameter
[global]
workgroup = MITTELERDE
netbios name = HOBBIT
security = SHARE
[data]
comment = Daten
path = /export
force user = jackb
force group = users
read only = No
guest ok = Yes

Anonymer Druckserver

Ein anonymer Druckserver bietet zwei Vorteile:

  • Er erlaubt das Drucken auf allen Druckern von einer einzigen Stelle aus.

  • Er reduziert den Netzwerkverkehr dadurch, dass viele Benutzer nur eine beschänkte Anzahl von Druckern nutzen können.

Bei der einfachsten Form von anonymen Druckservern ist es allgemein so, dass die korrekte Installation von Druckertreibern auf Windows-Arbeitsstationen verlangt wird. In diesem Fall wird der Druckserver so ausgelegt, dass er Druckaufträge einfach zum Spooler durchreicht, und der Spooler sollte auf „raw pass-through“ für den Drucker konfiguriert sein. Mit anderen Worten: Der Drucker-Spooler darf keinen Filter benutzen oder den Datenstrom zum Drucker in irgendeiner Form verarbeiten.

In dieser Konfiguration ist es nicht erwünscht, den Drucker-Wizard anzuzeigen, und wir wollen auch keinen automatischen Treiberdownload haben, also werden wir dies in der folgenden Konfiguration auch abschalten. ??? ist die daraus entstandene Datei smb.conf.

Beispiel 3.3. Anonymer Druckserver smb.conf

# Globale Parameter
[global]
workgroup = MITTELERDE
netbios name = LUTHIEN
security = share
printcap name = cups
disable spoolss = Yes
show add printer wizard = No
printing = cups
[printers]
comment = Alle Drucker
path = /var/spool/samba
guest ok = Yes
printable = Yes
use client driver = Yes
browseable = No

Die vorangegangene Konfiguration ist nicht ideal. Sie benutzt keine angenehmen Funktionen und stellt absichtlich keine elegante Lösung dar. Dennoch: Sie ist grundlegend, und sie druckt.

Anmerkung

Windows-Benutzer müssen einen lokalen Drucker installieren und dann die Ausgabeschnittstelle zum Drucker ändern, nachdem sie die Treiber installiert haben. Die Ausgabeschnittstelle kann dann auf den Netzwerkdrucker dieser Maschine gesetzt werden.

Stellen Sie sicher, dass das Verzeichnis /var/spool/samba wie gewünscht verwendet werden kann. Die folgenden Schritte stellen dies sicher:

  • Das Verzeichnis muss durch den Benutzer superuser (root) und dessen Gruppe gehalten werden:

    root# chown root.root /var/spool/samba
    

  • Die Verzeichnis-Rechte müssen für öffentlichen Lese-Schreibzugriff mit dem sticky-bit wie gezeigt gesetzt werden:

    root# chmod a+rw TX /var/spool/samba
    

Anmerkung

Auf CUPS-aktivierten Systemen gibt es eine Möglichkeit, raw-Daten direkt auf den Drucker auszugeben, ohne diese durch CUPS-Druckerfilter hindurchzuleiten. An Stellen, an denen diese Methode erwünscht ist, muss ein so genanntes raw-printing device konfiguriert sein. Es ist außerdem notwendig, den raw mime-Handler in den Dateien /etc/mime.conv und /etc/mime.types einzuschalten. Sehen Sie in ??? nach.

Sicherer Lese-Schreib-Datei- und Druck-Server

Nach diesem einfachen System sehen wir uns einen etwas komplexeren Server an.

Unser neuer Server wird einen öffentlichen Bereich zur Dateiablage verlangen, der nur von authentifizierten Benutzern (z.B. solchen mit einem lokalen Konto) beschrieben werden kann, und enthält außerdem ein Home-Verzeichnis. Es wird einen Drucker geben, der für alle verfüg- und nutzbar sein wird.

Diese konstruierte Umgebung (es wurde keine Spionage zur Erlangung der Daten durchgeführt) zeigt eine sehr einfache Umgebung, die sicher genug, aber nicht zu kompliziert ist.

Die Benutzer werden sein: Jack Baumbach, Mary Orville und Amed Sehkah. Jeder wird ein Passwort haben (diese werden in weiteren Beispielen dann nicht nochmals aufgeführt). Mary wird die Druckeradministratorin sein und wird alle Dateien in dem öffentlichen Bereich halten.

Diese Konfiguration wird auf der User Level Security basieren, die den Standard darstellt und die standardmäßig Microsoft Windows-kompatible verschlüsselte Passwörter in einer Datei /etc/samba/smbpasswd ablegt. Der Standard-smb.conf-Eintrag, der dies ermöglicht, ist: passdb backend = smbpasswd, guest. Da dies der Standard ist, ist es nicht notwendig, ihn in die Konfigurationsdatei zu schreiben. Beachten Sie dabei bitte, dass der Gast-Backend automatisch in die Liste der aktiven passdb-Backends eingetragen wird, egal ob dies in der Samba-Konfigurationsdatei direkt aufgeführt wird oder nicht.

Prozedur 3.2. Installieren des Secure Office Servers

  1. Fügen Sie alle Benutzer zum Betriebssystem hinzu:

    root# useradd -c "Jack Baumbach" -m -g users -p m0r3pa1n jackb
    root# useradd -c "Mary Orville" -m -g users -p secret maryo
    root# useradd -c "Amed Sehkah" -m -g users -p secret ameds
    

  2. Konfigurieren Sie die Samba-smb.conf-Datei, wie in ??? beschrieben.

    Beispiel 3.4. Secure Office Server smb.conf

    # Globale Parameter
    [global]
    workgroup = MITTELERDE
    netbios name = OLORIN
    printcap name = cups
    disable spoolss = Yes
    show add printer wizard = No
    printing = cups
    [homes]
    comment = Home-Verzeichnisse
    valid users = %S
    read only = No
    browseable = No
    [public]
    comment = Daten
    path = /export
    force user = maryo
    force group = users
    guest ok = Yes
    [printers]
    comment = Alle Drucker
    path = /var/spool/samba
    printer admin = root, maryo
    create mask = 0600
    guest ok = Yes
    printable = Yes
    use client driver = Yes
    browseable = No

  3. Initialisieren Sie die Microsoft Windows-Passwort-Datenbank mit den neuen Benutzern:

    root# smbpasswd -a root
    New SMB password: bigsecret
    Reenter smb password: bigsecret
    Added user root.
    
    root# smbpasswd -a jackb
    New SMB password: m0r3pa1n
    Retype new SMB password: m0r3pa1n
    Added user jackb.
    
    root# smbpasswd -a maryo
    New SMB password: secret
    Reenter smb password: secret
    Added user maryo.
    
    root# smbpasswd -a ameds
    New SMB password: mysecret
    Reenter smb password: mysecret
    Added user ameds.
    

  4. Installieren Sie die Drucker, indem Sie das CUPS-Web-Interface nutzen. Stellen Sie sicher, dass alle Drucker, die mit Microsoft Windows-Clients freigegeben sind, als raw printing devices installiert sind.

  5. Starten Sie Samba mit dem betriebssystem-eigenen Administrations-Interface. Alternativ können Sie dies auch manuell tun:

    root#  nmbd; smbd;
    

  6. Konfigurieren Sie das /export-Verzeicnis:

    root# mkdir /export
    root# chown maryo.users /export
    root# chmod u=rwx,g=rwx,o-rwx /export
    

  7. Überprüfen Sie, dass Samba korrekt läuft:

    root# smbclient -L localhost -U%
    Domain=[MITTELERDE] OS=[UNIX] Server=[Samba-3.0.0]
    
    Sharename      Type      Comment
    ---------      ----      -------
    public         Disk      Data
    IPC$           IPC       IPC Service (Samba-3.0.0)
    ADMIN$         IPC       IPC Service (Samba-3.0.0)
    hplj4          Printer   hplj4
    
    Server               Comment
    ---------            -------
    OLORIN               Samba-3.0.0
    
    Workgroup            Master
    ---------            -------
    MITTELERDE             OLORIN
    

  8. Verbinden Sie sich zu OLORIN als maryo:

    root# smbclient //olorin/maryo -Umaryo%secret
    OS=[UNIX] Server=[Samba-3.0.0]
    smb: \> dir
    .                             D        0  Sat Jun 21 10:58:16 2003
    ..                            D        0  Sat Jun 21 10:54:32 2003
    Documents                      D        0  Fri Apr 25 13:23:58 2003
    DOCWORK                        D        0  Sat Jun 14 15:40:34 2003
    OpenOffice.org                 D        0  Fri Apr 25 13:55:16 2003
    .bashrc                        H     1286  Fri Apr 25 13:23:58 2003
    .netscape6                    DH        0  Fri Apr 25 13:55:13 2003
    .mozilla                      DH        0  Wed Mar  5 11:50:50 2003
    .kermrc                        H      164  Fri Apr 25 13:23:58 2003
    .acrobat                      DH        0  Fri Apr 25 15:41:02 2003
    
    		55817 blocks of size 524288. 34725 blocks available
    smb: \> q
    

Bis hierher sollten Sie die Konfigurationsgrundlagen mitbekommen haben. Ehrlich, jetzt ist es an der Zeit, etwas komplexere Beispiele kennen zu lernen. Für den Rest dieses Kapitels werden wir die Anleitungen abkürzen, da sie vorher bereits behandelt wurden.

Domänen-Mitgliedsserver

In diesem Abschnitt werden wir uns die einfachstmögliche Serverkonfiguration ausdenken, die man erstellen kann, um ein Vertriebsbüro glücklich zu machen. Seien Sie gewarnt, die Anwender sind Vertriebsleute und haben dementsprechend schlimme Anforderungen. Das Budget sieht nur einen Server für diese Einrichtung vor.

Das Netzwerk wird durch eine interne Information Services Group (ISG) verwaltet, zu der wir gehören. Interne Regeln sind typisch für eine mittelständische Organisation; die Personalabteilung ist der Ansicht, dass die ISG ihr untersteht, weil deren Mitglieder ständig Benutzer hinzufügen oder löschen. Des Weiteren müssen die Abteilungsleiter zähnefletschend darum kämpfen, grundlegende Netzwerkdienste für Ihre Mannschaft zu erhalten. Die Buchhaltung ist natürlich ebenfalls wieder etwas anderes, sie bekommt stets, was sie braucht. Dies sollte vorerst die Situation beschreiben.

Wir werden die Benutzer aus dem letzten Beispiel nehmen. Der Vertrieb hat einen eigenen zentralen Drucker, den alle Abteilungsangehörigen nutzen können. Es gibt auch noch einen Scheckdrucker, den aber nur die Person nutzen darf, die autorisiert ist, Schecks zu drucken. Der Chefbuchhalter (CFO) möchte, dass dieser Drucker vollständig geschützt ist und deshalb auch in seinem eigenen privaten Teil des Büros aufgebaut ist. Deshalb muss es ein Netzwerkdrucker sein.

Die Vertriebsstelle benutzt eine Vertriebssoftware namens SpytFull, die von einem zentralen Applikationsserver aus läuft. Die Software ist für einen Server lizenziert, es gibt keine Arbeitsplatzkomponenten, und sie wird von einer gemappten Freigabe aus gestartet. Die Datenablage erfolgt in einem Unix-basierenden SQL-Backend. Die UNIX-Gurus kümmern sich darum, es ist also nicht unser Problem.

Die Vertriebsmanagerin (maryo) möchte ein allgemein zugängliches Dateisystem und zusätzlich eine getrennte Dateiablage für Formbriefe (nastygrams). Der Bereich für die Formbriefe soll für alle Vertriebsmitarbeiter außer der Managerin selbst nur lesbar sein. Das allgemein zugängliche Dateisystem muss ein strukturiertes Layout haben: Es muss sowohl einen zentralen Bereich für alle Mitarbeiter geben, um allgemeine Dokumente zu speichern, als auch einen getrennten Bereich für den jeweiligen Mitarbeiter selbst, in dem er private Dinge ablegen kann, aber die Managerin möchte auf alle diese Bereiche vollen Zugriff haben. Die Benutzer haben ein privates Home-Verzeichnis für persönliche Dateien, die arbeitsgebunden sind, und für Materialien, die nichts mit ihrer Arbeit zu tun haben.

Beispielkonfiguration

Der Server valinor wird ein Mitglied der Firmendomäne sein. Die Vetriebsleute haben nur einen lokalen Server. Benutzerkonten werden auf dem Domänencontroller liegen, genauso wie die Arbeitsplatzprofile und alle Netzwerk-Richtliniendateien.

  1. Fügen Sie keine Benutzer zu den UNIX/Linux-Servern hinzu, dies wird in der zentralen Domäne gemacht.

  2. Konfigurieren Sie smb.conf, wie in ??? und ??? beschrieben.

    Beispiel 3.5. Mitgliedsserver smb.conf (globale Einstellungen)

    # Globale Parameter
    [global]
    workgroup = MITTELERDE
    netbios name = VALINOR
    security = DOMAIN
    printcap name = cups
    disable spoolss = Yes
    show add printer wizard = No
    idmap uid = 15000-20000
    idmap gid = 15000-20000
    winbind separator = +
    winbind use default domain = Yes
    use sendfile = Yes
    printing = cups

    Beispiel 3.6. Mitglieds-Server smb.conf (Freigaben und Dienste)

    [homes]
    comment = Home-Verzeichnisse
    valid users = %S
    read only = No
    browseable = No
    [spytfull]
    comment = Nur für Vertriebsanwendungen
    path = /export/spytfull
    valid users = @Accounts
    admin users = maryo
    read only = Yes
    [public]
    comment = Daten
    path = /export/public
    read only = No
    [printers]
    comment = Alle Drucker
    path = /var/spool/samba
    printer admin = root, maryo
    create mask = 0600
    guest ok = Yes
    printable = Yes
    use client driver = Yes
    browseable = No

  3. Treten Sie der Domäne bei. Beachten Sie: Starten Sie Samba nicht, bevor dieser Schritt abgeschlossen ist!

    root# net rpc join -Uroot%'bigsecret'
    Joined domain MITTELERDE.
    

  4. Stellen Sie unbedingt sicher, dass der nscd-Daemon auf allen Systemen abgeschaltet oder heruntergefahren ist, auf denen winbind lauffähig konfiguriert ist.

  5. Starten Sie Samba mit der für Ihre Betriebssystem-Plattform vorgegebenen Methode. Sie können dies als root auch manuell ausführen:

    root# nmbd; smbd; winbindd;
    

  6. Konfigurieren Sie die Nameservice-Switch-Konfigurationsdatei auf Ihrem System, um Benutzer- und Gruppennamen durch winbind aufzulösen. Ändern Sie die folgenden Zeilen in /etc/nsswitch.conf:

    passwd: files winbind
    group:  files winbind
    hosts:  files dns winbind
    

  7. Setzen Sie das Passwort, um wbinfo nutzen zu können:

    root# wbinfo --set-auth-user=root%'bigsecret'
    

  8. Überprüfen Sie, dass die Domänenbenutzer und Gruppenzugehörigkeiten korrekt aufgelöst werden können, indem Sie das Folgende ausführen:

    root# wbinfo -u
    MITTELERDE+maryo
    MITTELERDE+jackb
    MITTELERDE+ameds
    ...
    MITTELERDE+root
    
    root# wbinfo -g
    MITTELERDE+Domain Users
    MITTELERDE+Domain Admins
    MITTELERDE+Domain Guests
    ...
    MITTELERDE+Accounts
    

  9. Überprüfen Sie, dass winbind läuft. Das Folgende demonstriert die korrekte Auflösung des Benutzernamens durch das System-Dienstprogramm getent:

    root# getent passwd maryo
    maryo:x:15000:15003:Mary Orville:/home/MITTELERDE/maryo:/bin/false
    

  10. Ein abschließender Test, ob wir dies auch unter Kontrolle haben, versichert uns dann:

    root# touch /export/a_file
    root# chown maryo /export/a_file
    root# ls -al /export/a_file
    ...
    -rw-r--r--    1 maryo    users       11234 Jun 21 15:32 a_file
    ...
    
    root# rm /export/a_file
    

  11. Die Konfiguration ist nahezu fertig. Dies ist ein günstiger Zeitpunkt, um die Verzeichnisstruktur für diese Einrichtung anzulegen:

    root# mkdir -p /export/{spytfull,public}
    root# chmod ug=rwxS,o=x /export/{spytfull,public}
    root# chown maryo.Accounts /export/{spytfull,public}
    

Domänencontroller

Für den Rest dieses Kapitels liegt der Schwerpunkt auf der Konfiguration der Domänenkontrolle. Die folgenden Beispiele sind für zwei Implementierungsstrategien ausgelegt. Erinnern Sie sich: Unsere Aufgabe ist eine einfache, aber funktionierende Lösung. Der Rest dieses Buches soll helfen, die Gelegenheit für eine größere Funktionalität und die damit einhergehende Komplexität zu beleuchten.

Sie können einen Domänencontroller recht einfach konfigurieren, indem Sie das neue tdbsam-Passwort-Backend nutzen. Dieser Konfigurationstyp ist gut für kleine Büros, hat aber eine beschränkte Skalierungsmöglichkeit (Replikation funktioniert nicht), und die Performance wird vermutlich sinken, wenn die Größe und Komplexität der Domäne zunehmen.

Die Nutzung von tdbsam sollte am besten auf Einrichtungen beschränkt werden, die nicht mehr als einen primären Domänencontroller (PDC) benötigen. Wenn die Größe einer Domäne anwächst, kommt der Wunsch nach einem zusätzlichen Domänencontroller auf. Versuchen Sie nicht, eine Microsoft Windows-Netzwerkumgebung zu klein auszulegen; Domänencontroller stellen lebenswichtige Authentifizierungsdienste zur Verfügung. Die folgenden Merkmale sind Symptome einer zu klein ausgelegten Domänencontroller-Umgebung:

  • Domänen-Anmeldungen schlagen sporadisch fehl.

  • Dateizugriffe auf einen Domänen-Mitgliedsserver schlagen sporadisch fehl, es kommt zu Fehlermeldungen mit Zugriffsverweigerungen.

Eine besser skalierbare Option für Domänencontroller-Authentifizierungs-Backends könnte das Microsoft Active Directory oder ein LDAP-basierendes Backend nutzen. Samba-3 stellt dies für beide Optionen als einen Domänen-Mitgliedsserver zur Verfügung. Als ein PDC ist Samba-3 nicht in der Lage, eine genaue Alternative zu den Funktionalitäten zur Verfügung zu stellen, die Active Directory bietet. Samba-3 kann eine skalierbare LDAP-basierende PDC/BDC-Lösung zur Verfügung stellen.

Das tdbsam-Authentifizierungs-Backend bietet keine Funktion zum Replizieren der Datenbankinhalte, außer für externe Möglichkeiten (z.B. gibt es kein autarkes Protokoll in Samba-3 für die Security-Account-Manager-(SAM-)Datenbank-Replikation).

Anmerkung

Falls Sie also mehr als einen Domänencontroller benötigen, sollten Sie kein tdbsam-Authentifizierungs-Backend benutzen.

Beispiel: Ingenieur-Büro

Der Netzwerkserver des Ingenieurbüros, den wir hier präsentieren, ist dazu gedacht, das neue tdbsam-Passwort-Backend zu demonstrieren. Die tdbsam-Funktion ist neu in Samba-3. Sie soll viele Benutzer- und Maschinenkonten zur Verfügung stellen, die mit Microsoft Windows NT4 möglich sind. Es ist sicher, dies in kleineren Netzwerken zu benutzen.

  1. Eine PDC-Konfiguration in Produktion, die das tdbsam-Passwort-Backend benutzt, können Sie ??? hier sehen ???:

    Beispiel 3.7. Ingenieurbüro smb.conf (Globale Einstellungen)

    [global]
    workgroup = MITTELERDE
    netbios name = FRODO
    passdb backend = tdbsam
    printcap name = cups
    add user script = /usr/sbin/useradd -m %u
    delete user script = /usr/sbin/userdel -r %u
    add group script = /usr/sbin/groupadd %g
    delete group script = /usr/sbin/groupdel %g
    add user to group script = /usr/sbin/usermod -G %g %u
    add machine script = /usr/sbin/useradd -s /bin/false \
    -d /dev/null %u
    # Hinweis: Das Folgende spezifiziert das Standard-Logon-Skript.
    # Pro-Benutzer-Logon-Skripten können im Benutzerkonto spezifiziert werden, und zwar durch pdbedit
    logon script = scripts\logon.bat
    # Dies setzt den Standard-Profilpfad. Setzen Sie Pro-Benutzerpfade mit pdbedit
    logon path = \\%L\Profiles\%U
    logon drive = H:
    logon home = \\%L\%U
    domain logons = Yes
    os level = 35
    preferred master = Yes
    domain master = Yes
    idmap uid = 15000-20000
    idmap gid = 15000-20000
    printing = cups

    Beispiel 3.8. Ingenieurbüro smb.conf (Freigaben und Dienste)

    [homes]
    comment = Home-Verzeichnisse
    valid users = %S
    read only = No
    browseable = No
    # Drucker Auto-Freigabe (stellt Drucker durch CUPS zur Verfügung)
    [printers]
    comment = Alle Drucker
    path = /var/spool/samba
    printer admin = root, maryo
    create mask = 0600
    guest ok = Yes
    printable = Yes
    browseable = No
    [print$]
    comment = Druckertreiber-Freigabe
    path = /var/lib/samba/drivers
    write list = maryo, root
    printer admin = maryo, root
    # Wird für Domänen-Anmeldungen benötigt
    [netlogon]
    comment = Netzwerk-Anmeldedienst
    path = /var/lib/samba/netlogon
    admin users = root, maryo
    guest ok = Yes
    browseable = No
    # Für Profile, erstellt ein Benutzerverzeichnis unterhalb des Pfades
    # z.B.: mkdir -p /var/lib/samba/profiles/maryo
    [Profiles]
    comment = Roaming Profile Share (wandernde Benutzerprofile)
    path = /var/lib/samba/profiles
    read only = No
    profile acls = Yes
    # Andere Ressourcen (Freigaben/Drucker) folgen weiter unten.
    ...

  2. Erstellen Sie die benötigten UNIX-Gruppenkonten mit Ihrem betriebssystem-spezifischen Werkzeug:

    root# groupadd ntadmins
    root# groupadd designers
    root# groupadd engineers
    root# groupadd qateam
    

  3. Erstellen Sie Benutzerkonten auf dem System mit Ihrem betriebssystem-spezifischen Werkzeug. Stellen Sie sicher, dass die Benutzer-Home-Verzeichnisse ebenfalls erzeugt wurden. Fügen Sie den Gruppen die Benutzer zu, die Sie für die Zugriffskontrolle auf die Dateien, Verzeichnisse und Drucker, wie in Ihrer Samba-Umgebung gewünscht, benötigen.

  4. Weisen Sie jeder UNIX-Gruppe die NT-Gruppe zu: (Vielleicht ist es hilfreich, diesen Text in ein kleines Shell-Skript namens initGroups.sh zu kopieren.) <title>Shell-Skript zur Initialisierung der Gruppen-Zuweisungen</title>

    #!/bin/bash
    #### Shell-Skript für spätere Verwendung aufbewahren
    			
    # Als Erstes weisen wir bekannte Gruppen zu:
    net groupmap modify ntgroup="Domain Admins" unixgroup=ntadmins rid=512
    net groupmap modify ntgroup="Domain Users"  unixgroup=users    rid=513
    net groupmap modify ntgroup="Domain Guests" unixgroup=nobody   rid=514
    
    # Dann für unsere eigenen Domänen-Gruppen:
    net groupmap add ntgroup="Designers" unixgroup=designers type=d rid=1112
    net groupmap add ntgroup="Engineers" unixgroup=engineers type=d rid=1113
    net groupmap add ntgroup="QA Team"   unixgroup=qateam    type=d rid=1114
    

  5. Erzeugen Sie das Verzeichnis scripts zur Nutzung in der [NETLOGON]-Freigabe:

    root# mkdir -p /var/lib/samba/netlogon/scripts
    

    Legen Sie die Anmelde-Skripten (Batch- oder cmd-Skripten), die verwendet werden sollen, in diesem Verzeichnis ab.

Die vorige Konfiguration stellt einen voll funktionierenden primären Domänencontroller (PDC) zur Verfügung, zu dem noch die gewünschten Dateifreigaben und Drucker hinzugefügt werden müssen.

Eine große Organisation

In diesem Kapitel wollen wir kurz einen Überblick über eine Samba-3-Konfiguration geben, die ein Authentifizierungs-Backend nutzt, das auf dem Lightweight Directory Access Protocol (LDAP) basiert. Die Hauptgründe für diese Wahl waren zum einem die Möglichkeit, einen primären und einen Backup-Domänencontroller (BDC) zur Verfügung zu stellen, und zum anderen ein größeres Maß an Skalierbarkeit, um den Anforderungen an eine sehr verteilte Umgebung gerecht zu werden.

Der primäre Domänencontroller

Dies ist ein Beispiel für eine Minimalkonfiguration, um einen Samba-3-PDC mit einem LDAP-Authentifizierungs-Backend zu nutzen. Es wird vorausgesetzt, dass das Betriebssystem korrekt konfiguriert wurde.

Die Idealx-Skripten (oder gleichwertige) werden benötigt, um LDAP-basierende Posix- und/oder SambaSamAccounts zu verwalten. Die Idealx-Skripten können von dieser Idealx-Webseite heruntergeladen werden. Sie können ebenfalls vom Samba-tarball genommen werden. Linux-Distributionen installieren die Idealx-Skripten meist in dem Verzeichnis /usr/share/doc/packages/sambaXXXXXX/examples/LDAP/smbldap-tools. Die Idealx-Skriptversionen smbldap-tools-0.8.2 sind bekanntermaßen eine gute Arbeitsgrundlage.

  1. Nehmen Sie aus den Samba-Quellen ~/examples/LDAP/samba.schema, und kopieren Sie dies in das Verzeichnis /etc/openldap/schema/.

  2. Setzen Sie den LDAP-Server auf. Dieses Beispiel passt zu OpenLDAP 2.1.x. Die Datei /etc/openldap/slapd.conf sieht so aus: <title>Beispieldatei slapd.conf</title>

    # Hinweis: auskommentierte Zeilen wurden entfernt
    include         /etc/openldap/schema/core.schema
    include         /etc/openldap/schema/cosine.schema
    include         /etc/openldap/schema/inetorgperson.schema
    include         /etc/openldap/schema/nis.schema
    include         /etc/openldap/schema/samba.schema
    
    pidfile         /var/run/slapd/slapd.pid
    argsfile        /var/run/slapd/slapd.args
    
    database        bdb
    suffix          "dc=quenya,dc=org"
    rootdn          "cn=Manager,dc=quenya,dc=org"
    rootpw          {SSHA}06qDkonA8hk6W6SSnRzWj0/pBcU3m0/P
    # Das obige Passwort ist 'nastyon3'
    
    directory     /var/lib/ldap
    
    index   objectClass     eq
    index cn                      pres,sub,eq
    index sn                      pres,sub,eq
    index uid                     pres,sub,eq
    index displayName             pres,sub,eq
    index uidNumber               eq
    index gidNumber               eq
    index memberUid               eq
    index   sambaSID              eq
    index   sambaPrimaryGroupSID  eq
    index   sambaDomainName       eq
    index   default               sub
    

  3. Erzeugen Sie die folgende Datei samba-ldap-init.ldif:

    # Organisation für SambaXP Demo
    dn: dc=quenya,dc=org
    objectclass: dcObject
    objectclass: organization
    dc: quenya
    o: SambaXP Demo
    description: Der SambaXP Demo LDAP Tree
    
    # Organisatorische Rolle für die Verwaltung des Verzeichnisses
    dn: cn=Manager,dc=quenya,dc=org
    objectclass: organizationalRole
    cn: Manager
    description: Directory Manager
    
    # Aufsetzen der Container für die Benutzer
    dn: ou=People, dc=quenya, dc=org
    objectclass: top
    objectclass: organizationalUnit
    ou: People
    
    # Aufsetzen eines Administrator-Handles für die People OU
    dn: cn=admin, ou=People, dc=quenya, dc=org
    cn: admin
    objectclass: top
    objectclass: organizationalRole
    objectclass: simpleSecurityObject
    userPassword: {SSHA}0jBHgQ1vp4EDX2rEMMfIudvRMJoGwjVb
    # Das vorige Passwort ist 'mordonL8'
    

  4. Laden Sie die vorigen Initialdaten in die LDAP-Datenbank:

    root# slapadd -v -l initdb.ldif
    

  5. Starten Sie den LDAP-Server durch das Werkzeug oder die Methode, das bzw. die für die verwendete Betriebssystem-Plattform am besten geeignet ist.

  6. Installieren Sie die Idealx-Skriptdateien im Verzeichnis /usr/local/sbin, und konfigurieren Sie dann die Datei smbldap_conf.pm, um Ihre Systemkonfiguration anzupassen.

  7. Die Datei smb.conf, die diesen Backend steuert, kann hier gefunden werden ???:

    Beispiel 3.9. LDAP-Backend smb.conf für einen PDC

    # Globale Parameter
    [global]
    workgroup = MITTELERDE
    netbios name = FRODO
    passdb backend = ldapsam:ldap://localhost
    username map = /etc/samba/smbusers
    printcap name = cups
    add user script = /usr/local/sbin/smbldap-useradd.pl -m '%u'
    delete user script = /usr/local/sbin/smbldap-userdel.pl %u
    add group script = /usr/local/sbin/smbldap-groupadd.pl -p '%g'
    delete group script = /usr/local/sbin/smbldap-groupdel.pl '%g'
    add user to group script = /usr/local/sbin/ \
    smbldap-groupmod.pl -m '%g' '%u'
    delete user from group script = /usr/local/sbin/ \
    smbldap-groupmod.pl -x '%g' '%u'
    set primary group script = /usr/local/sbin/ \
    smbldap-usermod.pl -g '%g' '%u'
    add machine script = /usr/local/sbin/smbldap-useradd.pl -w '%u'
    logon script = scripts\logon.bat
    logon path = \\%L\Profiles\%U
    logon drive = H:
    logon home = \\%L\%U
    domain logons = Yes
    os level = 35
    preferred master = Yes
    domain master = Yes
    ldap suffix = dc=quenya,dc=org
    ldap machine suffix = ou=People
    ldap user suffix = ou=People
    ldap group suffix = ou=People
    ldap idmap suffix = ou=People
    ldap admin dn = cn=Manager
    ldap ssl = no
    ldap passwd sync = Yes
    idmap uid = 15000-20000
    idmap gid = 15000-20000
    winbind separator = +
    printing = cups
    ...

  8. Fügen Sie das LDAP-Passwort zu der Datei secrets.tdb hinzu, so dass Samba die LDAP-Datenbank aktualisieren kann:

    root# smbpasswd -w mordonL8
    

  9. Fügen Sie Benutzer und Gruppen wie benötigt hinzu. Benutzer und Gruppen, die über Samba-Werkzeuge hinzugefügt wurden, werden automatisch sowohl dem LDAP- Backend als auch dem Betriebssystem hinzugefügt.

Backup-Domänencontroller

??? zeigt die Beispielkonfiguration für den BDC.

  1. Entscheiden Sie, ob der BDC seinen eigenen LDAP-Server haben soll oder nicht. Falls der BDC auch der LDAP-Server ist, ändern Sie die folgende smb.conf wie angezeigt. Die Standardkonfiguration in ??? benutzt einen zentralen LDAP-Server.

    Beispiel 3.10. Remote LDAP-BDC smb.conf

    # Globale Parameter
    [global]
    workgroup = MITTELERDE
    netbios name = GANDALF
    passdb backend = ldapsam:ldap://frodo.quenya.org
    username map = /etc/samba/smbusers
    printcap name = cups
    logon script = scripts\logon.bat
    logon path = \\%L\Profiles\%U
    logon drive = H:
    logon home = \\%L\%U
    domain logons = Yes
    os level = 33
    preferred master = Yes
    domain master = No
    ldap suffix = dc=quenya,dc=org
    ldap machine suffix = ou=People
    ldap user suffix = ou=People
    ldap group suffix = ou=People
    ldap idmap suffix = ou=People
    ldap admin dn = cn=Manager
    ldap ssl = no
    ldap passwd sync = Yes
    idmap uid = 15000-20000
    idmap gid = 15000-20000
    winbind separator = +
    printing = cups
    ...

  2. Konfigurieren Sie die Verzeichnisse NETLOGON und PROFILES für den PDC wie in ???.