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...