Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly
1st Edition November 1999
1-56592-449-5, Order Number: 4495
416 pages, $34.95

Buy the hardcopy

Inhaltsverzeichnis


Previous: 4.7 Virtuelle Server Kapitel 4
Disk Shares
Next: 5. Browsing und fortgeschrittene Disk Shares
 

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 = yes
	

Wir 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.%m

Das 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 mit no 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.log

Das 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 = 2

Das 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 Wert syslog den Wert log 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 = yes

Wenn das der Fall ist, wird jede Log-Information oberhalb der festgelegten Nummer in der Option syslog unterdrückt, gerade wie die Option log 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.log

Du 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 Option log 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 = 3

4.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 = 1000

Wenn 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 Option debug timestamp (sie sind synonym) den Wert no 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 davecb

Mit 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 davecb

4.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 Option log 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 dem syslog Level, aber kleiner als der Log-Level, werden noch zu den Standard Samba Logdateien gesandt. Um das zu umgehen, benütze die Option syslog only. Ein Beispiel:

[global]
	log level = 3
	syslog = 1

Damit 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 

Previous: 4.7 Virtuelle Server Next: 5. Browsing und fortgeschrittene Disk Shares
4.7 Virtuelle Server Buch-Index (engl.) 5. Browsing und fortgeschrittene Disk Shares

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.