Ocasionalmente, necesitaremos averiguar qué está haciendo Samba. Esto es especialmente cierto cuando Samba está realizando una acción no esperada o no está funcionando bien. Para localizar esta información, necesitaremos chequear los ficheros de registro de Samba para ver porqué hizo lo que hizo.
Los ficheros de registro de Samba pueden ser tan breves o completos como tú quieras. Aquí tienes un ejemplo de cómo sería uno de ellos:
[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)
Muchas de estas opciones sólo las usan los programadores de Samba. Sin embargo, veremos el significado de algunas de estas entradas con más detalle en el Capítulo 9, Solución de Problemas con Samba.
Samba contiene seis opciones que permiten a los usuarios describir cómo y dónde se debería escribir la información de registro. Cada una de estas opciones son opciones globales y no pueden aparecer en la definición de un recurso. Aquí tienes un fichero de configuración actualizado que cubre cada una de las opciones que veremos:
[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
Aquí, hemos añadido un fichero de registro de usuario que reporta información de depuración de nivel 2. Este es un relativamente mínimo nivel de depuración. El rango de nivel va de 1 a 10, donde el nivel proporciona sólo una pequeña cantidad de información y el nivel 10 proporciona una cantidad enorme de información de bajo nivel. El nivel 2 nos proporcionará información útil sin ocupar demasiado espacio en disco en nuestro servidor. En la práctica, deberías evitar el uso de niveles de depuración superiores a 3 a menos que estés programando Samba.
Este fichero está localizado en el directorio /var/log gracias a la opción log file. Sin embargo, podemos usar las variables para crear ficheros de registro independientes para cada usuario o cliente, como la variable %m en la siguiente línea:
log file = /usr/local/logs/samba.log.%m
La posibilidad de aislar los mensajes de registro puede resultar de un valor inapreciable a la hora de tener que rastrear un error de red si sabes que el problema viene de una máquina o cliente determinado.
Hemos añadido otra precaución a los ficheros de registro: ninguno de ellos puede exceder en tamaño de 50 kilobytes, como indica la opción max log size. Si un fichero de registro supera este tamaño, el contenido es movido a un fichero con el mismo nombre pero con el sufijo .old añadido. Si el fichero .old ya existe, es sobreescrito y su contenido perdido. El fichero original es limpiado, a la espera de recibir nueva información de registro. Esto previene que el disco se quede sin espacio por culpa de los ficheros de registro de Samba durante el tiempo de vida de los demonios.
Por conveniencia, hemos decidio dejar la fecha y hora de la depuración en los registros con la opción debug timestamp, la cual es el valor por defecto. Esto coloca una cadena de fecha y hora en formato "timestamp" junto a cada mensaje en el fichero de registro. Si no estamos interesados en ésta opción, deberemos especificar el valor no para esta opción.
Usando syslog
Si quieres usar el registro de sistema o ``system logger (syslog) en adición o en lugar del fichero de registro estándar de Samba, Samba proporciona opciones para esto también. Sin embargo, para usar syslog, lo primero que tienes que hacer es asegurarte de que Samba se compiló con la opción configure -with-syslog. Mira el Capítulo 2 para más información sobre configuración y compilación de Samba.
Una vez está hecho esto, necesitarás configurar tu /etc/syslog.conf para aceptar información de registro desde Samba. Si no existe todavía una entrada daemon.* en el fichero /etc/syslog.conf, añade lo siguiente:
daemon.* /var/log/daemon.log
Esto especifica que cualquier información de registro desde demonios de sistema sea almacenada en el fichero /var/log/daemon.log. Aquí es donde será almacenada a partir de ahora la información que genere Samba. Desde aquí, puedes especificar la siguiente opción global en tu fichero de configuración:
syslog = 2
Esto especifica que cualesquiera mensajes de registro con un nivel de 1 serán enviados tanto al syslog como a los ficheros de registro de Samba. (Los mapas para prioridades de syslog se describen en la sección "syslog."). Asumamos que configuramos la opción log level a 4. Cualquier mensaje de registro con un nivel 2, 3, o 4 será enviado a los ficheros de registro de Samba, pero no al syslog. Sólo los mensajes de registro de nivel 1 serán enviados a ambos. Si el valor de syslog excede del valor de log level, no se mandará nada al syslog.
Si quieres especificar que los mensajes sean enviados sólo al syslog -y no a los ficheros de registro propios de Samba- puedes poner esto en el fichero de configuración:
syslog only = yes
Si este es el caso, cualquier información de registro inferior al número especificado en la opción syslog será descartado, al igual que con la opción log level.
Opciones de Configuración de Registro
La Tabla 4.7 lista cada una de las opciones de configuración que podemos usar.
Table: Opciones de Configuración Globales.|| Opción || Parámetros || Función || Defecto || Ambito ||
|| log file || string (nombre completamente cualificado) || Establece el nombre y localización del fichero de registro que usará Samba. Admite uso de variables. || Especificado en el makefile de Samba || Global ||
|| log level (debug level) || numérico (0-10) || Establece la cantidad de mensajes de información que serán enviados al fichero de registro. 0 es nada , 3 es considerable || 1 || Global ||
|| max log size || numérico (tamaño en KB) || Establece el tamaño máximo del fichero de registro. Si se excede el tamaño, el fichero será renombrado a .bak y se iniciará un nuevo fichero de registro. || 5000 || Global ||
|| debug timestamp (timestamp logs) || booleano || Si es no, no se incluyen fecha y hora junto a los mensajes. || yes || Global ||
|| syslog || numérico (0-10) || Establece el nivel de los mensajes enviados a syslog. Los niveles por debajo de syslog level serán enviados al registro de sistema. || 1 || Global ||
|| syslog only || booleano || Si es yes, usa syslog y no envía salida alguna a los ficheros de registro de Samba. || no || Global ||
log file
En nuestro servidor, Samba manda la información de registro a ficheros de texto en el sudirectorio var del directorio raíz de Samba, tal como se configuró en el fichero makefile durante la compilación. La opción log file puede usarse para cambiar el nombre y la localización del fichero de registro a otra localización. Por ejemplo, para cambiar el nombre y localización del ficher de registro de Samba a /usr/local/logs/samba.log, podrías usar lo siguiente:
[global]
log file = /usr/local/logs/samba.log
Puedes usar sustitución con variables para crear ficheros de registro específicos para usuarios o clientes individuales.
Puedes sobreescribir la localización del fichero usando el switch de línea de comando -l cuando el servidor es iniciado. Sin embargo, esto no prevalecerá sobre lo estipulado con la opción log file. Si especificas este parámetro, la información inicial de registro será enviada al fichero especificado tras -l (o el especificado por defecto desde el makefile) hasta que los demonios hayan procesado el fichero smb.conf y sepan que deben redirigir la información a un nuevo fichero de registro.
log level
La opción log level establece la cantidad de información a registrar. Normalmente se mantiene a 0 ó 1. Sin embargo, si tienes un determinado problema puedes especificar el nivel 3, el cual proporciona la más útil información de depuración que podrías necesitar para resolver un problema. Los niveles por encima de 3 proporcionan información dirigida más que nada a los programadores para corregir posibles bugs, y ralentizan considerablemente el rendimiento del servidor. Por esto mismo, recomendamos que evites usar niveles por encima de 3.
[global]
log file = /usr/local/logs/samba.log.%m
log level = 3
max log size
La opción max log size establece el tamaño máximo, en kilobytes, del fichero de registro que mantiene Samba. Cuando el fichero de registro excede ese tamaño, el actual fichero es renombrado y se le añade la extensión .old (eliminando ficheros anteriores con ese nomrbe) y un nuevo fichero de registro es iniciado con el nombre original. Por ejemplo:
[global] log file = /usr/local/logs/samba.log.%m max log size = 1000
Aquí, si el tamaño de cualquier fichero de configuración supera un megabyte, Samba renombra el fichero de registro samba.log. nombre-de-máquina .old y un nuevo fichero es creado. Si ya existía un fichero con la extensión .old, Samba lo elimina. Recomendamos establecer esta opción en tu fichero de configuración, porque el registro (sobre todo a bajo nivel) puede comprometer la disponibilidad de espacio en disco del servidor. El uso de esta opción protege a los administradores "despistados" de la desagradable sorpresa de descubrir repentinamente que la mayoría del espacio en disco ha sido ocupado por un simple fichero de registro de Samba.
timestamp depuración o timestamp registros
Si estás intentando descubrir un problema de red y piensas que la información de fecha y hora dentro de los ficheros de registro forman parte de él, puedes activarlos o desactivarlos con la opción timestamp logs o la opción debug timestamp (son sinónimas) a no. Por ejemplo, un fichero típico de registro de Samba presenta sus salidas con el siguiente formato:
12/31/98 12:03:34 hydra (192.168.220.101) connect to server network as user davecb
Con un valor a no para esta opción, la salida aparecerá sin la fecha y hora:
hydra (192.168.220.101) connect to server network as user davecb
syslog
La opción syslog provoca que los mensajes de registro de Samba sean enviados al registro de sistema de Unix. El tipo de información que va a ser enviada se especifica como parámetro para este argumento. Al igual que con la opción log level, este puede ser un número desde 0 a 10. La información de registro con un nivel inferior al número especificado será enviada al registro de sistema. Sin embargo, registros de nivel igual o inferior al nivel de syslog, pero menores que los de la opción log level, seguirán siendo enviados a los ficheros de registro Samba. Usa la opción syslog only. Por ejemplo:
[global] log level = 3 syslog = 1
Con esto, toda la información de registro con un nivel de 0 debería ser enviada a los ficheros de registro de Samba y al del registro de sistema, mientras que la información de nivel 1, 2, y 3 se enviaría sólo a los ficheros de registro de Samba. Los niveles por debajo de 3 no son registrados. Advierte que todos los mensajes enviados al registro de sistema son mapeados a un nivel de prioridad que el proceso syslog entiende, como se muestra en la Tabla 4.8. El nivel por defecto es 1.
Table: Conversión de Prioridad de Syslog.
|| Log Level || Prioridad Syslog ||
|| || LOG_ERR ||
|| 1 || LOG_WARNING ||
|| 2 || LOG_NOTICE ||
|| 3 || LOG_INFO ||
|| 4 y anteriores || LOG_DEBUG ||
Si vas a usar syslog, tendrás que ejecutar configure -with-syslog cuando compiles Samba, y necesitarás configurar tu /etc/syslog.conf también. (Mira la sección 4.8.1., ``Usando syslog, en éste capítulo).
syslog only
La opción syslog only le dice Samba que no use sus ficheros normales de registro -sólo el de registro de sistema-. Para activar esto, especifica la siguiente opción en la sección global del fichero de configuración de Samba:
[global]
syslog only = yes