Está en la página 1de 18

Universidad de El Salvador

Facultad Multidisciplinaria de Occidente


Departamento de Ingeniería y Arquitectura

Ingeniería En Desarrollo De Software/Educación En Línea


INTRODUCCIÓN AL SOFTWARE LIBRE – ISL135
SEMESTRE II/2023 – SEMANA 8

Unidad 2. Administración Avanzada del Sistema Operativo


GNU/Linux.

2.2 Administración de Usuarios y Grupos.

Introducción.

El sistema operativo Linux cuenta con una gran capacidad de gestión de usuarios y grupos
que les permite realizar un uso óptimo de su plataforma multiusuario. Quienes utilizan un
servidor de archivos, se identifican mediante un nombre de usuario, y también debe contar
con una contraseña para que pueda realizar la verificación de credenciales y acceder al
sistema. Además, el acceso a determinados archivos, directorios y ficheros dependerá de
los grupos a los que pertenezca el usuario del sistema.

El objetivo principal de la gestión de usuarios y grupos en Linux es permitir que múltiples


usuarios hagan uso del sistema, pero de una forma ordenada y segura. De tal manera que
ninguna de las tareas que se realicen por cualquier usuario, pueda poner en riesgo todo el
sistema. A través de la gestión, se establecen los mecanismos y políticas de seguridad para

1
la protección de los datos de cada usuario, así como para asegurar y proteger el
funcionamiento de todo el sistema.

Tipos de usuario.
Los usuarios en Unix/Linux se identifican por un número único de usuario, User ID, UID. Y
pertenecen a un grupo principal de usuarios, identificado también por un número único de
grupo, Group ID, GID. El usuario puede pertenecer a más grupos además del principal.

Aunque sujeto a cierta polémica, es posible identificar tres tipos de usuarios en Linux:

Usuario root.

También llamado superusuario o administrador.


● Su UID (User ID) es 0 (cero).
● Es la única cuenta de usuario con privilegios sobre todo el sistema.
● Acceso total a todos los archivos y directorios con independencia de propietarios
y permisos.
● Controla la administración de cuentas de usuarios.
● Ejecuta tareas de mantenimiento del sistema.
● Puede detener el sistema.
● Instala software en el sistema.
● Puede modificar o reconfigurar el kernel, controladores, etc.

Usuarios especiales.

Ejemplos: bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache, etc.
● Se les llama también cuentas del sistema.
● No tiene todos los privilegios del usuario root, pero dependiendo de la cuenta
asumen distintos privilegios de root.
● Lo anterior para proteger al sistema de posibles formas de vulnerar la seguridad.
● No tienen contraseñas pues son cuentas que no están diseñadas para iniciar
sesiones con ellas.
● También se les conoce como cuentas de "no inicio de sesión" (nologin).
● Se crean (generalmente) automáticamente al momento de la instalación de Linux
o de la aplicación.
● Generalmente se les asigna un UID entre 1 y 100 (definido en /etc/login.defs)

2
Usuarios normales.

Se usan para usuarios individuales.


● Cada usuario dispone de un directorio de trabajo, ubicado generalmente en
/home.
● Cada usuario puede personalizar su entorno de trabajo.
● Tienen solo privilegios completos en su directorio de trabajo o HOME.
● Por seguridad, es siempre mejor trabajar como un usuario normal en vez del
usuario root, y cuando se requiera hacer uso de comandos solo de root, utilizar el
comando su.
● En las distros actuales de Linux se les asigna generalmente un UID superior a
500.
Para poder realizar el cambio de usuario normal a usuario root, se necesitarán permisos de
administración, y se puede acceder ya sea proporcionando la contraseña del usuario root e
iniciando sesión, o establecer una lista de usuarios que pueden tener acceso como
administradores. En términos de seguridad, es recomendable optar por la segunda opción,
debido a que compartir la contraseña del usuario root con varias personas, implica el
traspaso de información sensible y pone al sistema en una situación de vulnerabilidad.

Grupos en Linux.

Los grupos en Linux son usados principalmente para otorgar permisos sobre archivos y
directorios. El sistema operativo ya trae incluido ciertos grupos predeterminados que
cumplen con funciones específicas. Cada grupo creado en Linux tiene la característica de
ser independiente de otros. Además, los grupos en Linux pueden tener contraseñas. Estos
grupos pueden ser de tipo primario o secundario:

● Grupo principal: tiene la función de determinar quién será el grupo que posea
los archivos creados por el usuario. El grupo primario es el que se le asocia a
la cuenta por defecto, y al que se le asignarán los archivos y directorios
desarrollados por el usuario. Además, el nombre del grupo suele ser el mismo
nombre de usuario.

● Grupos secundarios: los grupos suplementarios son aquellos grupos


adicionales a los que el usuario pertenezca.

Comandos para la gestión de usuarios y grupos en Linux.

3
● adduser o useradd: permite la creación de nuevos usuarios.

● usermod, chfn, chsh y chage: usados para la modificación de un usuario.

● deluser o userdel: comando para la eliminación de usuarios.

● passwd: para cambiar la contraseña de un usuario.

● addgroup o groupadd: usado para añadir un grupo.

● groupmod: permite modificar un grupo.

● groupdel o delgroup: se utiliza para eliminar un grupo.

● gpasswd: comando diseñado para cambiar la contraseña de un grupo.

● whoami: para saber qué usuario somos.

● groups: para obtener información de los grupos a los que pertenecemos.

● id: nos muestra tanto el usuario como los grupos.

● su: comando para cambiar de usuario.

● who o w: sirve para saber cuáles usuarios están conectados en la máquina en


un determinado momento.

● write o wall: para enviar mensajes al resto de usuarios logueados.

Creación de usuarios

El comando useradd permite añadir un usuario indicando como parámetros la información


particular para crear el usuario en la misma línea de comandos. La sintaxis es:

- Crear usuario

useradd [opciones] nombre-usuario

Entre las opciones más destacables tenemos:

● g: Grupo principal que queremos tenga el usuario (debe existir previamente)


● -d: Carpeta home del usuario. Suele ser /home/nombre-usuario
● -m: Crear carpeta home si es que no existe.
● -s: Intérprete de comandos (shell) del usuario. Suele ser /bin/bash

4
Ejemplo, si deseamos crear un usuario llamado ‘pedro’ cuyo grupo principal sea ‘profesores’,
cuya carpeta home sea /home/pedro y su intérprete de comandos sea /bin/bash,
ejecutaremos el siguiente comando:

- Crear un usuario

sudo useradd -g profesores -d /home/pedro -m -s /bin/bash pedro

De esta manera habremos creado al usuario pedro y su carpeta home. Si no utilizamos la


opción -m, no se creará la carpeta home del usuario; en tal caso tendríamos que crearla
manualmente. Tan solo nos quedará establecer su contraseña con el comando passwd:

- Establecer la contraseña del usuario

sudo passwd pedro

Entonces el sistema nos preguntará dos veces la contraseña que queremos asignar a pedro.

El comando useradd permite crear muchos usuarios automáticamente mediante archivos


de comandos (scripts).

Se recomienda que el nombre de usuario sea en minúsculas y además de letras también


puede contener números y algún signo como guiones normales y guiones bajos. Debemos
recordar que unix distingue entre mayúsculas y minúsculas, es decir, Pepe es distinto de
pepe.

- Modificación de usuarios

Se utiliza el comando usermod y permite cambiar el nombre del usuario, su carpeta home,
su intérprete de comandos, los grupos a los que pertenece y algunos otros parámetros.

- Cambiar el home de un usuario

sudo usermod -d /home/carpeta_pedro pedro

- Eliminación de usuarios

Se realiza con el comando userdel seguido del nombre del usuario. Con la opción -r
eliminará también su carpeta home, ejemplo:

- Eliminación de un usuario

5
sudo userdel -r pedro

Eliminaría el usuario pedro y su carpeta home.

Creación de grupos.

El comando groupadd permite añadir un grupo indicando como parámetro el nombre del
grupo. Ejemplo, si deseamos crear un grupo llamado ‘alumnos’ ejecutaremos:

- Añadir un grupo

sudo groupadd alumnos

- Modificación de grupos

El comando groupmod permite modificar el nombre de un grupo o el gid del mismo. La


sintaxis es: sudo groupmod [-g nuevo-gid] [-n nuevo-nombre] nombre-grupo, ejemplo:

- Cambiar el gid del grupo profesores

sudo groupmod -g 2000 profesores

- Eliminación de grupos

Se realiza con el comando groupdel seguido del nombre del grupo, ejemplo:

Eliminación de un grupo

sudo groupdel profesores

Eliminaría el grupo profesores. Si algún usuario tuviera dicho grupo como grupo primario, el
comando groupdel no eliminará el grupo.

- Añadir usuarios a un grupo

Se utiliza el comando adduser seguido del nombre del usuario y del nombre del grupo al
que queremos añadirle, ejemplo:

Añadir a ‘juan’ al grupo ‘profesores’

sudo adduser juan profesores

6
- Quitar usuarios de un grupo

Se utiliza el comando deluser seguido del nombre del usuario y del nombre del grupo del
que queremos quitarle, ejemplo:

Quitar a ‘juan’ del grupo ‘profesores’

sudo deluser juan profesores

2.3 Niveles de Arranque y Servicios.

La mayoría de los sistemas operativos modernos ofrecen la posibilidad de arrancar con


diferentes configuraciones. El ejemplo más claro lo encontramos cuando instalamos un
programa o un controlador de dispositivo (Driver) defectuoso que se carga en el arranque
del sistema y hace que esté último falle. El usuario puede encontrarse entonces en un
callejón sin salida porque el sistema no es capaz de arrancar correctamente para poder
solucionarlo.

Los sistemas Linux también disponen de mecanismos que permiten iniciar el sistema con
diferentes configuraciones, dependiendo de las necesidades de los usuarios. Estas
configuraciones están basadas en los procesos que se activan en el arranque. Los sistemas
Linux son multitarea porque pueden mantener en ejecución muchos programas a la vez,
para ver la lista de programas en ejecución en el sistema se puede ejecutar la orden ps -ef.
Si se modifican los programas que se inician en el arranque (muchos de ellos no son
imprescindibles para el funcionamiento básico del sistema), entonces podemos conseguir
que Linux trabaje de forma distinta y ofrezca un diferente conjunto de servicios.

Cuando se inicia un sistema Linux o Unix, el control recae sobre un proceso especial
llamado init, que es el primero que comienza su ejecución. Por esta razón, también se le
conoce como ¨el padre de todos los procesos¨. Init es un proceso especial sin el cual no se
iniciará nunca Linux y controla el inicio de otros procesos. Por lo tanto, si el usuario desea
establecer qué procesos se iniciarán en el arranque, entonces deberá configurar init para
que se inicien absolutamente los procesos que nos interesan.

El proceso init permite que el usuario pueda definir diferentes configuraciones, cada una de
ellas iniciará un conjunto distinto de procesos. A estas configuraciones se les conoce como
niveles de ejecución. Cada nivel de ejecución hace que el sistema se comporte de una forma
distinta, ya que, como hemos dicho, inicia un conjunto de procesos distintos. De esta forma,

7
el usuario puede seleccionar sobre qué configuración o nivel de ejecución va a iniciar el
sistema.

El sistema operativo GNU/Linux puede aprovechar los niveles de ejecución a través de los
programas del proyecto sysvinit. Después de que el núcleo Linux ha arrancado, el programa
init lee el archivo /etc/inittab para determinar el comportamiento para cada nivel de
ejecución. A no ser que el usuario especifique otro valor como un parámetro de
autoarranque del núcleo, el sistema intentará entrar (iniciar) al nivel de ejecución por
defecto.

La mayor parte de usuarios de sistemas puede comprobar el nivel de ejecución actual con
cualquiera de los comandos siguientes (con systemd , no SysV):

# runlevel # como cualquier usuario

$ who -r # como cualquier usuario

En Linux, a diferencia de otros sistemas operativos, es posible configurarlo en base a niveles


de ejecución (run levels), cada nivel de ejecución (en la mayoría de las distros son 7), inicia
o detiene (Start o Kill) ciertos servicios. Estos niveles son los siguientes:

● 0 Detener o apagar el sistema


● 1 Modo monousuario, generalmente utilizado para mantenimiento del sistema (se
accede al sistema en modo monousuario, es decir solamente puede entrar un único
usuario al sistema en un momento dado), sobre una consola de línea de órdenes y
servicios de red.
● 2 Modo multiusuario, pero sin soporte de red (se accede al sistema sobre una
consola de línea de órdenes y servicios de red. Varios usuarios pueden acceder al
mismo tiempo al sistema).
● 3 Modo multiusuario completo, con servicios de red (se accede al sistema sobre
una consola de línea de órdenes con todos los servicios).
● 4 No se usa, puede usarse para un inicio personalizado (este nivel no está
configurado, así que puede definirse al gusto del usuario).
● 5 Modo multiusuario completo con inicio gráfico (X Window): Este es el nivel por
defecto que inicia el sistema con todos los servicios y en modo gráfico.
● 6 Modo de reinicio (reset): Reiniciar el equipo.

8
Por ejemplo, el nivel 0, que apaga el equipo, mata o detiene a todos los procesos del
sistema, todos los servicios, lo mismo hace el 6 con la diferencia que después inicia un
script que permite reiniciar el sistema. El nivel por omisión o por default del sistema está
definido en /etc/inittab, en la línea initdefault:

$> grep initdefault /etc/inittab

id:5:initdefault:
# runlevel 0 is System halt (Do not use this for initdefault!)
# runlevel 6 is System reboot (Do not use this for initdefault!)

Es posible cambiar en cualquier momento de un nivel de ejecución a otros utilizando la


orden init, pero para ello hay que disponer de privilegios de root. Hay que utilizar la orden
init especificando el nivel de ejecución al que se desea cambiar (si no se especifica ningún
nivel, la orden init nos devuelve el número de nivel de ejecución en el que nos encontramos
en ese momento). Por ejemplo, la siguiente orden cambia el nivel de ejecución actual al 3:

root@linux:~# init 3.

Configuración de los niveles de ejecución.

Por defecto, Linux establece qué procesos se van a iniciar en un determinado nivel de
ejecución. Por defecto, es el nivel 5 el que más procesos se inician, por lo que el arranque
es un poco más lento que en otros niveles. Sin embargo, cuando disponemos de privilegios
de root, podemos cambiar esto, es decir, podemos establecer que más procesos se van a
iniciar en un nivel de ejecución concreto. La forma más sencilla de hacer esto es utilizando
las herramientas de entorno gráfico o en modo texto. También se puede hacer
manualmente accediendo a los archivos situados en la carpeta /etc/init.d/, aunque se está
más expuesto a cometer errores que comprometan el buen funcionamiento del equipo.

El archivo /etc/inittab contiene la configuración principal del proceso init y todas las
herramientas de configuración acceden a él para realizar los cambios. Cuando se edita
manualmente este archivo, hay que tener mucho cuidado para no cometer errores de
sintaxis, ya que puede ocurrir que no arranque Linux. El siguiente ejemplo muestra cuál
puede ser el contenido de este archivo.

Lo siguiente muestra el contenido del archivo /etc/inittab en la configuración por defecto


de debian GNU/Linux (Para clasificar, se han eliminado las líneas de comentarios que
comienzan por ¨#¨):

9
id:2:initdefault:

si::sysinit:/etc/init.d/rcs

~~:S:wait:/sbin/sulogin

10:0:wait:/etc/init.d/rc 0

11:1:wait:/etc/init.d/rc 1

12:2:wait:/etc/init.d/rc 2

13:3:wait:/etc/init.d/rc 3

14:4:wait:/etc/init.d/rc 4

15:5:wait:/etc/init.d/rc 5

16:6:wait:/etc/init.d/rc 6

z6:6:respawn:/sbin/sulogin

ca:12345:ctrlaltdel:/sbin/shutdown -tl -a -r now

pf::powerwait:/etc/init.d/powerfail start

pn::powerfailnow:/etc/init.d/powerfail now

po::powerokwait:/etc/init.d/powerfail stop

1:2345:respawn:/sbin/getty 38400 tty1

2:23:respawn:/sbin/getty 38400 tty2

3:23:respawn:/sbin/getty 38400 tty3

4:23:respawn:/sbin/getty 38400 tty4

5:23:respawn:/sbin/getty 38400 tty5

6:23:respawn:/sbin/getty 38400 tty6

Veamos qué significa todo esto:

- La primera línea indica el nivel de ejecución por defecto en el que se inicia el sistema,
como se ha explicado.
- La siguiente línea indica que se iniciaran los procesos del nivel de ejecución S
cuando se inicie el sistema en cualquier nivel.

10
- La tercera línea indica lo que hay que hacer cuando se inicia en el nivel de ejecución
S (en este caso, ejecutar la orden sulogin para solicitar la contraseña de acceso del
usuario root).
- Las líneas desde la cuarta hasta la undécima indican los procesos a iniciar para cada
nivel de ejecución. Cada uno de estos procesos están indicados como archivos de
inicio en las carpetas /etc/init.d/rcx.d (donde x es nivel de ejecución).
- La duodécima líneas especifica la orden que se va a ejecutar cuando se pulsa la
combinación de teclas CTRL+ALT+SUPR desde una ventana de terminal de línea de
órdenes. En este caso se indica que se va a ejecutar la orden ¨shutdown -r¨, que
reinicia el sistema.
- Las líneas desde la decimotercera a la decimoquinta indican qué hacer cuando se
produce un fallo en la alimentación de corriente eléctrica el equipo.

Finalmente, las últimas líneas especifican el programa de terminal utilizado para el


interprete de ordenes asociado a ese nivel de ejecución.

La carpeta INIT.D.

La mayoría de versiones de Linux, Unix y otros sistemas derivados utilizan una carpeta
especial, denominada init.d, que normalmente se ubica dentro de la carpeta /etc, que
contiene toda la configuración acerca de los procesos que se inician automáticamente para
los distintos niveles de ejecución. Esta carpeta contiene una estructura jerárquica a base de
carpetas y archivos para los diferentes servicios que se cargan como procesos.

El contenido de esta carpeta puede variar dependiendo de la distribución y versión de Linux,


además de la configuración que tenga del proceso init.

En general, para una configuración por defecto en la mayoría de sistemas GNU/Linux,la


carpeta init.d debe contener lo siguiente:

• Una serie de archivos que guardan las órdenes necesarias para iniciar y parar los
diferentes servicios que están disponibles en el sistema. Por ejemplo, puede
contener los archivos ¨sshd¨ (para el servidor SSH), ¨gdm¨ (para el servidor gráfico
Gnome), ¨alsa¨ (para el mezclador de volumen del sistema de sonido), ¨apache2¨
(para el servidor web Apache), etc.

• Una serie de carpetas, cuyo nombre es ¨rcx.d¨, donde x se sustituye por cada uno de
los niveles de ejecución disponibles en el equipo. Cada una de estas carpetas
contiene enlaces simbólicos. Estos enlaces son de dos tipos:

11
o Aquellos enlaces cuyo nombre comienza por la letra ¨S¨ (derivada de start)
se usan para indicar que el servicio especificado al que apunta se va a iniciar
en ese nivel de ejecución. A continuación de esta letra, se indica un número
que especifica el orden en el que se va a iniciar este servicio en el arranque.
El orden de inicio de estos servicios es importante ya que, para que muchos
de ellos se puedan iniciar correctamente, puede ser necesario que otros ya
estén funcionando.

No es recomendable modificar directamente los archivos y carpetas contenidos en


/etc/init.d, ya que es importante el orden en el que se inician y finalizan los servicios del
sistema. Por ejemplo, muchos servicios que funcionan a través de la red de comunicación
necesitan que esta esté disponible para ellos, por lo que deberá iniciarse antes. Por esta
razón siempre es recomendable utilizar alguna herramienta de gestión de servicios en vez
de realizar modificaciones directamente.

La mayoría de los archivos de inicio y parada de los servicios disponibles en el sistema


(aquellos que se encuentran directamente dentro de la carpeta init.d) contienen una serie
de órdenes para iniciarlos y pararlos. En general, estos servicios pueden ser iniciados o
parados manualmente en la línea de órdenes. Para ello, hay que ejecutar estos archivos con
uno de los siguientes argumentos aceptados:

- Start: Se va a iniciar el servicio.


- Stop: Se va a parar el servicio.
- Restart: Se va a reiniciar el servicio (primero se para y luego se inicia).
- Reload: Se va a cargar la configuración del servicio para aplicar los cambios.
- Status: Se muestra el estado de ejecución del servicio.

2.4 Los registros (logs) del sistema.

El sistema operativo GNU/Linux en sí ofrece muchas posibilidades y flexibilidad por sí solo,


sin necesidad de agregados. Pero en la mayoría de los casos, los usuarios desaprovechan
su potencial y hacen uso de otras herramientas que a veces redundan en las posibilidades
que ya ofrece el sistema de forma nativa.

Se puede acceder a los logs, dirigiéndose al directorio /var/log del sistema, y allí se
encontrará una serie de subdirectorios y ficheros muy interesantes con una información
muy valiosa, desde errores para detectar y corregir problemas del sistema o con el hardware,

12
hasta otra información como los accesos que ha tenido tu sistema para detectar, por
ejemplo, intrusos que han entrado sin tu consentimiento. De hecho, estos logs suelen ser
borrados o modificados por los asaltantes para no dejar constancia o rastro de su acceso.

¿Qué son los logs de un sistema operativo GNU/Linux?

El sistema de logs de Linux (log = registro), es un mecanismo estándar que se encarga de


recoger los mensajes generados por los programas, aplicaciones y demonios y enviarlos a
un destino predefinido. En cada mensaje consta la fuente (el programa que generó el
mensaje), la prioridad (nivel de importancia del mensaje), la fecha y la hora.
Los logs o registros del sistema son ficheros de texto que registran cronológicamente la
totalidad de actividades e incidencias importantes que ocurren en el sistema operativo o
red.
Tiene que ser consciente que Linux registra absolutamente todo lo que pasa en el sistema
operativo mediante los logs. Este es uno de los motivos por los que Linux es un sistema
operativo excelente.

¿Que registran los logs de un sistema operativo GNU/Linux?

Algunos ejemplos de la información que contienen los logs en Linux son los siguientes:
1. Los paquetes que se instalan y desinstalan en el sistema operativo.
2. Información sobre accesos remotos a nuestro equipo.
3. Los intentos fallidos de autenticación de los usuarios al equipo.
4. Registro de errores que se dan en los programas o servicios que usamos.
5. Los accesos o salidas están bloqueadas por nuestro firewall.

Como acaban de ver, los logs en linux son una fuente básica para saber qué está pasando
en nuestro equipo. Por lo tanto, todo administrador de sistemas debería saber cómo
consultar los logs para este modo:
1. Detectar la causa de los problemas que puede tener un equipo o servidor.
2. Registrar y detectar ataques informáticos por parte de un hacker.
3. Detectar comportamientos anómalos de programas o servicios que tenemos
instalados en nuestro equipo.
4. Ver el rendimiento de un ordenador o servidor.
5. Averiguar qué ocurrió en una determinada actualización de un equipo.

¿Cómo se clasifican los logs de Linux y donde se encuentran?

13
Simplificando al máximo los logs en Linux se pueden clasificar del siguiente modo:

1. Logs de sistema: Generalmente generados por el demonio Rsyslogd. Registran


información relacionada con el funcionamiento del sistema operativo. Algunos
ejemplos de logs de sistema son los que registran información sobre los servicios,
los que registran los accesos al equipo, los mensajes del sistema, etc.

2. Logs de programas: Son aquellos que se registran cronológicamente los eventos


más importantes mientras estamos usando una aplicación a programa. En este
caso, los logs pueden ser generados por la propia aplicación o por Rsyslogd.

Prácticamente la totalidad de los logs se almacenan en las siguientes ubicaciones:


En el directorio /var/log.
En los subdirectorios de /var/log.

Dónde se encuentran los archivos de registro (logs) en Linux

Lo más recomendable es navegar hacia la carpeta /var/log y listar los archivos contenidos
dentro de esa carpeta. Aparecerán todos los archivos de registro disponibles. Sus nombres
son autoexplicativos.

14
cd /var/log

ls

Archivos de registro comunes (pueden variar según la distro):

● /var/log/message: registro de mensajes generales del sistema


● /var/log/auth.log: log de autenticación
● /var/log/kern.log: registro del kernel
● /var/log/cron.log: registro de crond
● /var/log/maillog: registro del servidor de mails
● /var/log/qmail/ : registro de Qmail
● /var/log/httpd/: registro de errores y accesos a Apache
● /var/log/lighttpd: registro de errores y accesos a Lighttpd
● /var/log/boot.log : registro de inicio del sistema
● /var/log/mysqld.log: registro de la base de datos MySQL
● /var/log/secure: log de autenticación
● /var/log/utmp or /var/log/wtmp : registro de logins

En conclusión, en /var/log se almacenan todos los registros del sistema. No obstante,


algunas aplicaciones como httpd incluyen ahí dentro un subdirectorio en el que almacenan
sus propios archivos de registro.

Cómo funciona el sistema de logs.

El sistema de logs arranca con el script /etc/init.d/sysklogd, y tiene dos demonios:

● syslogd: gestiona los logs del sistema. Distribuye los mensajes a archivos, tuberías,
destinos remotos, terminales o usuarios, usando las indicaciones especificadas en
su archivo de configuración /etc/syslog.conf, donde se indica qué se loguea y a
dónde se envían estos logs.
● klogd: se encarga de los logs del kernel. Lo normal es que klogd envíe sus
mensajes a syslogd pero no siempre es así, sobre todo en los eventos de alta
prioridad, que salen directamente por pantalla.

15
● Los logs se guardan en archivos ubicados en el directorio /var/log, aunque muchos
programas manejan sus propios logs y los guardan en /var/log/<programa>.

Además, es posible especificar múltiples destinos para un mismo mensaje. Algunos de los
logs más importantes son:
● /var/log/messages: aquí encontraremos los logs que llegan con prioridad info
(información), notice (notificación) o warn (aviso).
● /var/log/kern.log: aquí se almacenan los logs del kernel, generados por klogd.
● /var/log/auth.log: en este log se registran los login en el sistema, las veces que
hacemos su, etc. Los intentos fallidos se registran en líneas con información del
tipo invalid password o authentication failure.
● /var/log/dmesg: en este archivo se almacena la información que genera el kernel
durante el arranque del sistema. Podemos ver su contenido con el comando
dmesg:

$dmesg

Los archivos de log crecen y con el tiempo se pueden volver muy extensos, pero no tenemos
que preocuparnos porque en /etc/cron.daily (tareas que se ejecutan cada día) está el script
/etc/cron.daily/logrotate, (cuyo archivo de configuración es /etc/logrotate.conf), que se
encarga de comprimirlos y aplicar una rotación de archivos, añadiendoles la extensión 1.gz,
.2.gz, etc., volviendo a crear un vacío (cuanto mayor sea el número más antiguo será el log).

Monitorizar los logs en la consola.

Para monitorizar los logs en la consola, utilizaremos el comando tail. Este comando muestra
las últimas líneas de uno o más archivos de texto (por defecto las diez últimas), pero con la
opción -f, en lugar de mostrar las últimas diez líneas y terminar, tail seguirá activo y
conforme se añadan nuevas líneas al fichero las imprimirá, lo que es muy útil para
monitorizar archivos.

Para monitorizar los logs en la consola, por ejemplo el archivo /var/log/messages,

haremos lo siguiente:

$ tail -f /var/log/messages

16
Monitorizar los logs en el entorno gráfico.

En el entorno gráfico hay varias aplicaciones para monitorizar logs:

● KSystemLog (paquete ksystemlog): monitor de logs de KDE.

● GNOME-System-Log (paquete gnome-utils): monitor de logs de GNOME.

● Xlogmaster (paquete xlogmaster): monitor de logs del GNU.

● Xwatch (paquete xwatch): monitor de logs para las X.

Cómo enviar todos los logs a un archivo.

Muchas veces los logs no se miran, por lo que es buena idea configurar el sistema para

enviar todos los logs a un archivo (además de los archivos habituales) y visualizarlo en un

terminal, para así poder ver en tiempo real todo lo que pasa en nuestra máquina. Esto nos

permitirá aprender más sobre nuestro sistema y cómo funciona, y también detectar

cualquier anomalía o error que de otra manera pasarían desapercibidos. Para ello:

1. creamos el archivo vacío /var/log/all.log:

17
# touch /var/log/all.log

2. añadimos al archivo /etc/rsyslog.conf la línea:

*.* /var/log/all.log

3. volvemos a cargar la configuración de rsysklogd:

# /etc/init.d/rsysklogd reload

4. añadimos al archivo /etc/logrotate.d/rsyslog la línea:

/var/log/all.log

5. por último, abrimos una consola y ejecutamos el comando:

$ tail -f /var/log/all.log

Scripts que generan logs.

El comando logger permite enviar eventos al demonio syslogd, por lo que se utiliza en
scripts para registrar mensajes vía sysklogd. Por ejemplo, si hacemos:

# logger -t mi_programa -f /var/log/messages "Mensaje ejemplo"

veremos que se ha añadido a /var/log/messages la línea:


May 14 23:10:13 pc450 mi_programa: Mensaje ejemplo

18

También podría gustarte