ant

GESTIÓN DE USUARIOS
4.4

sig

4.4 Gestión de Usuarios

Independientemente de que tenga muchos usuarios o no en su sistema, es importante comprender los aspectos de la gestión de usuarios bajo Linux. Incluso si se es el único usuario, se debe tener, presumiblemente, una cuenta distinta de root para hacer la mayor parte del trabajo.

Cada persona que utilice el sistema debe tener su propia cuenta. Raramente es una buena idea el que varias personas compartan la misma cuenta. No sólo es un problema de seguridad, sino que las cuentas se utilizan para identificar unívocamente a los usuarios al sistema. Se necesita ser capaz de saber quién está haciendo qué.

Añadir y borrar usuarios en un ssitema Unix suelen ser siempre unas tareas rutinarias. En la mayoría de las instalaciones los administradores crean sus propios scripts de alta y baja, delegando las tareas en los operadores

La gestión de usuarios se suele complicar a medida que el sistema tiene más aplicaciones instaladas, requiriendo éstas unos perfiles de usuario muy concretos que a veces chocan con otros usuarios o con la política de seguridad.

4.4.1 Conceptos de gestion de usuarios

En Unix para poder entrar en el sistema es necesario estar dado de alta previamente como usuario.
Cada usuario tiene asociado un perfil que le permitirá acceder a determinados programas y ficheros, un entorno de trabajo, un identificador único y una contraseña de acceso al sistema

Los usuarios en Uni se almacenan en el fichero /etc/passwd. En este fichero se guarda toda la información de carácter administrativo del usuario. En Unix también existe la posibilidad de crear grupos de usuarios con un perfil de trabajo igual. Para ello cada usuario del sistema pertenecerá a uno o más grupos, dependiendo si queremos que tenga varios perfiles diferentes. Un programador que trabaja en dos proyectos de desarrollo pertenecerá a dos grupos.

Los grupos están descritos en el fichero /etc/group. Un grupo también tiene un identificador único.

El sistema mantiene una cierta cantidad de información acerca de cada usuario. Dicha información se resume a continuación.

Ø nombre de usuario
El nombre de usuario es el identificador único dado a cada usuario del sistema. Ejemplos de nombres de usuario son Decker, Tyfany y Maria. Se pueden utilizar letras y dígitos junto a los caracteres "_" (subrayado) y "." (punto). Los nombres de usuario se limitan normalmente a 8 caracteres de longitud.

Ø clave
El sistema también almacena la clave encriptada del usuario. El comando passwd se utiliza para poner y cambiar las claves de los usuarios.

Ø user ID
El user ID, o UID, es un número único dado a cada usuario del sistema. El sistema normalmente mantiene la pista de la información por UID, no por nombre de usuario.

Ø group ID
El group ID, o GID, es la identificación del grupo del usuario por defecto. En la sección 3.9 discutimos los permisos de grupo; cada usuario pertenece a uno o mas grupos definidos por el administrador del sistema.
UID y GID son las siglas de User Identification y Group Indentification. Todos los usuarios en Unix disponen de un UID único, pudiendo ser el GID el mismo para varios usuarios. (grupos de usuarios).
Por convenio se establece que el superusuario (root) tenga asociados un UID 0 y un GID 0. UID y GID son siempre números enteros y su rango varía de 0 a 32767. Es aconsejable dividir este rango en intervalos de acuerdo a los tipos de usuario.
No conviene reutilizar estos números ya que puede ponerse en peligro la seguridad del sistema. Como el manejo de números puede ser engorroso para identificar usuarios y grupos, en Unix se utilizan nombres de usuarios y nombres de grupos, así por ejemplo, el superusuario UID=0 GID=0 corresponde con el usuario root y grupo root.
En estos dos números se basa toda la política de seguridad de Unix.

Ø Información Administrativa
El "nombre real" o "nombre completo" del usuario se almacena junto con el nombre de usuario, números de teléfono, dirección, etc. Cada una de estas informaciones estará separada por comas. Por ejemplo, el usuario CrispisXX21 puede tener el nombre "Cristina Martinez" en la vida real.

Ø directorio inicial o HOME
El directorio inicial es el directorio en el que se coloca inicialmente al usuario en tiempo de conexión. Cada usuario debe tener su propio directorio inicial, normalmente situado bajo /home.

Ø interprete de inicio
El interprete de inicio del usuario es el interprete de comandos que es arrancado para el usuario en tiempo de conexion. Ejemplos pueden ser /bin/bash o /bin/tcsh.

El fichero /etc/passwd contiene la información anterior acerca de los usuarios. Cada línea del fichero contiene información acerca de un único usuario; el formato de cada linea es
nombre:clave encriptada:UID:GID:Información Administrativa:HOME:interprete
Un ejemplo puede ser:
laurichys:Xv8Q981g71oKK:102:100:Laura Menganita:/home/laurichys:/bin/bash
Como puede verse, el primer campo , "laurichys", es el nombre de usuario. El siguiente campo, "Xv8Q981g71oKK", es la clave encriptada. Las claves no se almacenan en el sistema en ningún formato legible por el hombre. Las claves se encriptan utilizándose a si mismas como clave secreta. En otras palabras, sólo si se conoce la clave, ésta puede ser desencriptada. Esta forma de encriptacion es bastante segura.

Algunos sistemas utilizan "claves en sombra" en la que la información de las claves se relega al fichero /etc/shadow. Puesto que /etc/passwd es legible por todo el mundo (es utilizado por comandos tales como ls, el cual puede usar cualquier usuario...), /etc/shadow suministra un grado extra de seguridad, puesto que este no lo es. Las claves en sombra suministran algunas otras funciones como puede ser la expiración de claves. En caso de usar las claves en sombra, el campo clave en /etc/passwd pasaría a tener una X.

El tercer campo "102", es el UID. Este debe ser único para cada usuario. El cuarto campo, "100", es el GID. Este usuario pertenece al grupo numerado 100. La información de grupos, como la información de usuarios, se almacena en el fichero /etc/group. El quinto campo es el nombre completo del usuario, "Laura Menganita". Los dos últimos campos son el directorio inicial del usuario (/home/laurichys) y el interprete de conexion (/bin/bash), respectivamente. No es necesario que el directorio inicial de un usuario tenga el mismo nombre que el del nombre de usuario. Sin embargo, ayuda a identificar el directorio.

4.4.2 Añadiendo usuarios

Cuando se añade un usuario hay varios pasos a seguir. Primero, se le debe crear una entrada en /etc/passwd, con un nombre de usuario y UID únicos. Se debe especificar el GID, nombre completo y resto de información. Se debe crear el directorio inicial, y poner los permisos en el directorio para que el usuario sea el dueño. Se deben suministrar ficheros de comandos de inicialización en el nuevo directorio y se debe hacer alguna otra configuración del sistema (por ejemplo, preparar un buzón para el correo electrónico entrante para el nuevo usuario).

Todas estas tareas las podría realizar el administrador utilizando un editor y los comandos mkdir, chown, chgrp, cp y passwd. Pero parece un problema cuando se está editando un fichero como /etc/passwd por varias personas (administradores) lo que podría provocar que su contenido quedara paracialmente actualizado por una condición de carrera.(El comando vipw no permite la condición de carrera al tratar con el fichero /etc/passwd). La manera más simple de añadir usuarios es utilizar un programa interactivo que vaya preguntando por la información necesaria y actualice todos los ficheros del sistema automáticamente. El nombre de este programa es useradd o adduser dependiendo del software que este instalado.

4.4.3 Palabras Claves

Las palabras claves se guardan en /etc/passwd de forma cifrada, generalmente con un algoritmo de una sola dirección, es decir, la función de cifrado es capaz de cifrar la palabra clave, pero no es capaz de descifrar la palabra ya cifrada.

Cuando un usuario olvida su clave, nadie puede obtenerla a partir de la cifrada por lo que el administrador le tiene que asignar una nueva.

El programa que permite actualizar/cambiar una palabra clave es: passwd. Un usuario normal sólo puede cambiar su palabra clave y el administrador puede cambiar cualquiera. (ejemplo passwd alumno672 cambiaría la palabra clave del usuario alumno672).

En todas las versiones de Unix el fichero /etc/passwd tiene que permitir lectura para cualquier usuario, ya que muchos comandos acceden al mismo para recuperar información, como por ejemplo ls -l (recupera el login del usuario). Esta característica de funcionamiento plantea un problema, ya que el fichero /etc/passwd puede ser sometido a un programa de detección de palabras claves. Para evitar esto en la versión System VR4 de Unix apareció un nuevo fichero /etc/shadow con sólo permiso de lectura para root y en el que se almacenaban las palabras claves, además de información sobre caducidad de las mismas. El fichero /etc/passwd pasó a tener en su campo de palabra clave un caráceter 'x'.

Sobre las palabras claves, éstas deberían evitar ser palabras que apareciesen en diccionarios, evitar ser nombres o fechas significativas del usuario, deberían ser de la mayor longitud posible y contener caracteres especiales, como por ejemplo # % & / !

****Cuando utilizamos una palabra de paso a través de una conexión de red, como por ejemplo, una sesión telnet, estamos expuestos a que alguien que esté escuchando por la red vea nuestra palabra clave. No conviene utilizar la palabra clave en conexiones inseguras, es decir, donde la información viaja sin cifrar. Hay que tener en cuenta que el cifrado de la palabra clave de acceso se realiza cuando llega al sistema Unix y no antes de viajar por la conexión.

****La palabra clave del administrador (root) no debería utilizarse nunca desde otro lugar que no fuera la consola del sistema.

4.4.4 Fichero /etc/shadow

También es un fichero ASCII, donde cada línea es un registro con 8 campos separados por el carácter ":".

Este fichero tiene el login del usuario, su palabra clave cifrada y una serie de fechas (medidas en días desde el 1 de Enero de 1970) que permiten configurar la validez de una palabra clave.

-login
-Palabra Clave cifrada
-Periodo en el que no puede cambiarse
-Fecha a partir de la cual debe cambiarse
-Fecha de aviso de caducidad
-Periodo de gracia después de cadudar
-Fecha de baja
-Campo reservado

4.4.5 Borrando usuarios

Cuando un usuario no va a utilizar nunca más el sistema se deberá eliminar toda referencia que de él exista. Antes de proceder al borrado es recomendable asegurarse que su directorio principal y todos los subdirectorios están guardados en algún respaldo.

Dar de baja consiste en eliminardel fichero /etc/passwd (y de /etc/shadow cuando se disponga de este fichero en el sistema) el registro correspondiente al usuario que causa baja. Si fuera el último usuario de un grupo también se procedería a dar de baja el grupo del fichero /etc/gropu. Posteriormente se borrará el directorio principal y todos sus subdirectorios. En algunas ocasiones hay que quitar al usuario de ciertos ficheros del sistema que le otorgaban acceso a los sistemas de correo, impresioón, noticias, web, ejecución automática de tareas (cron).

Al igual que con el alta de usuarios, pueden aparecer condiciones de carrera en la edición de los ficheros de usuarios. De forma parecida, borrar usuarios puede hacerse con los comandos userdel o deluser dependiendo de que software fuera instalado en el sistema.

Si se desea "deshabitar" temporalmente un usuario para que no se conecte al sistema (sin borrar la cuenta del usuario), se puede prefijar con un asterisco ("*") el campo de la clave en /etc/passwd. Por ejemplo, cambiando la linea de /etc/passwd correspondiente a laurichys a
laurichys:*Xv8Q981g71oKK:102:100:Laura Menganita:/home/laurichys:/bin/bash
evitará que laurichys se conecte. Pero con la aparición de los servicios de red (rlogin, rsh, etc.) esta medida no es suficiente y lo que se suele hacer es colocar como intérprete de comandos un programa que escriba un mensaje informando que la cuenta está temporalmente inhibida.( un programa tipo /bin/false)

El comando /usr/bin/passwd -l "login" bloquea al usuario "login". Para desbloquearlo puede usar el comando /usr/bin/passwd -u "login" (lock, unlock).

4.4.6 Cambiando atributos de usuario

Después de que haya creado un usuario, puede necesitar cambiar algún atributo de dicho usuario, como puede ser el directorio HOME o la clave. La forma más simple de hacer esto es cambiar los valores directamente en /etc/passwd. Para poner clave a un usuario, utilice el comando passwd.

Por ejemplo,
# passwd Decker
cambiará la clave de Decker. Sólo root puede cambiar la clave de otro usuario de esta forma. Los usuarios pueden cambiar su propia clave con passwd también. En algunos sistemas, los comandos chfn y chsh están disponibles, permitiendo a los usuarios el cambiar sus atributos de nombre completo e interprete de conexión. Si no, deben pedir al administrador de sistemas que los cambie por ellos.

4.4.7 Grupos

Como hemos citado anteriormente, cada usuario pertenece a uno o mas grupos. La única importancia real de las relaciones de grupo es la perteneciente a los permisos de ficheros, como dijimos en la sección 3.9, cada fichero tiene un "grupo propietario" y un conjunto de permisos de grupo que define de que forma pueden acceder al fichero los usuarios del grupo.

Hay varios grupos definidos en el sistema, como pueden ser bin, Mail, y sys. Los usuarios no deben pertenecer a ninguno de estos grupos; se utilizan para permisos de ficheros del sistema. En su lugar, los usuarios deben pertenecer a un grupo individual, como users. Si se quiere ser detallista, se pueden mantener varios grupos de usuarios como por ejemplo estudiantes, soporte y facultad.

El fichero /etc/group contiene información acerca de los grupos. El formato de cada línea es
nombre de grupo:clave:GID:otros miembros
Algunos ejemplos de grupos pueden ser:
root:*:0:
usuarios:*:100:emm,Decker
invitados:*:200:
otros:*:250:laurichys
El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root. El siguiente grupo, users, es para usuarios normales. Tiene un GID de 100. Los usuarios emm y Decker tienen acceso a este grupo. Recuérdese que en /etc/passwd cada usuario tiene un GID por defecto. Sin embargo, los usuarios pueden pertenecer a más de un grupo, añadiendo sus nombres de usuario a otras líneas de grupo en /etc/group. El comando groups lista a que grupos se tiene acceso.

El tercer grupo, invitados, es para usuarios invitados, y otros es para "otros" usuarios. Elusuario laurichys tiene acceso a este grupo. Como se puede ver, el campo "clave" de /etc/group raramente se utiliza. A veces se utiliza para dar una clave para acceder a un grupo. Esto es raras veces necesario. Para evitar el que los usuarios cambien a grupos privilegiados (con el comando newgroup), se pone el campo de la clave a "*".

Se pueden usar los comandos addgroup o groupadd para añadir grupos a su sistema. Normalmente es mas sencillo añadir líneas a /etc/group uno mismo, puesto que no se necesitan más configuraciones para añadir un grupo. Para borrar un grupo, solo hay que borrar su entrada de /etc/group.

4.4.8 Ficheros de personalización

La mayoría de los comandos y utilidades que están disponibles en Unix pueden personalizarse mediante ficheros de configuración que suelen residir en el directorio principal (HOME). Generalmente el nombre de este tipo de ficheros comienza por el carácter "."

Todos los intérpretes de comandos siponibles en Unix tienen uno o más ficheros de personalización del comportamiento del mismo.

Los ficheros de personalización de los intérpretes de comandos suelen leerse en tres momentos de una sesión que son:

-ACCESO AL SISTEMA (proceso de login)
-ARRANQUE DE UN NUEVO INTÉRPRETE (ejecución de un script)
-SALIDA DEL SISTEMA (proceso de logout)

Cada usuario podrá personalizar el comportamiento del intérprete en estos momentos mediante una serie de ficheros. También existen unos ficheros de personalización que son comunes a todos los usuarios del sistema.

Algunos nombres de ficheros de BASH

º Sistema /etc/profile
º Entrada .bash_profile, .bash_login, .profile (en este orden cuando alguno no existe)
º Salida .bash_logout
º Arranque .bashrc

****Para que tengan efecto los cambios source fichero

Un ejemplo (.profile):
umask 022
PATH=/usr/ucb:/bin:/usr/bin; export PATH
TERM=vt100; export TERM
Los ficheros de personalización de los intérpretes de comandos se escriben en el propio lenguaje de programación del intérprete

Al igual que para los intérpretes, existen ficheros de personalización para los editores vi y emacs, para el programa de lectura de correo mail, para la inicialización de una sesión X window , etc.

La inclusión de estos ficheros no es estrictamente necesaria en la operación de alta de un nuevo usuario, pero el nuevo usaurio agradecerá disponer de una personalización mínima cuando acceda al sistema por primera vez.

Otros usos de los ficheros de personalización

-- ALIAS DE COMANDOS
alias nombre=comando
alias ll='ls -al'
alias cd='echo $PWD;cd'

-- OPCIONES DE LA SHELL

. ignoreeof : No permite la salida del sistema con CTRL-D
. noclobber : No permite la rediercción (>) sibre ficheros ya existentes
. noglob     : No expande los metacaracteres (* y ? )
. nounset   : Aparece un error al intentar usar una variable indefinida

Para establecer una opción y para quitar una opción:
set -o opcion #poner
set +o opcion #quitar

-- PROMPT DEL SISTEMA

  PS1='\u-->'

  \u login
  \h nombre del ordenador (host)
  \n CR y LF
  \W Directorio Actual
  ect.