Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. LINUX
  3. Las tareas administrativas
Extrait - LINUX Dominar la administración del sistema (5ª edición)
Extractos del libro
LINUX Dominar la administración del sistema (5ª edición)
1 opinión
Volver a la página de compra del libro

Las tareas administrativas

Administración de los usuarios

1. Fundamentos

a. Identificación y autenticación

La identificación consiste en saber quién es quién para determinar los permisos de la persona que se conecta. Se identifica un usuario mediante un login.

La autenticación consiste en aportar la prueba de quiénes somos mediante, por ejemplo, un secreto compartido entre el usuario y el sistema, y que sólo conocen ellos. Se autentifica, generalmente, al usuario con una contraseña, aunque también podría ser una clave.

b. Los usuarios

Un usuario es la asociación de un nombre de conexión, el login, con un UID y al menos un GID.

  • UID: User ID.

  • GID: Group ID.

Los UID y los GID suelen ser únicos. El login es único. Sin embargo, se puede considerar la asociación de varios logins al mismo UID, sabiendo que el sistema trabaja a veces con el login.

El UID identifica el usuario (o la cuenta asociada del servicio) a lo largo de su conexión. Se utiliza para el control de sus derechos y de los de los procesos que ha iniciado. Lo que se almacena en la tabla de los inodos, dentro de la tabla de los procesos, son los UID y GID, y no los logins.

El usuario dispone de los atributos básicos siguientes:

  • un nombre de inicio de sesión llamado login;

  • una contraseña;

  • un UID;

  • un GID correspondiente a su grupo principal;

  • una descripción;

  • un directorio de inicio de sesión;

  • un comando de inicio de sesión.

Hay otros atributos disponibles mediante la utilización de la seguridad de las contraseñas en el archivo shadow (ver apartado correspondiente).

Se suelen asociar los UID de un valor inferior a 100 a cuentas especiales con derechos extendidos. Así el UID de root, el administrador, es 0. Según las distribuciones, a partir de 100, 500 o 1000, y hasta 65.535 (216-1) aproximadamente son los UID de los usuarios sin privilegios particulares. La mayoría de los Unix, incluido Linux, pueden usar UID en 32 bits firmados, el límite sería de más de cuatro mil millones (las empresas que tienen más de 65535 empleados ya no tendrán ese problema). Estos parámetros pueden modificarse en etc/login.defs.

Un login tiene en principio un tamaño de 8 caracteres. En realidad, Linux y otros sistemas aceptan un tamaño mayor, pero con la mayoría de los comandos...

La impresión

1. Principio

En caso de duda sobre la compatibilidad entre Linux y su impresora, visite el sitio OpenPrinting: http://www.openprinting.org/printers

Existen tres estándares de impresión en Unix, uno en System V, otro en BSD y un último federador.

Sea cual sea el estándar, el principio de configuración es el mismo. A cada impresora detectada (en general en /etc/printcap) corresponde una cola de espera (queue). Un servicio independiente gestiona el conjunto de estas colas de espera. Este mecanismo permite la impresión multiusuario (los trabajos de impresión están en cola de espera, job queues) y en red (se puede usar el servicio desde otra máquina remota).

En general, todas las impresoras saber imprimir directamente texto llano ASCII en 80 columnas. Para imprimir documentos formateados o imágenes, se puede utilizar un driver. En realidad se habla de filtro de impresión. El filtro puede ser un script o un binario que recupera el flujo entrante (texto, imagen, documento, postscript...), lo identifica y, con la ayuda de tratamientos asociados, lo transforma en lenguaje comprensible por la impresora (PostScript, PCL, Canon, Epson, WPS...).

Si tiene la posibilidad y los medios, no dude en elegir una impresora compatible Postscript, que representa una garantía de compatibilidad perfecta. El sitio openprinting.org dispone de una base completa de compatibilidad de las impresoras en Linux.

Linux acepta los comandos procedentes de los Unix de tipo System V y BSD. Durante mucho tiempo, el subsistema de impresión se basaba en los servicios BSD y el demonio lpd. Desde mediados de los años 2000, todas las distribuciones se basan en CUPS, compatible (los comandos, al menos) con los antiguos sistemas de impresión.

2. System V

Los comandos de gestión de las colas de espera e impresiones con System V son los siguientes:

  • lp [-dImpresora] [-nCifra] fic1: imprime el contenido del archivo fic1. La opción -d permite elegir la impresora; -n, el número de ejemplares.

  • lpstat [-d] [-s] [-t] [-p]: información relativa a la impresión. La opción -d muestra el nombre de la impresora por defecto; -s, un estado resumido de las impresoras; -t, toda la información (estado, trabajos...); -p [lista], únicamente la información sobre las impresoras incluidas en la lista.

  • cancel [ids] [printers]...

Automatización

1. Con cron

a. Presentación

El servicio cron permite la programación de eventos repetidos. Funciona con ayuda de una tabla, llamada una crontab. Es un archivo de texto que se puede editar con un simple editor, como por ejemplo vi. Para modificar su crontab personal, utilice el comando crontab para editar la tabla con el parámetro -e.

Se guardan los archivos contrabs en /var/spool/cron.

El servicio cron debe estar ejecutándose para que las crontabs estén activas.

$ ps -ef|grep cron 
root      3634     1  0 18:28 ?        00:00:00 /usr/sbin/cron 

b. Formatos

El formato de un registro de crontab es el siguiente:

Minutos

Horas

Día del mes

Mes

Día semana

Comando

1

2

3

4

5

6

Utilice el formato siguiente para los valores periódicos:

  • Un valor para indicar cuándo se debe ejecutar el comando. P. ej.: el valor 15 en el campo minuto significa el decimoquinto minuto.

  • Una lista de valores separados por comas. P. ej.: 1,4,7,10 en el campo mes para enero, abril, julio, octubre.

  • Un intervalo de valores. P. ej.: 1-5 en el campo día de la semana indica de lunes (1) a viernes (5). El 0 es el domingo y el 6, el sábado.

  • El carácter * para todos los valores posibles. P. ej.: * en el campo día del mes indica todos los días del mes o de los meses.

  • Una / indica un intervalo. Pe: */5 en el campo minutos indica cada 5 minutos.

c. Ejemplos

Ejecución de df todos los días, todo el año, cada cuarto de hora:

0,15,30,45 * * * * df > /tmp/libre 

O

*/15 * * * * df > /tmp/libre 

Arranque de un comando cada 5 minutos a partir de 2 (2, 7, 12, etc.) a las 18 horas los días 1 y 15 de cada mes:

2-57/5 18, 1, 15 * * comando 

Ejecución de un comando todos los días laborables a las 17 horas:

0 17 * * 1-5 fin_trabajo.sh 

Listar las crontabs activas:

$ crontab -l 

Suprimir la crontab activa:

$ crontab -r 

Editar la crontab de un usuario particular:

# crontab -u user 

d. crontab sistema

La configuración crontab general para el sistema se encuentra en /etc/crontab. Su sintaxis difiere un poco. Hay un campo adicional. Permite especificar el usuario con el que se ejecutará el comando. Observe que puede especificar las variables de entorno en sus crontabs.

SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=root 
HOME=/ 
 
# run-parts ...

Los registros (logs) del sistema

1. Fundamentos

Cuando el sistema se inicia, se pone en marcha y efectúa cualquier tipo de operación, se registran sus acciones y las de la mayoría de sus servicios en diferentes archivos. Tres servicios están especializados en la recepción de los mensajes que tienen como destino estos archivos:

  • syslogd: system log daemon, encargado de la gestión de la información emitida por cualquier tipo de servicio y, si procede, del núcleo. A menudo reemplazado por syslog.ng o rsyslog

  • journald: componente de systemd, encargado de recolectar e indexar las trazas que provienen de cualquier servicio a través de sus archivos o una API, en particular systemd, pero interconectada también con syslog o kmsh.

  • klogd: kernel log daemon, encargado de la gestión de la información emitida por el núcleo. Desde hace unos años no está tan presente porque rsyslog o journald también pueden recuperar los eventos del núcleo.

Los mensajes importantes emitidos por un componente del sistema deberían pasar por los servicios syslogd o journald. Esto no impide, al contrario, que un servicio pueda gestionar sus propias entradas en sus propios archivos. No se deberían colocar entradas de aplicaciones en el registro del sistema. Las trazas de acceso a las páginas web de un servidor Apache no tienen nada que hacer ahí. En cambio, las de conexión al sistema (mediante la consola, ssh, telnet, etc.) tienen mucho interés y deben estar presentes en los archivos logs del sistema.

A partir de este punto y en el resto del libro, las entradas en el registro se llamarán por su nombre de uso corriente: los logs.

2. Los mensajes

El servicio klogd gestiona los mensajes emitidos por el núcleo. Dispone de dos fuentes de acceso a los mensajes:

  • el sistema de archivos virtual /proc, utilizado por defecto si está presente, y en particular /proc/kmsg;

  • las llamadas al sistema mediante la API del núcleo, en particular sys_syslog, si /proc no está presente o si se ha pasado el parámetro -s a klogd.

Los demonios rsyslog o journald son capaces de leer e interpretar de forma directa el contenido de /proc/kmsg y así remplazar a klogd. Si su sistema operativo utiliza un de estos dos servicios, klogd estará ausente. No hay que preocuparse.

Los mensajes...

Archivado y backup

1. Las herramientas de copia de seguridad

La copia de seguridad constituye un trabajo importante del administrador, ya que, en caso de problema grave, se suele restaurar el sistema desde una copia de seguridad, o una imagen del sistema cuando éste estaba todavía bien (funcionamiento correcto, sin corrupción). Se entrega cada Unix con sus propios comandos y procedimientos de copia de seguridad; sin embargo, existen algunas herramientas comunes.

a. Comandos, planes, scripts

  • Para la copia de seguridad de los archivos y estructuras, utilice los comandos tar y cpio. Estos comandos guardan una estructura, y no un sistema de archivos. Se puede hacer coincidir los dos.

  • Para la copia de seguridad física de discos y sistemas de archivos (los dumps), utilice el comando dd.

Una copia de seguridad incremental consiste en salvaguardar una primera vez la totalidad de los datos y luego únicamente los archivos modificados. También se pueden encontrar en forma de programas libres o en el mercado soluciones más avanzadas de copia de seguridad (Clonezilla solución en opensource, Networker solución comercial, por ejemplo).

A veces el administrador tendrá que definir scripts de copia de seguridad y restauración adaptados a cada caso concreto (partición del sistema, datos aplicativos...) y automatizar cuando sea posible la ejecución de estos scripts en función de la fecha, hora o carga de la máquina.

También será importante definir un plan de copia de seguridad y, para ello, hay que hacerse las preguntas correctas:

  • ¿Qué se debe guardar?

  • ¿Con qué frecuencia?

  • ¿Cuánto tiempo se conservarán las copias de seguridad, dónde, cuántos ejemplares?

  • ¿Dónde se almacenará el historial de las copias de seguridad?

  • ¿Cuál es el soporte más apropiado?

  • ¿Cuánta capacidad necesita el soporte de copia de seguridad?

  • ¿Cuánto tiempo se prevé para guardar un archivo, un sistema de archivos?, y ¿es razonable?

  • ¿La copia de seguridad debe ser automática o manual?

  • ¿Cuál es el método más apropiado para la copia de seguridad?

Como cada caso es único, este libro no puede contestar a todas estas preguntas. Las respuestas dependen del entorno de destino (producción...

El reloj

1. Conocer la hora

a. fecha

Para conocer la hora, utilice el comando date. Da la fecha actual, pero también calcula otras fechas en función o de la fecha actual o de cualquier fecha. date también modifica la fecha y hora del sistema.

$ date 
sáb may  8 09:57:04 CEST 2021 

Por defecto, la fecha visualizada es la fecha (y hora) local, configurada en función del huso horario. Para visualizar la hora UTC:

$ date -u 
sáb may  8 07:57:42 UTC 2021 

Se puede modificar el formato de la fecha a voluntad, tal y como se puede hacer con la función C strftime. En este caso, la sintaxis es:

fecha +"formato" 

Veamos algunos ejemplos de formatos posibles:

Formato

Resultado

%H

La hora tiene el formato 00..23.

%M

Minutos 00..59.

%S

Segundos 00..60.

%T

Hora actual sobre 24 horas.

%r

Hora actual sobre 12 horas.

%Z

Huso horario.

%a

Día abreviado (lun, mar, etc.).

%A

Día completo.

%b

Mes abreviado.

%B

Mes completo.

%d

Día del mes.

%j

Día del año.

%m

Número del mes.

%U

Número de la semana 00..53.

%y

Dos últimas cifras del año.

%Y

Año completo.

Para visualizar una fecha completa:

$ date +"Hoy es %A, %d %B %Y, son las %H horas, %M minutos y %S segundos" 
Hoy es sábado, 08 mayo 2021, son las 10 horas, 04 minutos y 07 segundos 

Puede modificar la base de cálculo con el parámetro --date seguido de una fecha o de un cálculo. Se aceptan las palabras clave today, yesterday, tomorrow, day(s), week(s), month(es), year(s), hour(s), minute(s), second(s) con + (añadido a la fecha) o - o ago (resta a la fecha especificada). Si no se especifica la fecha, será la fecha en curso. 

Dentro de 10 días:

$ date --date "10 days" 
mar may 18 10:04:26 CEST 2021 

Mañana:

date --date "tomorrow" 

Ayer:

date --date "yesterday" 

Una semana después de la Navidad de 2020:

$ date --date "12/25/2017 23:59:00 + 1 week" 
vie ene  1 23:59:00 CET 2021 

b. hwclock

El comando hwclock permite interrogar directamente al reloj hardware RTC. El parámetro --show (por defecto) visualiza la fecha actual. Es diferente del tiempo del sistema que proviene de ntp o fecha.

# hwclock --show 
2021-05-08 10:05:39.873892+02:00 

No es posible formatear el resultado del comando.

2. Modificar el reloj físico

Sólo...

Los parámetros regionales

1. i18n y l10n

Las distribuciones se instalan y funcionan en numerosos idiomas. Seguramente habrá notado que las páginas de los manuales se muestran en su idioma si se han traducido. Del mismo modo, un gran número de programas muestran su menú en el idioma en el cual se instaló o configuró el sistema.

A diferencia de numerosos editores de programas que ofrecen versiones localizadas diferenciadas de sus programas (por ejemplo, MS Office en español y en inglés son dos versiones distintas), los editores de programas libres suelen integrar directamente un soporte para numerosos idiomas o facilitan paquetes adicionales.

Hay que diferenciar entre la regionalización (en inglés, "localization") y la internacionalización:

  • La regionalización consiste en facilitar una traducción de un producto que corresponde a la cultura local (idioma principalmente, pero también moneda o representación de los números). A título de ejemplo, si bien el castellano se utiliza en España, México, Argentina y otros países de América Latina, cada cultura dispone de sintaxis y giros que pueden cambiar, así como de monedas y disposiciones de teclado diferentes.

  • La internacionalización prepara la regionalización antes, a nivel de desarrollo del programa. Un solo programa requerirá funciones de una API de internacionalización. Una función encargada de recuperar una cadena de texto en cualquier idioma dentro de una base verificará qué idioma se utiliza y sacará la cadena correspondiente. La librería de funciones gettext es un buen ejemplo.

En vez de utilizar un modelo fijado como éste:

printf("Hello"); 

un programador procederá así:

printf(gettext("Hello")); 

La función gettext buscará la cadena correspondiente a "Hello" en los archivos de regionalización del programa en el idioma actual y sacará una versión traducida. En español, la segunda línea será:

Hola 

Para ser precisos, internacionalización se suele escribir i18n (i seguido de 18 letras y luego n), y regionalización, I10n (I para localization, seguido de 10 letras y luego n).

2. Configuraciones locales

a. Herramientas de la distribución...