Archivo etiqueta PCL

Syslogd: el demonio de las bitácoras

BitacoraCuando un servicio falla este reporta lo que ha pasado o cuando algo va mal en tu máquina (por ejemplo un problema de hardware) esto también es reportado. Esos mensajes pueden ser encontrados en el directorio /var/log. Por ejemplo, muchos mensajes son reportados en el archivo /var/log/syslog o en el /var/log/messages. Por otro lado, si un servicio genera muchos mensajes muy probablemente estos serán escritos en un archivo separado como lo hace Apache o el servicio de correo.

Todo esto es hecho por un demonio llamado syslogd, el cual es una utilidad del sistema que provee soporte para el registro de mensajes en sistemas *nix. Pero las bitácoras no están reservadas únicamente para las aplicaciones del sistema, tú también puedes registrar tus mensajes usando syslogd, configurando una regla apropiada en el archivo /etc/syslog.conf. Así que , veamos como hacerlo…

Archivo de configuración

En el archivo /etc/syslog.conf (o en el /etc/rsyslog.conf) están definidas las reglas para las bitácoras usando syslogd, una regla por línea.  Cada regla sigue esta sintaxis:

selector acción

A su vez, el selector está compuesto de servicio.prioridad, entonces la sintaxis completa sería:

servicio.prioridad acción

El servicio puede ser uno de las siguientes palabras:

Servicio Descripción
auth Mensajes de seguridad/autenticación
authpriv Mensajes de seguridad/autenticación (privado)
cron Demonio de tiempo (cron y at)
daemon Demonios del sistema sin valor de servicio separado
kern Mensajes del kernel
lpr Mensajes del servicio de impresión
mail Mensajes del servicio de correo
mark Para uso interno. No usar al hacer las reglas
news Mensajes del servicio de noticias USENET
security (same as auth) Obsoleto, usar auth
syslog Mensajes generados internamente por syslogd
user Mensajes genéricos a nivel de usuario
uucp mensajes de UUCP
local0 a local7 Reservado para uso local

La prioridad puede ser una de las palabras listadas en la siguiente tabla. Los mensajes serán reportados por prioridad, deforma ascendente. Por ejemplo, si se especifica la prioridad alert se reportarán los mensajes con prioridad alert, emer y panic, mientras que los crit, error, hasta debug no serán reportados.

Prioridad Descripción
debug Usado para depurar servicios, por ejemplo si no están funcionando apropiadamente
info Usado para reportar mensajes informativos.
notice Como la prioridad info, pero haciendo notar algo que puede ser relevante
warning Usado para reportar advertencias. Puede darte pistas sobre errores (si los hubiera) o solo mostrarte que hay algo que no está trabajando como debería, pero que igual sigue funcionando.
warn Igual que warning
err Usado para reportar errores. Por ejemplo, si tienes un servicio mal configurado este reportará esos errores.
error Igual que err
crit Usado para reportar errores más críticos. Por ejemplo errores de hardware.
alert Usado para reportar errores aun más críticos. Se debe tomar algún correctivo inmediatamente. Por ejemplo, corrupción de una base de datos.
emerg Usado para reportar errores realmente críticos. Muy probablemente el servicio está inoperante
panic Igual que emerg
none Usado para deshabilitar el reporte de un servicio.

La acción describe qué se debe hacer con el mensaje reportado. Comúnmente, todos los mensajes son escritos a un archivo de bitácoras, pero también hay otras acciones como reenviar los mensajes a otra máquina. De forma que el campo acción puede ser uno de los siguientes:

Acción Descripción
/ruta/de/bitácora Escribir los mensajes a un archivo de bitácoras
| fifo Usar un fifo o una tubería como el destino de los mensajes. Esto es útil para depuración o enviar correos. Note que el fifo debe ser creado con el comando mkfifo(1) antes de que syslogd(8) sea iniciado
/dev/tty[1-6] Escribir mensajes en las consolas /dev/tty[1-6]. Note que /dev/console también funcionará
@192.168.0.1 Reenviar mensajes a la máquina 192.168.0.1 vía UDP. Debido a la naturaleza de UDP, probablemente se perderán mensajes en tránsito. Si esperas alto volumen de tráfico, debes esperar una pérdida considerable de mensajes. Nota: para aceptar mensajes, el servidor remoto debe correr syslogd con la opción -r (en Debian esta opción puede ser dada en el archivo /etc/default/syslogd o en el /etc/default/rsyslog)
:omrelp:192.168.0.1:2514 Si quieres prevenir la pérdida de mensajes UDP, usa RELP
lgallard, atorres Lista de usuarios. Por defecto, los mensajes críticos son enviados a root

Modificadores

Básicamente existen tres modificadores: =, ! y *. El modificador “=” le indica a syslogd que debe reportar solo los mensajes con la prioridad exacta. Por ejemplo:

mail.=error                       /var/log/mail.error

Aquí syslogd reportará solo los mensajes de error. Sin el modificador =, syslogd reportaría los mensajes tipo error, crit, alertpanic. Este modificador solo puede usarse con las prioridades.

El segundo modificador es “!”, el cual invierte el significado de la regla. Por ejemplo:

mail.!error                       /var/log/mail.error

Syslogd reportará los mensajes con menos prioridad que error, ergo warning, notice, info y debug. Si quieres excluir solo una prioridad, debes usar la combinación !=.

Finalmente, el modificador “*” te permite seleccionar entre los distintos servicios y prioridades. Por ejemplo:

mail.*                       /var/log/mail.log

Aquí, todos los mensajes provenientes del servicio de correo serán guardados en el archivo /var/log/mail.log, no importando su prioridad. Otro ejemplo:

*.info                       /var/log/info.log

No importa el servicio, todos los mensajes cuya prioridad sean info serán guardados en el archivo /var/log/info.log.

Operadores coma, y punto y coma

El operador punto y coma te permite escribir varias reglas en una forma más compacta. Por ejemplo:

mail.=info                       /var/log/info.log
mail.=notice                     /var/log/info.log
auth.=info                       /var/log/info.log

Las reglas anteriores pueden ser escrita en una sola línea:

mail.=info;mail.=notice;auth.=info   /var/log/info.log

Por otro lado, si quieres seleccionar varios servicios, puedes usar el operador coma. Por ejemplo:

mail.info                       /var/log/info.log
auth.info                       /var/log/info.log

Puedes escribir las reglas anteriores en una línea, de la siguiente forma:

mail,auth.info                  /var/log/info.log

La gran diferencia entre el operador coma y el operador punto y coma es que el primero solo separa servicios y el ultimo puede separar prioridades y servicios, incluso si estos son incompatibles entre sí.

Registro síncrono

Algunas bitácoras deben ser monitoreadas en tiempo real, por ejemplo cuando se está depurando un servicio. El asunto es que syslogd escribe mensajes solo cuando su buffer está lleno, es decir, de forma asíncrona. Si quieres escribir mensajes síncronamente debes colocar un “-” antes de la ruta del archivo donde se guardará las bitácoras.

Ejemplos

Aquí hay unos ejemplos inventados por mí y otros tomados del archivo /etc/syslog.conf:

local3.info                     /var/log/milog

Usar el servicio local3, reportando mensajes tipo info al archivo /var/log/milog.

auth,authpriv.*                 /var/log/auth.log

Reportar todas las prioridades para los servicios auth y authpriv en el archivo /var/log/auth.log.

mail.warn                       -/var/log/mail.warn

Los mensajes de warn del servicio de correo serán guardados en el archivo /var/log/mail.warn síncronamente.

mail.!=error                       /var/log/mail.error

Todos los mensajes excepto los de error serán guardados en el archivo /var/log/mail.error.

*.=debug;\
	auth,authpriv.none;\
	news.none;mail.none	-/var/log/debug

Todos los mensajes serán guardados en el archivo /var/log/debug de forma síncrona, excepto aquellos provenientes de los servicios auth, authpriv, news y mail.

El comando logger

Si quieres comunicarte con syslogd, puedes utilizar el comando logger. Por ejemplo, para enviar un mensaje con prioridad info y servicio local3, solo escribe:

logger -p local3.info “Esto es un mensaje”

Referencias


,

5 Comentarios

FTP activo vs. FTP pasivo

El FTP es un servicio TCP que usa un puerto de datos y uno de control o comando. Comúnmente esos puertos son el 20 y el 21, respectivamente. Pero no es siempre es de esa forma…especialmente si estás detrás de un cortafuegos (firewall).

FTP Activo

Veamos como funcionan las conexiones ftp normalmente:

  • El cliente se conecta desde un puerto aleatorio no privilegiado (N > 1024) al puerto de control del servidor (21)
  • El cliente comienza a escuchar en el puerto N+1 y envía este puerto de control al servidor.
  • El servidor se conectará al cliente en el puerto N+1 desde su puerto de datos (20)
activeftp

FTP Activo

Aquí tenemos un ejemplo de conexión:

  1. El puerto de control del cliente (1026) se conecta al puerto de control del servidor (21) y envía el número del puerto de datos (1027)
  2. El servidor responde con un ACK al puerto de control del cliente
  3. El servidor inicia una conexión entre su puerto de datos (20) y el puerto de datos del cliente (1027)
  4. El cliente responde con un ACK al servidor

FTP Pasivo

El modo activo tiene un inconveniente, si estás detrás de un cortafuegos (firewall) el servidor no podrá establecer una conexión al puerto de datos aleatorio del cliente (el que está por encima de 1024). Para solucionar este detalle, hay otra forma de conexión llamada FTP pasiva:

  • El cliente abre dos puertos aleatorios no privilegiados (N > 1024 y N+1)
  • El primer puerto (puerto de control) se conecta al puerto 21 del lado del servidor (puerto de control) y envía el comando PASV
  • Luego, el servidor abre un puerto aleatorio no privilegiado (P > 1024) y envía el comando PORT P al cliente
  • Finalmente, el cliente inicia una conexión desde el puerto N+1 al puerto P en el servidor para transferir datos
passiveftp

FTP Pasivo

Aquí tenemos un ejemplo:

  1. El puerto de control del cliente (1026) se conecta al servidor al puerto de control (21) y envía el comando PASV
  2. El servidor responde al cliente con el puerto 2024, el pueto aleatorio de datos abierto para conexiones de datos
  3. El cliente inicia una conexión desde su puerto de datos (1027) al puerto de datos del servidor (2024)
  4. Finalmente, el servidor envía de vuelta un ACK al puerto de datos del cliente

Referencia

,

4 Comentarios

RAID

raid-hard-drive-arraySegún la definición de Wikipedia: “…el acrónimo RAID (originalmente del inglés Redundant Array of Inexpensive Disks, ‘arreglo redundante de discos baratos’, en la actualidad también de Redundant Array of Independent Disks, ‘arreglo redundante de discos independientes’) hace referencia a un sistema de almacenamiento que usa múltiples discos duros entre los que distribuye o replica los datos.”

Esta distribución de los datos en múltiples discos puede ser gestionada por hardware dedicado o por software, o incluso  a través de sistemas RAID híbridos basados en software y hardware específico.

Según la configuración que se seleccione, algunos de los beneficios de usar RAID son:

  • Integridad de los datos
  • Mayor tolerancia a fallos
  • Mayor rendimiento
  • Mayor capacidad
  • Combinación de dispositivos de bajo costo

La especificación RAID original sugería cierto número de “niveles RAID”, cada uno con ventajas y desventajas teóricas. Con el paso de los años han aparecido diferentes implementaciones del conceptop RAID, la mayoría difieren sustancialmente bde los niveles RAID idealizados originalmente, pero se ha conservado la costumbre de llamarlos con números (ejemplo: RAID7)
Leer el resto de la entrada »

,

2 Comentarios

Trabajando con tar

file-rollerSi nunca has trabajado con tar antes o si conoces pocas opciones esta entrada te mostrará como usar tar, por lo menos las opciones básicas. Primero que nada, vamos a ver un extracto de la descripción del manual de tar:

Tar guarda y extrae archivos desde cintas de archivo o disco. El primer argumento debe ser una función; cualquiera de las letras Acdrtux, o uno de los nombres de funciones. Una letra de función no necesita como prefijo ‘-‘, y puede combinarse con otras opciones de un solo carácter. Algunas opciones toman un parámetro; con el formato de una sola letra estos deben ser dados como argumentos separados. Una función de nombre largo debe tener el prefijo — Ok, veamos algunas de esas opciones…
Leer el resto de la entrada »

,

1 Comentario

Comando netstat

Comando netstat

Comando netstat

Según Wikipedia, “Netstat (network statistics) es una herramienta de línea de comandos que muestra un listado de las conexiones activas de un computador, tanto entrantes como salientes”.

Por defecto, netstat sin opciones muestra el estatus de las conexiones actuales listando los conectores. Pero veamos otras opciones que puedes usar con el comando netstat…

Opciones

Option Description
-e Muestra información adicional. Use esta opción dos veces para máximo detalle
-r Muestra el contenido de la tabla de rutas IP (es como el comando route)
-i Muestra las interfaces de red y sus estadísticas.
-n Las direcciones, número de puertos, y usuarios son expresados numéricamente y no se intenta resolver nombres
-l Muestra solamente sockets que están escuchando
-a Muestra tanto las socket que están escuchando como los que no (muestra las conexiones TCP activas y los puertos TCP y UDP qu estén escuchando en el computador
-s Muestra la estadística resumen para cada protocolo. Puede usarse el parámetro -p para especificar los tipos de protocolos.
-t Muestra solo las conexiones TCP
-u Muestra solo las conexiones UDP
-c Esto hace que se muestre de forma continua la salida de netstat cada segundo.
-p Muestra el PID y el nombre del programa al cual el socket pertenece

Leer el resto de la entrada »

,

No hay Comentarios

Interpretando el comando free

free

Salida del comando free Monitor del Sistema

El comando free muestra la cantidad de memoria libre y usada en el sistema, según el manual (man free). Pero aquí está una de los términos que se presta a confusión en Linux: “memoria usada”. De otros sistemas operativos, estamos acostumbrados a la idea de que “memoria usada” se refiere a memoria que ya se usó, por ende no podemos usarla en el futuro. En Linux, “memoria usada’ significa memoria tomada por el sistema, de forma que pueda ser empleada por usuarios y aplicaciones. Desde este punto de vista entre más memoria usada se tenga, mejor. Si tienes un 1GB de ram y memoria usada de 900 MB, por favor no salgas corriendo a comprar otro giga extra porque  lo más probable es que tendrás 1.9 GB de memoria usada…de nuevo, no te preocupes esto es normal.

Leer el resto de la entrada »

,

No hay Comentarios

Preguntas de repaso PCL I y II (Profesional Certificado Linux)

logo-iseit

Si estás tomando el curso de Profesional Certificado Linux (PCL)  en el ISEIT, aquí te dejo unas preguntas de repaso para los exámenes de certificación PCL I y PCL II.

  1. Preguntas de repaso PCL I
  2. Preguntas de repaso PCL II

Las respuestas dependen de ti :)

URL del instituto: http://ve.iseit.net

,

8 Comentarios

Guía rápida de Vi

vicmd

¿Cansado de usar tu mismo editor de texto? ¿Cansado de estar atado a un editor específico? ¿Tus compañeros de trabajo se burlan porque no entiendes vi?…No te preocupe más!!! Ya está aquí una guía rápida de vi.

¿Cómo funciona Vi?

Quizás estás cansado de vi porque cada vez que intentas utilizarlo no obtienes los resultados esperados. Ok, vamos a hablar de cómo funciona vi. Existen tres modos de operación:

  • Modo comando: En este modo, vi espera una acción a ser ejecutada como copiar, pegar o mover el cursor. Este es su comportamiento por defecto, así que cuando abres un archivo y empiezas a escribir no verás lo que estás escribiendo porque estarás ejecutando comandos.
  • Modo Insertar: En este modo de hecho puedes escribir en el archivo, pero antes debes usar uno de los comandos de insertar como “i”
  • Modo comando extendido: Este es un modo especial donde puedes pasarle argumentos a los comandos. Para entrar en este modo solo escribe dos puntos y el comando. Por ejemplo:

:1,4 y

Esto indica que se debe copiar de la línea 1 a la 4. Ahora vamos a ver algunos comandos agrupados según su funcionalidad:

Movimiento de cursor

h Mueve a la izquierda
j Mueve hacia abajo
k Mueve hacia arriba
l Mueve hacia la derecha
w Ir al inicio de la palabra (próxima palabra)
e Ir al final de la palabra actual
b Ir hacia atrás una palabra
0 Ir al comienzo de línea
$ Ir al final de la línea
nG Ir a la línea n. G solo significa ir a la última línea
:n Ir a la línea n

Leer el resto de la entrada »

,

No hay Comentarios

Acceso rápido en el terminal

Fingerprint Evidence

Mis alumnos siempre me preguntan cómo limpio la pantalla sin usar el comando clear cuando hago este truquito al  trabajar en el terminal. Bien, la respuesta es usando este acceso rápido: Ctrl+l. Inmediatamente después me preguntan si hay más accesos rápidos, y siempre respondo “Si, claro…pero no los recuerdo. Cuando comencé a usar Linux leí algunos de ellos, pero solo me acuerdo de el acceso Ctrl+l”.

Por esto decidí que ya era hora de rechequear estos accesos rápidos y postearlos aquí…

Accesos del terminal

La siguiente tabla muestra algunos accesos rápidos. Tenga en cuenta que algunos pueden funcionar o no dependiendo de la consola que use. Por ejemplo, Alt+f es un acceso rápido definido en el terminal de Gnome.

Accesor Descripción
Ctrl+b Mover un carácter hacia adelante.
Ctrl+f Mover un carácter hacia atrás.
Ctrl+d Borra el carácter que le sigue al cursor.
Ctrl+_ or Ctrl+x Ctrl+u Deshacer el último comando en edición. Puede deshacer hasta dejar la línea vacía.
Alt+u Convertir a mayúsculas
Alt+l Convertir a minúsculas
Altc+c Convertir a títulos
Comandos de movimiento
Ctrl+a Ir al principio de línea.
Ctrl+e Ir al final de la línea.
Alt+f Moverse una palabra hacia adelante, donde palabra se compone de letras y dígitos.
Alt+b Moverse una palabra hacia atrás.
Ctrl+l Limpiar la pantalla, reimprimiendo la línea actual al inicio de la pantalla.
Comandos de cortar y pegar
Ctrl+k Corta el texto desde la posición actual del cursor hasta el final de la línea, y la copia al buffer. Cortar texto también es conocido como “killing”. El texto “matado” se guarda en un anillo de kill (kill-ring) para posterior uso de pegado (yanking).
Alt+d Cortar desde el cursor hasta el final de la palabra actual, o si está entre palabras, hasta el inicio de la próxima palabra. Los límites de la palabras son los mismos usados por Alt+f.
Alt+DEL Cortar desde el cursor hasta el inicio del la palabra actual, o si está entre palabras, hasta el inicio de la palabra anterior. Los límites de la palabras son los mismos usados por Alt+b.
Ctrl+w Cortar desde el cursor hasta el espacio en blanco anterior. Este es distinto a Alt+DEL porque el límite de la palabra difiere.
Ctrl+y Pegar (yank) en la posición actual del cursor el texto más recientemente cortado.
Alt+y Rotar el kill-ring (los buffers), y pegar el nuevo tope. Solo se puede hacer esto si el comando anterior es Ctrl+y o Alt-y.
Comandos del histórico
Ctrl+r Búsqueda regresiva en el histórico para una cadena dada.
Ctrl+s Búsqueda hacia adelante a través del histórico (puede que no funcione).
Alt+< Ir a la primera línea del histórico.
Alt+> Ir a la última línea del histórico, es decir, la línea que se está editando actualmente.

Argumentos para los accesos rápidos

Se pueden pasar argumentos numéricos al terminal de comandos. Por ejemplo, para darle al comando Ctrl+d un argumento de 10, puede escribir

`Alt+1 0 Ctrl+d’lo cual eliminará los próximos diez caracteres en la línea de entrada.

Accesos rápidos personalizados

Puede ir más allá y definir sus propios accesos rápidos en bash. Para hacer esto solo agregue el acceso rápido en su archivo ~/.inputrc (o /etc/inputrc para todos los usuarios). Por ejemplo, la función de búsqueda hacia adelante en el histórico en mi PC no funcionaba así que tuve que poner esta línea:

“C-h”:history-search-forward

Donde “C-h” significa Ctrl+h. Puede incluso definir accesos rápidos a comandos como ‘ps aux‘ colocando esta línea:

“C-o”:’ps axun’

Para que los cambios tengan efectos el archivo inputrc debe ser releído usando este acceso Ctr+x Ctrl+r.

Referencias

,

No hay Comentarios

Comando find

lupa.jpg

En Linux podemos hacer búsquedas de archivos de varias manera. Por ejemplo, desde Nautilus (el navegador de archivos de Gnome) podemos buscar en el directorio actual todos los archivos mp3’s con esta expresión ‘*.mp3’. Pero cuando necesitamos hacer búsquedas más completas,  por ejemplo todos los archivos mp3s mayores a 5 MB, Nautilus no es lo más adecuado. Para estos casos tendremos que usar un comando de consola muy versátil y poderoso: find

Comando find

El comando find permite realizar búsquedas de archivos y directorios en el sistema según una expresión dada. El formato básico es

find ruta expresión

Donde expresión está compuesto de opciones (modificación del comportamiento de find en general), pruebas (cosas que devuelven verdadero o falso) y acciones (que ejecuta procesamiento sobre los archivos y directorios.

Veamos algunas opciones, pruebas y acciones…

Opciones

-maxdepth n Desciende hasta n niveles.
-mount No realizar búsquedas en otros sistemas de archivos.

Pruebas (Tests)

n Exactamente n
+n Mayor que n
-n Menor que n
-amin n Archivos que fueron accedidos hace n minutos
-anewer archivo Archivos que fueron accedidos mas recientemente que la última modificación de archivo
-atime n Archivos que fueron accedidos hace n*24 horas
-cmin n Archivos cuyo estado hayan sido modificado hace n minutos
-cnewer archivo Archivos cuyo estado hayan sido modificado mas recientemente que la última modificación de archivo
-ctime n Archivos cuyo estado hayan sido modificado hace n*24 horas
-mmin n Archivos que fueron modificados hace n minutos
-newer archivo Archivos que fueron modificados mas recientemente que la última modificación de archivo
-mtime n Archivos que fueron modificados hace n*24 horas
-empty Archivos o directorios vacíos
-executables Archivos ejecutables y directorios navegables
-readable Archivos que se pueden leer
-fstype tipo Archivos en sistemas de archivos tipo (ejemplo vfat)
-uid n Archivos cuyo identificador de usuario es n
-user usuario Archivos pertenecientes a usuario
-gid n Archivos cuyo identificador de grupo es n
-group grupo Archivos pertenecientes a grupo
-name patrón Archivos cuyo nombre coincida con el patrón dado. El patrón acepta los metacaracteres (‘*’, ‘?’, y ‘[]’)
-nogroup Archivos que no le pertenezcan a ningún grupo
-nouser Archivos que no le pertenezcan a ningún usuario
-perm modo Los permisos del archivo son exactamente a modo. Se puede usar la superfetación octal o la de letras (-perm g=w)
-perm -modo Los permisos del archivo contienen a modo.
-perm /modo Cualquiera de los permisos en modo está activado en el archivo
-size n[cwbkMG] Archivos de tamaño n.
-type c Archivos tipo c (bloque, carácter, directorio, enlace simbólico, regular, etc.

Acciones

-delete Eliminar archivos
-exec comando ; Ejecutar comando
-exec comando ‘{}’ \; Ejecutar comando sobre los archivos especificados

Ejemplos

find /home -name ‘*.bash*’ Cualquier archivo que contenga .bash en su nombre
find $HOME -mtime 0 Archivos en su directorio home que hayan sido modificados las últimas 24horas
find -perm 644 Exactamente 644
find -perm -644 Trae 644 y 777, por ejemplo
find -perm /222 Cualquier archivo con el bit de escritura activo
find -perm /u=w Archivos con el bit de escritura activo para el usuario
find /home -nouser -exec rm -r ‘{ }’ \; Borrar los archivos del /home que no tengan un usuario definido en el /etc/passwd
find /home -size +1G Archivos mayores a 1 GB en /home
find / -size +1G -user lgallard Archivos mayores a 1 GB en el sistema que le pertenezcan al usuario lgallard

Referencias

,

2 Comentarios