Product SiteDocumentation Site

8.9. Otras configuraciones: sincronización de tiempo, registros, acceso compartido…

Es recomendable que cualquiera que quiera dominar todos los aspectos de configuración de un sistema GNU/Linux conozca los muchos elementos incluidos en esta sección. Se los trata, sin embargo, brevemente y generalmente lo dirigirán a la documentación.

8.9.1. Zona horaria

La zona horaria, configurada durante la instalación inicial, es un elemento de configuración del paquete tzdata. Para modificarla ejecute dpkg-reconfigure tzdata, lo que le permitirá seleccionar de forma interactiva la zona horaria a utilizar. Se almacena su configuración en el archivo /etc/timezone. Además, /etc/localtime se convierte en un enlace simbólico al archivo correspondiente en /usr/share/zoneinfo; el archivo que contiene las reglas que rigen las fechas en las que se activa el horario de verano (DST), para los países que lo utilizan.
Cuando necesite cambiar la zona horaria temporalmente utilice la variable de entorno TZ que tiene más prioridad que la configurada en el sistema:
$ date
Thu Sep  2 22:29:48 CEST 2021
$ TZ="Pacific/Honolulu" date
Thu 02 Sep 2021 10:31:01 AM HST

8.9.2. Sincronización de tiempo

La sincronización de tiempo, que puede parecer superfluo en un equipo, es muy importante en una red. Debido a que los usuarios no tienen permisos para modificar la fecha y hora es importante que esta información sea precisa para evitar confusión. Lo que es más, tener sincronizados todos los equipos de una red permite cruzar referencias de información en registros de diferentes máquinas. Por lo tanto, en caso de un ataque, es más sencillo reconstruir la secuencia cronológica de acciones en todos los equipos involucrados en el mismo. Los datos recolectados en varios equipos por motivos estadísticos no tendrán demasiado sentido si no están sincronizados.

8.9.2.1. Para estaciones de trabajo

Debido a que las estaciones de trabajo son reiniciadas frecuentemente (aunque sólo sea para ahorrar energía), sincronizarlas por NTP al inicio es suficiente. Para hacerlo, simplemente instale el paquete ntpdate. Puede cambiar el servidor NTP utilizado modificando el archivo /etc/default/ntpdate.

8.9.2.2. Para servidores

Los servidores rara vez son reiniciados y es muy importante que la hora de estos sistemas sea correcta. Para mantener la hora correcta debe instalar un servidor NTP local, un servicio ofrecido en el paquete ntp. En su configuración predeterminada el servidor se sincronizará con pool.ntp.org y proveerá la hora como respuesta a pedidos que provengan de la red local. Puede configurarlo editando el archivo /etc/ntp.conf, siendo la alteración más importante el servidor NTP al que se refiere. Si la red tiene muchos servidores podría ser interesante tener un servidor de tiempo local que sincroniza con los servidores públicos y es utilizado como fuente de tiempo por los demás servidores de la red.

8.9.3. Rotación de archivos de registro

Los archivos de registro pueden crecer, rápido, y es necesario archivarlos. El esquema más común es un archivado rotativo: el archivo de registro es almacenado regularmente y sólo se mantienen los últimos X archivos. logrotate, el programa responsable de estas rotaciones, responde a las directivas presentes en el archivo /etc/logrotate y todos los archivos en el directorio /etc/logrotate.d/. El administrador puede modificar estos archivos si desean adaptar la política de rotación de registros definida por Debian. La página de manual logrotate(1) describe todas las opciones disponibles en estos archivos de configuración. Podría desear aumentar la cantidad de archivos mantenidos en la rotación o mover los archivos de registros a un directorio específico dedicado a su archivado en lugar de eliminarlos. También puede enviarlo por email para archivarlos en otro lado.
El programa logrotate es ejecutado diariamente por la aplicación cron (descripta en la Sección 9.7, “Programación de tareas con cron y atd).

8.9.4. Compartición de permisos de administración

Frecuentemente, muchos administradores trabajan en la misma red. Compartir contraseñas de root no es muy elegante y abre la puerta al abuso debido al anonimato generado. La solución a este problema es el programa sudo que permite a ciertos usuarios ejecutar ciertas órdenes con permisos especiales. En el caso de uso más común, sudo permite a un usuario confiable ejecutar cualquier orden como root. Para hacerlo, el usuario simplemente ejecuta sudo programa y provee su contraseña personal como autenticación.
Al instarlarlo, el paquete sudo le proporciona permisos completos de root a los miembros del grupo Unix sudo. Para delegar otros permisos el administrador debe utilizar el programa visudo que le permitirá modificar el archivo de configuración /etc/sudoers (aquí nuevamente se llamará al editor vi o cualquier editor indicado en la variable de entorno EDITOR). Alternativamente, pueden poner las reglas en pequeños ficheros en /etc/sudoers.d/ siempre que este directorio esté incluido en /etc/sudoers via @includedir /etc/sudoers.d, que es el predeterminado para Debian. Añadir una línea con username ALL=(ALL) ALL permite al usuario en cuestión ejecutar cualquier comando como root.
Configuraciones más sofisticadas permiten autorizar sólo órdenes específicas a usuarios concretos. Más detalles en la página de manual sudoers(5) de las distintas posibilidades.

8.9.5. Lista de puntos de montaje

El archivo /etc/fstab tiene una lista de todos los montajes posibles que pueden ocurrir automáticamente durante el inicio o manualmente para dispositivos de almacenamiento removibles. Se describe cada punto de montaje en una línea con varios campos separados por espacios:
  • sistema de archivos: esto indica donde se puede encontrar el sistema de archivos que se quiere montar, puede ser un dispositivo local (disco duro, partición, CD-ROM) o un sistema de archivos remoto (como NFS e incluso SSHFS).
    Este campo se sustituye frecuentemente por el ID único del sistema de archivos (que se puede determinar con blkid device) con el prefijo UUID=. Esto protege contra un cambio en el nombre del dispositivo en caso de adición o eliminación de discos, o si los discos se detectan en un orden diferente. Sección 8.8.1, “Identificación de discos” da más detalles de este tema.
  • punto de montaje: esta es la ubicación del sistema de archivos local donde se montará el dispositivo, sistema remoto o partición.
  • tipo: este campo define el sistema de archivos utilizado en el dispositivo montado. Algunos ejemplos son ext4, ext3, vfat, ntfs, btrfs y xfs.
    Puede encontrar una lista de todos los sistemas de archivos conocidos en la página de manual mount(8). El valor especial swap es para particiones swap; el valor especial auto le dice al programa mount que detecte automáticamente el sistema de archivos (que es especialmente útil para lectores de discos y llaves USB ya que cada una puede tener diferentes sistemas de archivos);
  • opciones: hay muchas, dependiendo del sistema de archivos, y están documentadas en la página de manual de mount. Las más comunes son
    • rw o ro que significan que se montará el dispositivo con permisos de lectura y escritura o sólo lectura, respectivamente.
    • noauto desactiva el montaje automático durante el arranque.
    • nofail permite continuar al proceso de arranque incluso aunque un dispositivo no esté presente. Aseguresé de poner esta opción para los discos externos que puedan estar desconectados durante el arranque, porque systemd se asegura de que todos los puntos de montaje que deban montarse automáticamente están realmente montados antes de permitir que continúe el proceso. Puede combinar esto con x-systemd.device-timeout=5s para instruir a systemd para que no espere más de 5 segundos para que aparezca el dispositivo (vease systemd.mount(5)).
    • user autoriza a todos los usuarios a montar este sistema de archivos (una operación que de otra forma estaría restringida sólo al usuario root).
    • defaults es un sinónimo de la lista de opciones predeterminada: rw, suid, dev, exec, auto, nouser y async, cada una de las cuales puede ser desactivada luego de defaults agregando nosuid, nodev, etc. para bloquear suid, dev, etc. respectivamente. Agregar la opción user lo reactiva ya que defaults incluye nouser.
  • dump: este campo casi siempre tiene el valor 0 y es una especie de reliquia. Cuando es mayor de cero, le dice la herramienta dump que la partición contiene datos de los que hay que hacer copias de seguridad con frecuencia. La herramienta sólo admite sistemas de archivos Ext2/3/4 y utilizará el valor aquí indicado cuando se ejecute mediante dump -W o dump -w para determinar de qué particiones es necesario hacer una copia de seguridad. A tener en cuenta los ejemplos en /usr/share/doc/dump/examples/ si desea utilizar esta función. Pero hay mejores alternativas para hacer copias de seguridad de un sistema de archivos, como fsarchiver.
  • pass: este último campo indica si se debe revisar la integridad del sistema de archivos durante el inicio y en qué orden debe ejecutarse esta revisión. Si es 0 no se realizarán revisiones. El sistema de archivos raíz debería tener el valor 1 mientras que otros sistemas de archivos permanentes deberían tener el valor 2.

Ejemplo 8.5. Ejemplo del archivo /etc/fstab

# /etc/fstab: static file system information.
#
# Usar 'blkid' para imprimir el identificador único universal para un
# dispositivo; esto se puede usar con UUID = como una forma más sólida de nombrar dispositivos
# eso funciona incluso si se agregan y eliminan discos. Ver fstab(5).
#
# systemd genera unidades de montaje basadas en este archivo, ver systemd.mount(5).
# Ejecute 'systemctl daemon-reload' después de realizar cambios aquí.
#
# <file system>                           <mount point>   <type>      <options>         <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=7a250fb8-c16d-4a4e-9808-ec08ae92b6c6 /               ext4        errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=13f367ae-dbaf-40ed-85c0-4072a2ebe426 none            swap        sw                0       0
/dev/sr0                                  /media/cdrom0   udf,iso9660 user,noauto       0       0
/dev/fd0                                  /media/floppy   auto        rw,user,noauto    0       0
arrakis:/shared                           /shared         nfs         defaults          0       0
El último elemento en este ejemplo corresponde a un sistema de archivos de red (NFS): el directorio /shared/ en el servidor arrakis se monta en /shared/ en la máquina local.
El formato del archivo /etc/fstab está documentado en la página del manual fstab(5).

8.9.6. locate y updatedb

El programa locate puede encontrar la ubicación de un archivo cuando sólo sepas parte del nombre. Devuelve un resultado casi instantáneamente ya que consulta una base de datos que almacena la ubicación de todos los archivos del sistema; se actualiza esta base de datos diariamente con updatedb. Existen varias implementaciones de locate y Debian eligió mlocate para su sistema estándar. Si desea considerar una alternativa ,puede probarplocate que proporciona las mismas opciones de línea de comandos y puede considerarse un reemplazo directo.
localizar es lo suficientemente inteligente como para devolver sólo los archivos que son accesibles al usuario que ejecuta el comando a pesar de que utiliza una base de datos que conoce todos los archivos del sistema (ya que su implementación actualizarb se ejecuta con derechos de root). El administrador puede utilizar PRUNEDPATHS en /etc/updatedb.conf para excluir la indexación de algunos directorios y lograr seguridad adicional.