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 utiliza. Se almacena su configuración en el archivo /etc/timezone. Además, se copiará el archivo correspondiente en el directorio /usr/share/zoneinfo a /etc/localtime; este archivo contiene las reglas sobre las fechas a las que corresponde el horario de verano en 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 Feb 19 11:25:18 CET 2015
$ TZ="Pacific/Honolulu" date
Thu Feb 19 00:25:21 HST 2015

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 provee permisos de root completos 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 invocará el editor vi o cualquier editor indicado en la variable de entorno EDITOR). Agregar una línea con usuario ALL=(ALL) ALL permite al usuario en cuestión ejecutar cualquier programa como root.
Configuraciones más sofisticadas permiten autorizar sólo órdenes específicas a usuarios específicos. La página de manual sudoers(5) provee todos los detalles de las varias 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:
  • file system: this indicates where the filesystem to be mounted can be found, it can be a local device (hard drive partition, CD-ROM) or a remote filesystem (such as NFS).
    Generalmente se reemplaza este campo con el ID único del sistema de archivos (que puede encontrar con blkid dispositivo) con el prefijo UUID=. Esto previene problemas con cambios en el nombre del dispositivo en caso de agregar o eliminar discos o si se detectan los discos en un orden diferente.
  • 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: this field is almost always set to 0. When it is 1, it tells the dump tool that the partition contains data that is to be backed up.
  • pass: this last field indicates whether the integrity of the filesystem should be checked on boot, and in which order this check should be executed. If it is 0, no check is conducted. The root filesystem should have the value 1, while other permanent filesystems get the value 2.

Ejemplo 8.6. Ejemplo del archivo /etc/fstab

# /etc/fstab: información de sistemas de archivos estáticos
#
# <sistema de archivos> <punto de montaje>   <tipo>  <opciones>       <respaldo>  <revisión>
proc            /proc           proc    defaults        0       0
# / era /dev/sda1 durante la instalación
UUID=c964222e-6af1-4985-be04-19d7c764d0a7 / ext3 errors=remount-ro 0 1
# swap se encontraba en /dev/sda5 durante la instalación
UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none swap sw  0       0
/dev/scd0       /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): se montará el directorio /shared/ en el servidor arrakis en /shared/ en la máquina local. El formato del archivo /etc/fstab está documentado en la página de manual fstab(5).

8.9.6. locate y updatedb

El programa locate puede encontrar la ubicación de un archivo cuando sólo conozca 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.
mlocate es suficientemente inteligente y sólo devolverá archivos a los que el usuario que lo ejecutó puede acceder a pesar de que utiliza una base de datos que conoce sobre todos los archivos en el sistema (ya que su implementación de updatedb ejecuta con permisos de root). El administrador puede utilizar PRUNEDPATHS en /etc/updatedb.conf para excluir la indexación de algunos directorios y lograr seguridad adicional.