Introducción a la administración y configuración de sistemas

De Sistemas Operativos II

Contenido

Introducción a la administración y configuración de sistemas

En este tema se repasarán los conceptos fundamentales del uso de sistemas operativos basados en Unix y su aplicación práctica sobre sistemas operativos conocidos como GNU/Linux, OpenSolarix o FreeBSD.

Instalación de GNU/Linux

El proceso de instalación de GNU/Linux es muy sencillo. En el caso de distribuciones como Ubuntu se distribuye un instalador gráfico que permite seleccionar todas las opciones de instalación con una interfaz muy sencilla

Bash

Control de tareas

En Bash se puede hacer uso de la multitarea incorporada por los sistemas operativos. En este sentido es posible emplear varias aplicaciones y cambiar entre ellas usando sencillos comandos y/o combinaciones de teclas. Una tarea en bash corresponde con una línea de comando que se incorpora en el shell (por ejemplo: ps aux | sed 1,2d | less ). Las tareas pueden necesitar la ejecución de varios procesos o de uno sólo (la tarea vi /etc/passwd implica la ejecución de un sólo proceso mientras que ps aux | sed 1,2d | less implica la creación de 3 procesos.

Las tareas pueden estar en 3 estados: en primer plano (fg), en segundo plano (bg) y dormidas (stopped). Las tareas en primer plano son las que tienen interacción con el usuario y sólo puede haber una en cada momento por cada shell abierto. Las tareas en segundo plano son tareas que no tienen interacción directa con el usuario pero se están ejecutando (se les asigna CPU). Por último las tareas stopped son tareas que no tienen interacción con el usuario y a las que no se le asigna CPU.

En bash se pueden lanzar tareas en segundo plano colocando el caracter & al final de la línea de la tarea (ejemplo ps aux | sed 1,2d | less &) y/o trasladar tareas entre distintos estados. El comando interno jobs permite hacer un listado de las tareas que existen en cada momento.

Para trasladar tareas entre los distintos estados se emplean los comandos internos fg, bg y la combinación de teclas Ctrl+Z. Ctrl + Z permite pasar una tarea en primer plano a estado dormida. Una vez que la tarea está dormida el shell (bash) toma el control del equipo permitiendo lanzar nuevas tareas o cambiar de estado las existentes.

Los comandos fg y bg permiten cambiar una tarea determinada a primer plano y a segundo plano (fg a primer plano y bg a segundo plano). Ambos comandos irán acompañados de un número de tarea que se puede obtener ejecutando el comando jobs.

Prevenir NOHUP

Cuando un usuario sale del bash mediante la instrucción exit o logout la instancia de bash lanza una señal HUP a todos los procesos asociados a las tareas que se están ejecutando por parte del usuario en dicho shell. Todos estos procesos (salvo programas que hayan implementado un manejador específico para la señal HUP) dejan de ejecutarse ya que el manejador por defecto de la señal HUP implica la salida del programa. Esto implicaría que el usuario no puede dejar procesos ejecutando en un equipo UNIX cuando cierra su sesión en el sistema.

Todos los sistemas UNIX implementan el comando nohup (es estándar POSIX) por el cual los procesos asociados a una tarea ignorarán la señal HUP. Así el proceso lanzado derivado de la tarea nohup wget http://xx.xx.com/largefile.iso no se detendrá incluso aunque el usuario abandone la sesión y sólo saldrá cuando el proceso concluya su ejecución o se le envíe al proceso otro tipo de señal (TERM, KILL, etc). Si la tarea implicara la ejecución de varios procesos, todos ignorarían la señal HUP.

Si una tarea se ha ejecutado sin haber usado nohup se podría evitar su terminación al salir de la sesión usando el comando interno de Bash disown. Antes de ejecutar disown hay que tener en cuenta que la tarea debería estar ejecutándose como tarea de fondo (bg). disown se usa normalmente con un argumento que es el código de tarea (ver comando jobs) que se quiere evitar que termine. El funcionamiento de disown no es exactamente el mismo que el de nohup.

Manejo de usuarios

sudo

En ambientes donde varios usuarios usan uno o más sistemas GNU/Linux, es necesario otorgar distintos permisos o privilegios para que estos puedan hacer uso de comandos propios del usuario administrador root. Totalmente fuera de lugar e impensable es 'entregar' la contraseña de root para que los usuarios puedan hacer uso de los programas propios de sus funciones pero que son propiedad de 'root'. Por otro lado, hacer uso del comando su tampoco es práctico porque es lo mismo, necesitan la contraseña de root, asi que la mejor alternativa es hacer uso de sudo.

¿Exáctamente que es y que hace sudo?. sudo permite implementar un control de acceso altamente granulado de que usuarios ejecutan que comandos. Si un usuario normal desea ejecutar un comando de root (o de cualquier otro usuario), sudo verifica en su lista de permisos y si está permitido la ejecución de ese comando para ese usuario, entonces sudo se encarga de ejecutarlo. Es decir, sudo es un programa que basado en una lista de control (/etc/sudoers) permite (o no) la ejecución al usuario que lo invocó sobre un determinado programa propiedad de otro usuario, generalmente del administrador del sistema root.

sudo, para fines prácticos se puede dividir en tres partes:

  1. sudo, el comando con permisos de SUID, que los usuarios usan para ejecutar otros comandos a los que se les permite usar.
  2. visudo, el comando que permite al administrador modificar /etc/sudoers.
  3. /etc/sudoers, el archivo de permisos que le indica a sudo que usuarios ejecutan cuáles comandos.

Se puede consultar más información sobre sudo en este tutorial

Manejo de disco, particiones, sistemas de ficheros y ficheros

Manejo de procesos

El proceso de arranque

Herramientas personales