Inhaltsverzeichnis
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.
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.
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 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.
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.
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.