cabecera d-xl

Administración Básica (I)

El usuario root


Como ya hemos dicho anteriormente, Unix es un sistema operativo multiusuario. A comienzos de los años 70, cuando Dennis Ritchie y Ken Thompson crearon Unix, era posible tener varios terminales conectados simultáneamente a una gran máquina central, ejecutando cada uno sus propios programas.

El sistema GNU/Linux es también multiusuario, por ser una variante de Unix. Sin embargo, de todos los usuarios que pueden tener cuenta en una máquina, destaca uno de ellos: el usuario root.

El usuario root (o superusuario) tiene absolutamente todo el control del sistema. Puede instalar programas para el resto de usuarios, configurar los principales demonios del sistema, crear cuentas para otros usuarios, revisar los logs del sistema, etc. En definitiva tiene el privilegio y a la vez el deber de administrar la máquina.

El resto de usuarios son llamados usuarios no privilegiados, puesto que les está prohibido realizar cierto tipo de operaciones. Este esquema jerárquico supone varias ventajas:

  • Cuando estamos trabajando en nuestro PC, podemos estar tranquilos de no estropear alguna parte del sistema, puesto que simplemente no tendremos permisos para hacerlo.
  • Por otro lado, tenemos un control total sobre nuestro directorio de trabajo personal. Además, este directorio no es accesible para otros usuarios.
  • Si algún día se inventa un virus que afecte a sistemas Unix, no podrá hacer gran cosa puesto que no tendrá permisos para modificar los datos importantes.

Arranque y parada


Desde que apretamos el botón de encendido de nuestro PC hasta que aparece la pantalla de login de nuestro sistema operativo suceden una serie de pasos que vamos a detallar a continuación.

  1. Nada más encender, la BIOS (Basic Input/Output System) realiza un chequeo básico del hardware del sistema.
  2. Si todo va bien, lee desde el MBR (Master Boot Record) la primera etapa del cargador del sistema operativo. El MBR es el primer sector del disco duro desde el cual se arranca.
  3. Cuando la primera etapa está en memoria, comienza a cargar la segunda etapa desde /boot.
  4. Una vez que todo el cargador está en memoria, comienza a cargar el núcleo del sistema operativo en la memoria y lo pone a ejecutar.
  5. El núcleo carga en memoria todos los módulos y monta la partición raíz (/) en modo sólo lectura.
  6. A continuación el núcleo pone a ejecutar al proceso /sbin/init, el proceso padre de todos los procesos.
  7. El proceso init carga todas los servicios y herramientas de espacio del usuario y monta todas las particiones listadas en /etc/fstab.
  8. Se ejecuta el proceso /bin/login y el sistema se queda a la espera de que acceda un usuario con login y contraseña.

    Proceso de arranque


    Cuando init arranca, se transforma en el padre (o en el abuelo) de todos los procesos que se producen automáticamente en su sistema Red Hat Linux. Primero pone en funcionamiento el script o guión establecido en el fichero /etc/rc.d/rc.sysinit, que establece la ruta a otros programas, activa la memoria de intercambio (swap memory) , controla los sistemas de ficheros, etc. Básicamente, el fichero rc.sysinit se encarga de todo lo que su sistema tiene que realizar durante la inicialización. La mayor parte de los sistemas usan un reloj, por lo tanto, en ellos, el rc.sysinit tendrá una referencia /etc/sysconfig/clock para inicializar el reloj. Si tiene procesos especiales en el puerto serie que necesiten ser inicializados, el rc.sysinit podría también poner en funcionamiento el rc.serial.

    El comando init ejecuta el script /etc/inittab, que describe el modo en el que el sistema debería configurarse en cada nivel de ejecución. Entre otras cosas, /etc/inittab configura el nivel de ejecución por defecto.

    El programa init inicia todos los procesos de fondo en un directorio rc adecuado para el nivel de ejecución especificado como predeterminado en /etc/inittab. El directorio rc está numerado para corresponder al nivel de ejecución que represente. Por ejemplo, /etc/rc.d/rc5.d es el directorio para el nivel de ejecución 5.

    Cuando se arranca el nivel de ejecución 5, el programa init consulta el directorio /etc/rc.d/rc5.d para determinar qué procesos iniciar o parar. A continuación, un ejemplo de un listado del contenido de /etc/rc.d/rc5.d:

    • K01pppoe -> ../init.d/pppoe
    • K05innd -> ../init.d/innd
    • ...
    • K90ups -> ../init.d/ups
    • K96irda -> ../init.d/irda
    • S05kudzu -> ../init.d/kudzu
    • S06reconfig -> ../init.d/reconfig
    • ...
    • S99local -> ../rc.local
    • S99mdmonitor -> ../init.d/mdmonitor

    Como vemos, todos los ficheros son enlaces simbólicos a scripts que están en /etc/rc.d/init.d. En este nivel de ejecución, se matará todos aquellos que comiencen por K (kill) y se arrancarán todos aquellos que comiencen con S (start). El número que aparece después de la K o la S es el orden en el que se ejecutarán, empezando por 00 y terminando por 99.

    Proceso de parada


    Para apagar Red Hat Linux, ejecute el comando shutdown. Puede leer la página del manual de shutdown para obtener más detalles, pero los parámetros más usuales son:

    • shutdown -h now.
    • shutdown -r now.

    Con la opción -h (halt) apagamos el sistema, mientras que con la opción -r (reboot) lo reiniciamos.

    Si su ordenador no se apaga por sí solo, no deberá apagarlo hasta que no vea un mensaje en la pantalla indicándole que puede hacerlo.

    Nota: Si se produce un fallo mientras se apaga el sistema puede ser porque esté intentando apagar su máquina antes de que las particiones de disco hayan sido desmontadas. Esto puede provocar fallos en el sistema de ficheros, incluso hasta el punto de no permitirle arrancar el sistema la próxima vez que intente iniciarlo. Tenga paciencia a la hora de apagar su sistema, y sobre todo hágalo de forma ordenada.

    Cuentas de Usuario


    Los usuarios pueden ser personas reales (cuentas ligadas a un usuario físico en particular) o usuarios lógicos (cuentas existentes para aplicaciones particulares). Como indicamos con anterioridad todo usuario, real o lógico, tiene un ID de usuario (UID) e ID de grupo (GID).

    Los grupos son siempre expresiones lógicas de organización. Los usuarios forman grupos de usuarios ligados a los que les dan permisos comunes de lectura, escritura o ejecución en virtud de su pertenencia al grupo. de ficheros.

    Por ejemplo, una universidad podría querer dividir los usuarios de sus aulas informáticas en varios grupos como "profesores", "alumnos", etc, y así poder asignar permisos de forma global a todo el grupo para realizar ciertas acciones o restringir el acceso a determinadas partes del sistema.

    Cuando se crea un fichero se asigna a un usuario y a un grupo, concretamente al usuario que lo crea y al grupo principal de éste. De la misma manera, se asignan permisos de lectura, escritura y ejecución para el propietario del archivo, para el grupo asignado al archivo y para cualquier otro usuario en un host. El usuario y el grupo de un archivo particular, así como los permisos en ese archivo, pueden ser cambiados por el administrador o, en menor grado, por el creador de un archivo.
    Una de las tareas más importantes de cualquier administrador del sistema, es la de gestionar los usuarios y grupos, así como asignar y revocar permisos.

    Red Hat Linux dispone de una herramienta gráfica llamada redhat-config-users que permite administrar las cuentas de usuario de una forma muy intuitiva

    Sistemas de ficheros


    Otra tarea del administrador de sistemas es el cuidado de los sistemas de ficheros. Mucho de este trabajo se basa en comprobaciones periódicas del sistema de ficheros en busca de ficheros dañados o corrompidos; varios sistemas comprueban automáticamente los sistemas de ficheros durante el arranque.

    Para empezar, veamos algunos conceptos acerca de los sistemas de ficheros. Antes de que un sistema de ficheros sea accesible al sistema, debe ser montado en algún directorio. Por ejemplo, si se tiene un sistema de ficheros en un disquete, se debe montar bajo algún directorio, digamos /mnt/floppy, para poder acceder a los ficheros que contiene. Tras montar el sistema de ficheros, todos los ficheros en dicho sistema aparecen en ese directorio. Tras desmontar el sistema de ficheros, el directorio (en este caso, /mnt/floppy) estará vacío. Haga la prueba.

    Lo mismo es valido para los sistemas de ficheros del disco duro. El sistema monta automáticamente los sistemas de ficheros del disco duro durante el arranque. El así llamado "sistema de ficheros raíz" es montado en el directorio /. Si se tiene un sistema de ficheros separado para /usr, por ejemplo, se monta en /usr. Si sólo se tiene un sistema de ficheros raíz, todos los ficheros (incluyendo los de /usr) existen en ese sistema de ficheros.
    A diferencia que en Windows (que únicamente dispone de los sistemas de ficheros FAT y NTFS), en Linux existen una infinidad de sistemas de ficheros con los que podemos formatear cualquier partición.

    Journaling; VFS


    Los sistemas de ficheros transaccionales (journaling) reducen el tiempo necesario para recuperar un sistema de ficheros que no fue desmontado correctamente. Esto puede ser muy importante para minimizar el tiempo de no disponibilidad de los servidores, pero también se ha popularizado en los sistemas de escritorio.

    Coloquialmente, los sistemas de ficheros transaccionales es como si fueran apuntando en un diario (journal) todas las operaciones que van realizando sobre el disco, de forma que si se produce un apagado inesperado del sistema puedan rehacer los cambios sin pérdida de información

    Actualmente, este tipo de sistemas de ficheros (ext3, xfs, reiserfs, etc) son altamente recomendados, en detrimento del clásico ext2. De todos los sistemas de ficheros con journaling, el más usado es sin duda ext3, en parte porque para transformar un sistema ext2 en ext3 sólo se requiere un comando y no es necesario reformatear.

    Cada sistema operativo soporta diferentes sistemas de ficheros. Para mantener la modularización del sistema operativo y proveer a las aplicaciones con una interfaz de programación (API) uniforme, los diferentes sistemas operativos implementan una capa superior de abstracción denominada Sistema de Ficheros Virtual (VFS: Virtual File System).

    Logs


    Los ficheros de log (bitácora) son ficheros que contienen mensajes sobre el sistema, incluyendo el núcleo, los servicios y las aplicaciones que se ejecutan en dicho sistema. Se forman añadiendo los mensajes al final, por lo que para consultar las incidencias más recientes es útil el comando tail. Existen diferentes tipos de logs dependiendo de la información. Por ejemplo, existe un fichero de log del sistema, un log para los mensajes de seguridad y un log para las tareas programadas con cron.

    Algunos ficheros de log están controlados por un demonio llamado syslogd. Encontrará una lista de mensajes de log mantenidos por syslogd en el fichero de configuración /etc/syslog.conf.

    La mayoría de ficheros de log están localizados en el directorio /var/log. Algunas aplicaciones como por ejemplo apache y samba poseen un directorio en /var/log para organizar sus logs.

    Observe que hay múltiples ficheros en el directorio de los ficheros de log seguidos de números. Estos se crean cuando los ficheros de log se rotan. Los ficheros de log rotan de manera que los tamaños de los ficheros no sean demasiado grandes. El paquete logrotate contiene una tarea programada de cron que hace rotar automáticamente los ficheros de log al fichero de configuración /etc/logrotate.conf y los ficheros de configuración en el directorio /etc/logrotate.d.

    La configuración por defecto consiste en rotar cada semana y mantener la validez de los ficheros previos de log durante cuatro semanas.

    Red Hat dispone de una herramienta llamada redhat-logviewer que permite visualizar de forma cómoda algunos logs importantes del sistema.

    Carga del sistema


    El comando ps ax muestra una lista de los procesos que se encuentran actualmente en el sistema, incluyendo los procesos que pertenecen a otros usuarios. Para mostrar el propietario de un proceso, utilice el comando ps aux. Esto es una lista estática de información, es decir, es una representación de los procesos que estaban en ejecución en el momento de invocar el comando. Para cuando la lista aparece en pantalla, eso ya es el pasado. Puede utilizar el comando ps en combinación con el comando grep para ver si un proceso en concreto está en ejecución. Por ejemplo, para ver si emacs sigue en ejecución, utilice el comando ps ax | grep emacs.

    El comando top muestra los procesos que se encuentran actualmente en ejecución así como información importante sobre los mismos, como la memoria que utilizan y el tiempo de CPU que consumen. El resultado se muestra en una lista en tiempo real e interactiva.

    El comando free muestra el total de la memoria física de nuestro sistema y de las particiones de memoria virtual así como las cantidades de memoria que estamos utilizando, que queda libre, que está siendo compartida en buffers del kernel y cacheada. El comando free -m muestra la misma información, pero en megabytes, lo cual es más fácil de leer.

    El comando df le informa sobre la ocupación de disco de las particiones del sistema. Por defecto, esta utilidad muestra el tamaño de las particiones en bloques de 1 kilobyte y el tamaño del espacio libre en kilobytes. Para ver esta información en megabytes y gigabytes, utilice el comando df -h. El argumento -h se utiliza para especificar un formato "legible" (human-readable format).

    El comando du muestra el espacio consumido por los ficheros de un directorio. Si teclea du en la línea de comandos, verá la ocupación de disco de cada uno de los subdirectorios. Se mostrará también el espacio total ocupado en el directorio actual y en los subdirectorios del mismo en la última línea de la lista. Si no quiere ver los subdirectorios, teclee du -hs y verá tan sólo el espacio total ocupado del subdirectorio.


    Contacto