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

The timezone, configured during initial installation, is a configuration item for the tzdata package. To modify it, use the dpkg-reconfigure tzdata command, which allows you to choose the timezone to be used in an interactive manner. Its configuration is stored in the /etc/timezone file. Additionally, /etc/localtime becomes a symbolic link to the corresponding file in the /usr/share/zoneinfo; the file that contains the rules governing the dates where daylight saving time (DST) is active, for countries that use it.
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
Mon Jul 29 07:53:36 PM EDT 2024
$ TZ="Pacific/Honolulu" date
Mon Jul 29 01:54:00 PM HST 2024

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

Since work stations are regularly rebooted (even if only to save energy), synchronizing them by NTP at boot is enough. To do so, simply install either the ntpdate or the systemd-timesyncd package. You can then change the NTP server used if needed by modifying the /etc/default/ntpdate or the /etc/systemd/timesyncd.conf file.

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.
When installed, the sudo package gives full root rights to members of the sudo Unix group. To delegate other rights, the administrator can use the visudo command, which allows them to modify the /etc/sudoers configuration file (here again, this will invoke the vi editor, or any other editor indicated in the EDITOR environment variable). Alternatively, they might put rules in small files in /etc/sudoers.d/ with the file permissions 0440 as long as this directory is included by /etc/sudoers via @includedir /etc/sudoers.d, which is the default for Debian. Adding a line with username ALL=(ALL) ALL allows the user in question to execute any command as root. The permissions and syntax of all files can be verified with the visudo -c command.
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.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <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

The locate command can find the location of a file when you only know part of the name. It sends a result almost instantaneously, since it consults a database that stores the location of all the files on the system; this database is updated daily by the updatedb command. There are multiple implementations of the locate command and Debian picked mlocate for its standard system. If you want to consider an alternative, you can try plocate which provides the same command line options and can be considered a drop-in replacement.
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.