¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. 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 [6ª edición]
Extractos del libro
LINUX Dominar la administración del sistema [6ª edición]
1 opinión
Volver a la página de compra del libro

Las tareas administrativas

Administración de usuarios

Linux es un sistema multiusuario. Este permite compartir recursos entre usuarios, definiendo y controlando quién tiene acceso a qué recursos. El modelo de seguridad para gestionar los controles de acceso se basa en cuentas de usuario, protegidas por contraseñas. Para acceder a un recurso, un usuario debe proporcionar, directa o indirectamente, una cuenta de usuario (identificación) y una contraseña (autenticación).

La identificación, consiste en saber quién es quién, con el objetivo de determinar los permisos de la persona que se conecta. Un usuario se identifica mediante un login.

La autenticación, consiste en proporcionar una prueba de su identidad, por ejemplo, a través de un secreto compartido entre el usuario y el sistema, que solo ellos conocen. Por lo general, el usuario se autentica mediante una contraseña, pero también puede ser una clave.

1. Los usuarios

Un usuario está asociado a un nombre de conexión, un número de identificación de usuario (UID) y, al menos, un número de identificación de grupo (GID).

  • UID: user ID.

  • GID: Group ID

Los UID y GID son únicos. El nombre de usuario es único, pero es posible asociar varios nombres de usuario con el mismo UID.

El UID identifica al usuario (o a la cuenta de servicio de la aplicación) a lo largo de su conexión. Se utiliza para controlar sus permisos y los de los procesos que ha iniciado. Son los UID y GID los que se almacenan en la tabla de inodos, en la tabla de procesos, etc., y no los nombres de usuarios o grupos.

El usuario tiene los siguientes atributos básicos:

  • Un nombre de usuario.

  • Una contraseña.

  • Un UID.

  • Un GID correspondiente a su grupo principal.

  • Una descripción.

  • Un directorio de conexión.

  • Un comando de conexión (normalmente un shell).

Los UID con un valor inferior a 1.000 suelen estar asociados a cuentas especiales reservadas para el sistema.

El UID de root, el administrador, siempre es 0, lo que le otorga todos los permisos sobre los recursos del sistema.

Dependiendo de la distribución, desde 100, 500 o 1000, hasta un máximo de 65535 (216-1), son los UID de los usuarios. La mayoría de los UID están codificados en 32 bits con signo, por lo que el límite es de más de cuatro mil millones.

La mayoría de estos parámetros...

La impresión

Linux puede manejar tres sistemas de impresión: System V LP, BSD LPD y CUPS, todos ellos basados en Unix. CUPS es el más reciente, sus comandos son compatibles con los de BSD LPD y se ha convertido en el estándar Linux de facto.

La certificación LPIC-1 requiere el conocimiento de CUPS y de los comandos compatibles con LPD.

1. Fundamentos

Linux administra las impresoras a través de un servicio de servidor de impresión. Cada impresora tiene una cola de espera (queue) correspondiente. El servidor de impresión gestiona todas las colas. La impresión funciona en modo multiusuario y en cola de impresión: los trabajos de impresión enviados por los usuarios se colocan en colas y se van procesando conforme van llegando. El servidor de impresión puede funcionar en red, aceptando solicitudes de impresión de otros sistemas, Linux o no.

La mayoría de las impresoras pueden imprimir directamente texto sin formato ASCII en 80 columnas. Para imprimir documentos o imágenes formateados, necesita un controlador, que se asocia con el dispositivo mediante la configuración de un filtro de impresión. Este filtro puede ser un script o un programa ejecutable que lee el flujo por imprimir (texto, imagen, documento, postscript, etc.) y lo transforma en instrucciones en un lenguaje adaptado a la impresora (Postscript, PCL, Canon, Epson, WPS, etc.).

Puede comprobar la compatibilidad de muchas impresoras con Linux a través del sitio web de OpenPrinting: http://www.openprinting.org/impresoras

Las impresoras compatibles con Postscript suelen ofrecer una compatibilidad muy buena con Linux.

2. El sistema de impresión LPD BSD

El servicio de servidor de impresión generalmente se conoce como lpd.

Los principales comandos de impresión son los siguientes:

lpr [-Pimpresora] [-#copias] fic 

Solicita que se imprima el archivo fic. La opción -P permite especificar la cola de impresión y -# el número de copias que se quiere imprimir. Sin la opción -P, el comando utiliza la cola predeterminada del usuario, definida por las variables LPDEST o PRINTER

lpq [-Pimpresora] 

Muestra el estado y la lista de trabajos de la impresora predeterminada o de la impresora especificada por la opción -P.

lprm [-Pimpresora] [-] [id1 ... idN] 

Elimina una o varias solicitudes de impresión de la impresora predeterminada...

Automatización de tareas

Se pueden utilizar diferentes servicios para gestionar tareas, periódicas o no, que se realizarán en segundo plano, según diferentes criterios de fecha u hora.

1. El servicio cron

El servicio cron permite a los usuarios autorizados enviar la ejecución de tareas periódicas. Funciona usando una tabla, una por usuario, llamada crontab, en forma de archivo de texto.

Para modificar su crontab, el usuario puede utilizar el comando crontab con la opción -e (edit). El comando abre la crontab del usuario en el editor de texto predeterminado. Si el usuario sale del editor guardando los cambios, la nuevo crontab sustituye a la anterior y el servicio cron la tiene en cuenta.

Los archivos crontabs se almacenan en /var/spool/cron o /var/spool/cron/crontabs.

La opción -l del comando crontab muestra el contenido del crontab del usuario actual. 

La opción -u Nombre del comando crontab gestiona el contenido de la crontab del usuario especificado y está reservada para el administrador root.

El servicio cron se debe iniciar para que las crontabs estén activas.

Ejemplo

# ps -ef | grep cron  
root         520       1  0 13:20 ?         00:00:00 /usr/sbin/cron -f  
# systemctl status cron  
● cron.service - Regular background program processing daemon  
     Loaded: loaded (/lib/systemd/system/cron.service; enabled; preset: enabled)  
     Active: active (running) since Thu 2023-07-13 13:20:02 CEST; 2h 23min ago 
       Docs: man:cron(8)  
   Main PID: 520 (cron)  
      Tasks: 1 (limit: 4471)  
     Memory: 444.0K  
        CPU: 138ms  
     CGroup: /system.slice/cron.service  
             +-520 /usr/sbin/cron -f 

a. Formato de una línea de tarea crontab

El formato de un registro de crontab es el siguiente:

Minutos

Horas

Día del mes

Mes

Día de la semana

Comando

1

2

3

4

5

6

El formato de los 5 campos periódicos...

Archivos de registro del sistema

Cuando el sistema arranca, se ejecuta y realiza cualquier tipo de operaciones, sus acciones y las de la mayoría de sus servicios, se registran en diferentes archivos de registro. Hay dos tipos de servicios que se especializan en recibir mensajes y en escribirlos después en estos archivos:

  • syslog (system log) es responsable de manejar los mensajes informativos, de advertencia o de error emitidos por los servicios y, posiblemente, por el kernel. Este servicio puede ser gestionado por diferentes componentes de software: rsyslog, syslog-ng o el más antiguo, syslog.

  • journald: este componente de systemd es responsable de recopilar e indexar información que proviene de los servicios, a través de sus archivos o un API, y también puede interactuar con un servicio de tipo syslog.

Los mensajes importantes emitidos por un componente del sistema deben utilizar los servicios syslog o journald. Esto no impide que una aplicación administre sus propios archivos de registro, como un servidor HTTP.

1. Los mensajes

Los mensajes de los componentes de software que utilizan rsyslog o journald tienen diferentes niveles de prioridad, que van desde 0 (prioridad alta) hasta 7 (mensaje de depuración):

Nivel

Alias del sistema

Significado

0

EMERG

El sistema es inutilizable.

1

ALERT

Hay que realizar una acción de inmediato.

2

CRIT

Problema crítico.

3

ERR

Error.

4

WARNING

Advertencia.

5

NOTICE

Normal, pero requiere una atención especial.

6

INFO

Información estándar.

7

DEBUG

Seguimiento de depuración del kernel.

Los servicios rsyslog o journald reciben los mensajes y los procesan después según el remitente y su nivel, aplicando las acciones asociadas, que pueden ser concretamente:

  • escribir en uno o varios archivos de registro,

  • mostrar en la pantalla de las consolas,

  • enviar correos electrónicos a los usuarios del sistema (por ejemplo, root),

  • redireccionar a un servidor de log remoto,

  • ejecutar una aplicación.

Las acciones más comunes son escribir en archivos de registro, mostrarlos en una consola del sistema o enviar mensajes a root.

2. Configuración de rsyslog

El administrador de registros rsyslog (reliable and extended syslogd) sustituye a syslog y syslog-ng, y es compatible con la sintaxis de sus archivos de configuración.

Su configuración principal se define en el archivo...

Copia de seguridad y restauración

Hacer una copia de seguridad del sistema y de los datos es una responsabilidad importante del administrador. Linux tiene muchos comandos para hacer copias de seguridad y restaurar información, árboles de directorios o archivos, sistemas de archivos completos, así como algunos o todos los soportes físicos.

Los tres comandos habituales son:

  • Para hacer copias de seguridad de archivos y árboles: tar o cpio.

  • Para la copia de seguridad física de discos y sistemas de archivos: dd.

Los comandos adicionales son:

  • mt: control de una cinta magnética.

  • compress y uncompress: comprime y descomprime archivos.

  • gzip, gunzip, zcat: comprime y descomprime en formato GnuZip.

  • xz, unxz, xzcat: comprime y descomprime en formato .xz.

  • bzip2, bunzip2, bzcat: comprime y descomprime en formato .bz2, mejor que gzip.

1. El comando tar

El comando tar crea archivos, directorios, archivos comprimidos y archivos, en cualquier tipo de medio, incluido en otro archivo. El archivo creado puede abarcar varios volúmenes físicos.

a. Archivar

La sintaxis común es la siguiente:

tar cvf nombre_archivo Archivo(s) 

Con:

  • c: creación de archivos.

  • v: visualización detallada.

  • f: el siguiente argumento es el nombre del archivo comprimido que se va a utilizar (archivo especial del dispositivo o archivo comprimido).

El comando tar utiliza opciones sin prefijarlas necesariamente con el carácter -.

Ejemplo

Copia de seguridad del directorio de conexión:

$ cd  
$ tar cvf pba.tar .   
./  
./.ssh/  
./.ssh/known_hosts.old  
./.ssh/known_hosts  
./Documentos/  
./Modelos/  
tar: ./pba.tar : el archivo es el archivo en sí mismo; archivo no archivado 
./.local/  
./.local/share/  
[...]  
./.bash_logout  
./.bash_history  
./.face  
$ ls -l pba.tar  
-rw-r--r-- 1 pba pba 23132160 17 julio 16:09 pba.tar 

b. Listar el contenido de un archivo

La sintaxis es:

tar tvf nombre_archivo 

La opción t (table) enumera el contenido del archivo.

Ejemplo

Listar el contenido del archivo de almacenamiento del ejemplo anterior:

$ tar tvf pba.tar  
drwx------ pba/pba           0 2023-07-17 16:09 ./  
drwx------ pba/pba           0...

Gestionar la fecha y hora del sistema

1. El comando date

El comando date permite mostrar la fecha del sistema y calcular otras fechas basadas en la fecha actual o en cualquier fecha. También permite al administrador root cambiar la fecha y la hora del sistema.

Ejemplo

$ date  
mar. 18 julio 2023 08:31:31 CEST 

Por defecto, se muestran la fecha y hora actuales, en función de la zona horaria configurada en el sistema. Para ver la hora UTC:

$ date -u  
mar. 18 julio 2023 06:32:35 UTC 

El formato de visualización se puede especificar mediante diferentes secuencias.

Sintaxis

date + "formato" 

Secuencias principales:

Formato

Resultado

%H

Hora en formato 00..23

%M

Minutos 00..59

%S

Segundos 00..60

%T

Hora actual superior a 24 horas

%r

Hora actual superior a 12 horas

%Z

Huso horario

%a

Día abreviado (lunes, martes, etc.)

%A

Día completo

%b

Mes abreviado

%B

Mes completo

%d

Día del mes

%j

Día del año

%m

Edición del mes

%U

Número de semana 00..53

%y

Dos últimas cifras del año

%Y

Año completo

Ejemplo

$ date +"La %A %d %B %Y %H horas %M minutos %S segundos"  
El martes 18 julio 2023 08 horas 36 minutos 31 segundos 

La opción --date seguida de una fecha o cálculo muestra la fecha resultante.

Se aceptan las palabras clave today, yesterday, tomorrow, day(s), week(s), month(s), year(s), hour(s), minute(s), second(s), con +, - o ago (restado de la fecha especificada). Si no se especifica la fecha, es la fecha actual.

Ejemplo

En 10 días:

$ date --date "10 days"  
vier. 28 julio 2023 08:39:21 CEST 

Mañana:

$ date --date "tomorrow"  
mier. 19 julio 2023 08:39:43 CEST 

Ayer:

$ date --date "yesterday"  
lunes 17 julio 2023 08:40:14 CEST 

Une semana después de Navidad de 2023:

$ date --date "12/25/2023 23:59:00 + 1 week"  
lunes 01 enero 2024 23:59:00 CET 

El comando permite al administrador root cambiar la fecha y hora del sistema.

Sintaxis

date MMDDhhmm[[CC]AA][.ss]] 

Ejemplo

Un usuario intenta cambiar la hora del sistema:

$ date 08110801  
date: imposible definir la fecha: Operación no permitida  
vier. 11 ago. 2023 08:01:00 CEST  
$ date  
mar. 18 julio 2023 08:44:21 CEST 

El comando hwclock

El comando hwclock, que está reservado para el administrador root, permite consultar directamente...

Configuración regional

Las distribuciones de Linux admiten muchos idiomas y permiten configurar los formatos regionales correspondientes, por ejemplo, el formato de visualización de la fecha, el símbolo de moneda, etc.

1. Internacionalización (i18n) y localización (l10n)

Hay que distinguir entre localización (localization) e internacionalización:

  • La localización (l10n, localization, una palabra de 12 letras que comienza por l y termina por n) consiste en proporcionar una traducción de un elemento correspondiente a la cultura local (principalmente el idioma, pero también la moneda o la representación de números). Por ejemplo, si el español se usa en España y muchos países de América Latina, cada cultura tiene elementos que pueden variar  moneda, distribución del teclado, etc.

  • La internacionalización (i18n, internacionalization, una palabra de 20 letras que comienza por i y termina por n) gestiona la regionalización ascendente a nivel del desarrollo de software. El software común utiliza las funciones de un API de internacionalización. Una función que es responsable de recuperar una cadena de texto en cualquier idioma dentro de una base de datos, comprueba qué idioma se usa y devuelve la cadena correspondiente, por ejemplo, la librería de funciones gettext.

Ejemplo

En lugar de usar un modelo fijo como este:

printf("Hello"); 

Un programador lo puede usar así:

printf(gettext("Helo")); 

La función gettext buscará la cadena correspondiente a "Hola" en los archivos de localización del programa en el idioma actual y devolverá una versión traducida. Por lo tanto, en España, la segunda línea mostrará:

Hola 

2. Configuración regional

Hay varias formas de cambiar la localización del sistema o de un programa determinado. Cada distribución proporciona un módulo de configuración, al igual que cada entorno de escritorio (Gnome, Unity, KDE, etc.).

La siguiente orden permite especificar los conjuntos de configuraciones regionales que se configurarán en una distribución similar a Debian:

dpkg-reconfigure locales 

a. Variables de entorno

Los parámetros que determinan el país, el idioma o la moneda utilizados se colocan en diferentes variables de entorno...