Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly1st Edition November 1999 1-56592-449-5, Order Number: 4495 416 pages, $34.95 |
4.8 Loggen von Konfigurations-Optionen
Hin und wieder müssen wir herausfinden, was Samba bis jetzt gemacht hat. Das ist besonders aktuell, wenn Samba eine unerwartete Aktion durchführt oder überhaupt nichts tut. Um diese Information herauszufinden, müssen wir Sambas Logdateien überprüfen, damit wir genau sehen, warum es das tut, was es tut.
Samba-Logdateien können so kurz oder so wortreich sein, wie du es gern hast. Hier ist ein Beispiel, wie eine Samba-Logdatei aussieht:
[1999/07/21 13:23:25, 3] smbd/service.c:close_cnum(514) phoenix (192.168.220.101) closed connection to service IPC$ [1999/07/21 13:23:25, 3] smbd/connection.c:yield_connection(40) Yielding connection to IPC$ [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 923 of length 49 [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBread (pid 467) [1999/07/21 13:23:25, 3] lib/doscalls.c:dos_ChDir(336) dos_ChDir to /home/samba [1999/07/21 13:23:25, 3] smbd/reply.c:reply_read(2199) read fnum=4207 num=2820 nread=2820 [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 924 of length 55 [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBreadbraw (pid 467) [1999/07/21 13:23:25, 3] smbd/reply.c:reply_readbraw(2053) readbraw fnum=4207 start=130820 max=1276 min=0 nread=1276 [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 925 of length 55 [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBreadbraw (pid 467)Viele dieser Optionen gehören nur zum Gebrauch durch Samba-Programmierer. Nun, wir werden die Bedeutung einiger dieser Einträge im Kapitel 9, Troubleshooting Samba genauer besprechen.
Samba enthält sechs Optionen, die User erlauben zu beschreiben, wie und wo Log-Information geschrieben werden sollte. Alle diese Optionen sind global und können nicht in der Definition einer Share aufscheinen. Hier ist eine up-to-date Konfigurationsdatei, die jede Share und Log-Optionen, die wir bis jetzt gesehen haben:
[global] netbios name = HYDRA server string = Samba %v on (%I) workgroup = SIMPLE # Networking configuration options hosts allow = 192.168.220. 134.213.233. localhost hosts deny = 192.168.220.102 interfaces = 192.168.220.100/255.255.255.0 \ 134.213.233.110/255.255.255.0 bind interfaces only = yes # Debug logging information log level = 2 log file = /var/log/samba.log.%m max log size = 50 debug timestamp = yes [data] path = /home/samba/data browseable = yes guest ok = yes comment = Data Drive volume = Sample-Data-Drive writeable = yesWir haben hier eine Muster-Logdatei beigefügt, die Information zur Fehlersuche bis zur Ebene 2 berichtet. Das ist eine relativ niedrige Suchebene. Die Log-Stufen reichen von 1 bis 10, wobei Level 1 nur eine geringe Menge an Information bereithält und Level 10 eine Fülle an low-level Information gewährt. Level 2 versorgt uns mit brauchbarer Fehlersuch-Information, ohne Plattenplatz auf unserem Server zu vergeuden. In der Praxis solltest du die Benützung höherer Loglevels als 3 vermeiden, außer du programmierst Samba.
Diese Datei liegt im Verzeichnis /var/log dank der Konfigurations-Option
log
file
. Nun, wir können durch Substitution der Variablen Logdateien erzeugen, ausdrücklich für einzelne User oder Clients, so wie mit der Variable%m
in der folgenden Zeile:log file = /usr/local/logs/samba.log.%mDas Isolieren der Log-Meldungen kann unbezahlbar sein beim Ausfindingmachen eines Netzwerk-Fehlers, wenn du weißt, dass das Problem von einer bestimmten Maschine oder einem User kommt.
Wir haben eine weitere Vorsichtsmaßnahme den Log-Dateien beigegeben: nicht eine Log-Datei kann die Größe von 50 KB überschreiten, was von der Option
max
log
size
festgelegt wird. Sollte eine Log-Datei diese Größe überschreiten, wird der Inhalt in eine Datei mit demselben Namen, aber mit der Endung .old verschoben. Wenn die Datei .old schon existiert, wird sie überschrieben, und ihr Inhalt ist verloren. Die Originaldatei ist gelöscht und wartet auf den Empfang neuer Log-Informationen. Das verschont die Harddisk vor dem Überhäuftwerden mit Samba Log-Dateien während der Lebenszeit unserer Dämonen.Als Annehmlichkeit haben wir beschlossen, den Zeitstempel mit der Option
debug
timestamp
in den Logs zu lassen, was ja die Vorgabe ist. Das setzt einen Zeitstempel vor jede Meldung in der Log-Datei. Wenn wir an dieser Information kein Interesse zeigen, könnten wir diese Option mitno
belegen.4.8.1 Die Verwendung von syslog
Wenn du den System-Logger (syslog) zu verwenden wünscht, als Zusatz oder anstatt der Samba Log-Datei, stellt Samba auch dafür Optionen bereit. Nun, um syslog zu verwenden, musst du als Erstes sicherstellen, dass Samba mit der Option
configure
--with-syslog
kompiliert wurde. Siehe Kapitel 2 für mehr Information über Konfiguration und Kompilation von Samba.Ist das einmal geschehen, musst du deine /etc/syslog.conf konfigurieren, um die Log-Information von Samba anzunehmen. Wenn es nicht schon einen Eintrag
daemon.*
in der Datei/etc/syslog.conf
gibt, ergänze das Folgende:daemon.* /var/log/daemon.logDas bestimmt, dass jede Log-Information von den System-Dämonen in der Datei /var/log/daemon.log gespeichert wird. Das ist dort, wo auch die Samba-Information gespeichert wird. Von dort kannst du die folgende globale Option in deiner Konfigurations-Datei festlegen:
syslog = 2Das legt fest, dass alle Log-Meldungen mit einem Level 1 zur syslog -Datei und zur Samba Log-Datei gesandt werden. (Die Mappings zu den syslog -Prioritäten sind im angeschnittenen Abschnitt "syslog" beschrieben. Nehmen wir an, dass wir die reguläre Option
log
level
auf 4 hinaufsetzen. Jede Log-Meldung mit einem Level 2, 3 oder 4 wird zu den Samba Log-Dateien gesandt, aber nicht zu syslog. Nur Log-Meldungen in Level 1 werden zu beiden gesandt. Wenn der Wertsyslog
den Wertlog
level
überschreitet, wird nichts in syslog geschrieben.Wenn du festlegen willst, dass Meldungen nur zu syslog gesendet werden - und nicht zu den Standard Log-Dateien - kannst du diese Option in die Konfigurationsdatei setzen:
syslog only = yesWenn das der Fall ist, wird jede Log-Information oberhalb der festgelegten Nummer in der Option
syslog
unterdrückt, gerade wie die Optionlog
level
.4.8.2 Logging Configuration Options
Tabelle 4.7 zeigt jede Log-Konfiguration an, die Samba nutzen kann.
Tabelle 4.7: Globale Konfigurations-Optionen Option
Parameter
Funktion
Vorgabe
Bereich
log file
string (voll ausgeschriebener Dateiname)
Setzt den Namen und den Ort der Logdatei, die Samba verwendet. Benützt Standard-Variablen.
Festgelegt im Samba-Makefile
Global
log level
(debug level)
numerisch (0-10)
Setzt die Summe von Log/Debug-Meldungen, die zur Logdatei gesendet werden. 0 ist keine, 3 ist beträchtlich.
1
Global
max log size
numerisch (Größe in KB)
Setzt die Maximalgröße der Logdatei. Überschreitet das Log diese Größe, wird die Datei auf .bak umbenannt und eine neue Logdatei gestartet.
5000
Global
debug
timestamp (timestamp logs)
boolean
Wenn no, haben die Logs keinen Zeitstempel, das macht sie leichter lesbar während starker Fehlersuche.
yes
Global
syslog
numerisch (0-10)
Setzt den Level von zu syslog gesandten Meldungen. Diese Levels unter
syslog level
werden zum System-Logger gesendet.
1
Global
syslog only
boolean
Wenn yes, verwendet syslog ganz und sendet keine Ausgabe an die Standard Samba Logdateien.
no
Global
4.8.2.1 log file
Auf unserem Server gibt Samba die Log-Information in Textdateien im Unterverzeichnis var des Samba Home-Verzeichnisses aus, wie vom Makefile während der Kompilation gesetzt. Die Option
log
file
kann verwendet werden, um den Namen der Logdatei an einen anderen Ort zu setzen. Um z.B. Namen und Ort der Samba Logdatei in /usr/local/logs/samba.log zu ändern, könntest du Folgendes benützen:[global] log file = /usr/local/logs/samba.logDu darfst Variablen-Substitution verwenden, um Logdateien speziell für einzelne User oder Clients zu erzeugen.
Du kannst den vorgegebenen Ort der Logdatei überschreiben, indem du den Kommandozeilen-Schalter
-l
verwendest, wenn jeder Dämon gestartet ist. Nun, das überschreibt nicht die Optionlog
file
. Wenn du diesen Parameter belegst, wird eine Initial-Log-Information an die nach dem-l
genannte Datei gesendet (oder an die im Samba Makefile vorgegebene), bis die Dämonen die Datei smb.conf verarbeitet haben und sie in eine neue Logdatei umzuleiten wissen.4.8.2.2 log level
Die Option
log
level
setzt die Menge an geloggten Daten. Normalerweise lässt man diese auf 0 oder 1. Nun, wenn du ein besonderes Problem hast, könntest du sie auf 3 setzen, was die nützlichste Information zur Fehlersuche bereitstellt, die du brauchen würdest, um ein Problem zu klären. Levels über 3 geben Information, die primär für Entwickler gedacht ist, interne Bugs zu verfolgen, und verlangsamen den Server beträchtlich. Deswegen empfehlen wir, dass du vermeidest, diese Option auf einen Wert über 3 zu setzen.[global] log file = /usr/local/logs/samba.log.%m log level = 34.8.2.3 max log size
Die Option
max
log
size
setzt die Maximalgröße in KB der Logdatei für Fehlersuche, die Samba hält. Wenn die Logdatei diese Größe überschreitet, wird die gegenwärtige Logdatei durch Anhängen der Erweiterung .old umbenannt (jede frühere Datei mit diesem Namen löschend), und eine neue Logdatei startet mit dem ursprünglichen Namen. Ein Beispiel:[global] log file = /usr/local/logs/samba.log.%m max log size = 1000Wenn hier die Größe einer Logdatei 1 MB überschreitet, benennt Samba die Logdatei in samba.log.
machine-name
.old um und eine neue Logdatei wird generiert. Gab es hier eine frühere Datei mit der Erweiterung .old, so löscht Samba sie. Wir empfehlen wärmstens, diese Option in deinen Konfigurations-Dateien zu setzen, weil das Loggen von Fehlern (auch auf niedrigen Levels) kann heimlich an deinem freien Plattenplatz knabbern. Die Verwendung dieser Option bewahrt unvorsichtige Administratoren vor der plötzlichen Entdeckung, dass der meiste Plattenplatz von einer einzelnen Samba Logdatei verschluckt wurde.4.8.2.4 debug timestamp or timestamp logs
Wenn es dir passiert, dass du ein Netzwerkproblem untersuchst und du findest, dass die Datums- und Zeitstempel-Information innerhalb der Samba Logzeilen hinderlich ist, kannst du sie ausschalten, indem du entweder den
timestamp
logs
oder der Optiondebug
timestamp
(sie sind synonym) den Wertno
gibst. Eine reguläre Samba Logdatei z.B. stellt ihre Ausgabe in der folgenden Form dar:12/31/98 12:03:34 hydra (192.168.220.101) connect to server network as user davecbMit einem Wert
no
für diese Option würde die Ausgabe ohne den Datums- oder Zeitstempel erscheinen:hydra (192.168.220.101) connect to server network as user davecb4.8.2.5 syslog
Die Option
syslog
veranlasst Samba, Logmeldungen an den Unix System-Logger zu senden. Der Typ der zu sendenden Log-Information ist als Parameter für dieses Argument festgelegt. Wie die Optionlog
level
kann er eine Nummer von 0 bis 10 sein. Eine Log-Information mit einem Level kleiner als die festgelegte Zahl, wird an den System-Logger gesandt. Nun, Fehler-Logs gleich dem oder über demsyslog
Level, aber kleiner als der Log-Level, werden noch zu den Standard Samba Logdateien gesandt. Um das zu umgehen, benütze die Optionsyslog
only
. Ein Beispiel:[global] log level = 3 syslog = 1Damit würden alle Log-Informationen mit einem Level 0 zu den Standard Samba-Logs und zum System-Logger gesendet, während Information mit den Levels 1, 2 und 3 nur zu den Standard Samba-Logs geschickt würde. Levels über 3 würden überhaupt nicht geloggt. Beachte, dass alle Meldungen an den System-Logger auf einen bevorzugten Level gemappt werden, den der Prozess syslog versteht, wie in Tabelle 4.8 gezeigt. Der Vorgabe-Level ist 1.
Tabelle 4.8: Syslog Prioritäts-Umwandlung Log Level
Syslog Priorität
0
LOG_ERR
1
LOG_WARNING
2
LOG_NOTICE
3
LOG_INFO
4 und höher
LOG_DEBUG
Wenn du syslog verwenden willst, wirst du
configure
--with-syslog
ausführen müssen, wenn du Samba kompilierst, und du wirst deine /etc/syslog.conf zwecks Anpassung konfigurieren müssen. (Siehe den Abschnitt 4.8.1, Die Verwendung von syslog, weiter oben in diesem Kapitel.)4.8.2.6 syslog only
Die Option
syslog
only
weist Samba an, nicht die regulären Logdateien - sondern nur den System-Logger zu verwenden. Um das zu ermöglichen, legst du die folgende Option in der Section [global] der Samba Konfigurationsdatei fest:[global] syslog only = yes
© 1999, O'Reilly & Associates, Inc.