Kapitel 37. Portabilität

Jelmer R. Vernooij

Samba Team

John H. Terpstra

Samba Team

Stefan G. Weichinger

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

Inhaltsverzeichnis

HPUX
SCO UNIX
DNIX
Red Hat Linux
AIX
Sequenzieller Read Ahead
Solaris
Verbesserungen beim Locking
Winbind auf Solaris 9

Samba arbeitet auf einer Vielzahl von Plattformen, aber das Interface, das diese Plattformen bereitstellen, ist nicht immer kompatibel. Dieses Kapitel enthält plattform-spezifische Information über das Kompilieren und die Verwendung von Samba.

HPUX

Die HP-Implementation von unterstützenden Gruppen ist (aus historischen Gründen) nicht standardkonform. Es gibt zwei Gruppen-Dateien, /etc/group und /etc/logingroup. Das System mappt UIDs auf Nummern unter Verwendung der ersten Datei, aber initgroups() liest letztere. Die meisten System-Admins, die die Regeln kennen, linken /etc/group auf /etc/logingroup mit einem Symlink (Hardlinks funktionieren hier nicht; die Gründe zu erläutern, würde hier zu weit führen). nitgroups() wird sich beschweren, wenn eine der Gruppen, zu denen Sie gehören, in /etc/logingroup eine ID hat, die es für ungültig hält, was bedeutet, dass sie außerhalb des Bereichs [0..UID_MAX] liegt, wobei UID_MAX momentan (glaube ich) unter HP-UX 60000 beträgt. Dies schließt -2 und 65534 aus, die üblichen GIDs für nobody.

Wenn Ihnen dieses Problem begegnet, stellen Sie sicher, dass die Programme, die beim Aufruf von initgroups() scheitern, als Benutzer ausgeführt werden, nicht in Gruppen, deren GIDs außerhalb des erlaubten Bereichs liegen.

Dies ist in den HP-Manpages von setgroups(2) und passwd(4) dokumentiert.

Unter HP-UX müssen Sie gcc oder den HP ANSI-Compiler verwenden. Der freie Compiler, der HP-UX beiliegt, entspricht nicht ANSI und kann Samba nicht kompilieren.

SCO UNIX

Wenn Sie eine alte Version von SCO UNIX verwenden, kann es sein, dass Sie wichtige TCP/IP-Patches brauchen, damit Samba korrekt arbeitet. Ohne die Patches können beschädigte Daten-Transfers mit Samba auftreten.

Der Patch, den Sie brauchen, ist „UOD385 Connection Drivers SLS“. Er ist verfügbar bei SCO (ftp.sco.com, Verzeichnis SLS, Dateien uod385a.Z und uod385a.ltr.Z).

Die hier gegebene Information bezieht sich auf eine alte Version von SCO UNIX. Wenn Sie Binaries für neuere SCO UNIX-Produkte brauchen, kontaktieren Sie bitte SCO, um installationsfähige Pakete zu beziehen. Sie sollten außerdem mit SCO prüfen, ob Ihre Plattform up-to-date für die Pakete ist, die Sie installieren wollen. Dies ist wichtig, um eine Beschädigung von Daten durch die Installation zu vermeiden. Um Samba für SCO UNIX-Produkte zu kompilieren, kann es notwendig sein, Samba umfangreich zu patchen. Es ist deutlich einfacher, fertige Binary-Pakete direkt von SCO zu beziehen.

DNIX

DNIX hat ein Problem mit seteuid() und setegid(). Diese Routinen werden für den korrekten Betrieb von Samba gebraucht, wurden aber in der DNIX-C-Library aus irgendeinem Grund weggelassen.

Aus diesem Grund definiert Samba per Default das Makro NO_EID im DNIX-Abschnitt von includes.h. Dies umgeht das Problem in eingeschränkter Weise, ist aber bei weitem nicht ideal, und einige Dinge werden nach wie vor nicht richtig arbeiten.

Um das Problem sauber zu lösen, müssen Sie die folgenden zwei Funktionen zusammenbauen und sie dann entweder Ihrer C-Library hinzufügen oder sie in Samba linken. Schreiben Sie Folgendes in die Datei setegid.s:

        .globl  _setegid
_setegid:
        moveq   #47,d0
        movl    #100,a0
        moveq   #1,d1
        movl    4(sp),a1
        trap    #9
        bccs    1$
        jmp     cerror
1$:
        clrl    d0
        rts

Schreiben Sie Folgendes in die Datei seteuid.s:

        .globl  _seteuid
_seteuid:
        moveq   #47,d0
        movl    #100,a0
        moveq   #0,d1
        movl    4(sp),a1
        trap    #9
        bccs    1$
        jmp     cerror
1$:
        clrl    d0
        rts

Nach dem Anlegen obiger Dateien bauen Sie sie mit Hilfe von

$ as seteuid.s
$ as setegid.s

zusammen, was die Dateien seteuid.o und setegid.o anlegt.

Dann müssen Sie diese zur LIBSM-Zeile im DNIX-Abschnitt des Samba-Makefiles hinzufügen. Ihre LIBSM-Zeile wird dann ungefähr so aussehen:

LIBSM = setegid.o seteuid.o -ln

Sie sollten dann die Zeile

#define NO_EID

aus dem DNIX-Abschnitt von includes.h entfernen.

Red Hat Linux

Standardmäßig fügen manche Versionen von Red Hat Linux bei der Installation folgenden Eintrag zu /etc/hosts hinzu:

	127.0.0.1 loopback "hostname"."domainname"

Dies veranlasst Samba, auf das Loopback-Interface zurückzu„loopen“. Das Ergebnis ist, dass Samba nicht mehr korrekt kommuniziert und dadurch daran scheitern kann, den Master-Browser und den Verwalter der Master-Browse-Liste zu bestimmen.

Korrektur-Maßnahme: Löschen Sie den Eintrag nach dem Wort „loopback“ in der Zeile, die mit 127.0.0.1 beginnt.

AIX

Sequenzieller Read Ahead

Das Deaktivieren von „Sequential Read Ahead“ mit vmtune -r 0 steigert die Performance von Samba deutlich.

Solaris

Verbesserungen beim Locking

Manche haben Probleme mit F_SETLKW64/fcntl erlebt, wenn sie Samba unter Solaris betrieben haben. Der eingebaute Dateisperrmechanismus war nicht skalierbar. Die Performance ging runter bis zum dem Punkt, an dem Prozesse beim Versuch, eine Datei zu sperren, in Loops gerieten. Der Prozess versuchte zu sperren, scheiterte und versuchte es wieder. Der Sperrversuch scheiterte, bevor die Sperre erlaubt wurde. Die sichtbare Manifestation dessen waren ein paar Prozesse, die die CPU in Beschlag nahmen, und wenn diese eingebunden wurden, blieben sie stecken, wenn F_SETLKW64 loopte.

Sun hat Patches für Solaris 2.6, 8 und 9 veröffentlicht. Der Patch für Solaris 7 wurde noch nicht veröffentlicht.

Die Patch-Revision für 2.6 ist 105181-34, für 8 ist sie 108528-19 und für 9 ist sie 112233-04.

Nach der Installation dieser Patches ist es zu empfehlen, Samba zu rekonfigurieren und zu rekompilieren.

Wir danken Joe Meslovich für den Hinweis auf diese Patches.

Winbind auf Solaris 9

Nsswitch in Solaris 9 verweigert die Benutzung des Winbind-NSS-Moduls. Dieses Verhalten wurde von Sun im Patch 113476-05 bereinigt. Dieser Patch ist jedoch, da er vom März 2003 stammt, in keinen Roll-up-Paketen enthalten.