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

Documentación elaborada por LinuxTotal de Sergio González Durán

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.

sudo (SUperuser DO) lo ejecuta un usuario normal, al que se supone tiene permisos para ejecutar cierto comando. Entonces, sudo requiere que los usuarios se autentifiquen a si mismos a través de su contraseña para permitirles la ejecución del comando. Veamos un ejemplo:

$ sudo /sbin/ifconfig
Password:
eth0      Link encap:Ethernet  HWaddr 4C:00:10:60:5F:21
          inet addr:200.13.110.62  Bcast:200.13.110.255  Mask:255.255.255.0
          inet6 addr: fe80::4e00:10ff:fe60:5f21/64 Scope:Link

Como se podrá observar se usa el comando sudo seguido del comando (con toda su ruta si es que este no esta en el PATH del usuario) al que se tiene permiso. sudo pregunta por la contraseña del usuario que ejecuta el comando y listo.

Por defecto, después de hacer lo anterior tendrás 5 minutos para volver a usar el mismo comando u otros a los que tuvieras derecho, sin necesidad de ingresar la contraseña de nuevo. Si se quiere extender el tiempo por otros 5 minutos usa la opción sudo -v (validate). Por el contario, si ya terminaste lo que tenías que hacer, puedes usar sudo -k (kill) para terminar con el tiempo de gracia de validación.

Ahora bien, ¿Qué comandos son los que puedo utilizar?, pues la opción -l es la indicada para eso:

$ sudo -l
User sergio may run the following commands on this host:
    (root) /sbin/ifconfig
    (root) /sbin/lspci

En el caso anterior se ejecutó un comando de root, pero no tiene que ser asi, también es posible ejecutar comandos de otros usuarios del sistema indicando la opción -u:

$ sudo -u ana /comando/de/ana

Una de las opciones más interesantes es la que permite editar archivos de texto de root (claro, con el permiso otorgado en 'sudoers' como se verá más adelante), y esto se logra con la opción -e, esta opción esta ligada a otro comando de sudo llamado sudoedit que invoca al editor por defecto del usuario, que generalmente es 'vi'.

$ sudo -e /etc/inittab

Cuando se configura sudo se tienen múltiples opciones que se pueden establecer, estás se consultan a través de la opción -L

$ sudo -L
Available options in a sudoers ``Defaults'' line:

syslog: Syslog facility if syslog is being used for logging
syslog_goodpri: Syslog priority to use when user authenticates successfully
syslog_badpri: Syslog priority to use when user authenticates unsuccessfully
long_otp_prompt: Put OTP prompt on its own line
ignore_dot: Ignore '.' in $PATH
mail_always: Always send mail when sudo is run
mail_badpass: Send mail if user authentication fails
mail_no_user: Send mail if the user is not in sudoers
mail_no_host: Send mail if the user is not in sudoers for this host
mail_no_perms: Send mail if the user is not allowed to run a command
tty_tickets: Use a separate timestamp for each user/tty combo
lecture: Lecture user the first time they run sudo
lecture_file: File containing the sudo lecture
authenticate: Require users to authenticate by default
root_sudo: Root may run sudo
...
varias opciones más

Bastante útil, ya que nos muestra las opciones y una pequeña descripción, estás opciones se establecen en el archivo de configuración 'sudoers'.

Una de las opciones más importantes de consulta es -V, que permite listar las opciones (defaults) establecidas por defecto para sudo todos los usuarios, comandos, equipos, etc. Más adelante en este tutorial, aprenderemos como establecer opciones específicas para ciertos usuarios, comandos o equipos. NOTA: tienes que ser 'root' para usar esta opción.

# sudo -V
Sudo version 1.6.9p5

Sudoers path: /etc/sudoers
Authentication methods: 'pam'
Syslog facility if syslog is being used for logging: local2
Syslog priority to use when user authenticates successfully: notice
Syslog priority to use when user authenticates unsuccessfully: alert
Send mail if the user is not in sudoers
Lecture user the first time they run sudo
Require users to authenticate by default
Root may run sudo
Log the hostname in the (non-syslog) log file
Allow some information gathering to give useful error messages
Visudo will honor the EDITOR environment variable
Set the LOGNAME and USER environment variables
Reset the environment to a default set of variables
Length at which to wrap log file lines (0 for no wrap): 80
Authentication timestamp timeout: 5 minutes
Password prompt timeout: 5 minutes
Number of tries to enter a password: 3
Umask to use or 0777 to use user's: 022
Path to log file: /var/log/sudo.log
...
varias opciones más listadas

Con intención, trunque el listado anterior en la línea "Path to log file: /var/log/sudo.log", donde se indica cual es el archivo 'log' o de bitacora por defecto de sudo, en este archivo se loguea absolutamente todo lo que se haga con sudo, que usuarios ejecutaron que, intentos de uso, etc.


[1]

Manejo de disco, particiones, sistemas de ficheros y ficheros

Manejo de procesos

El proceso de arranque

Herramientas personales