Administración de usuarios

Indicadores de Logros

Lecturas: Administración de usuarios

El objetivo de los usuarios, grupos y permisos en Unix es brindar privacidad y organización permitiendo también compartir información cuando así se desea.

Con respecto a usuarios el administrador puede crear, eliminar o modificar información de cuentas y grupos. También puede configurar detalles de los programas que permiten iniciar sesiones (ver Lectura Configuración de una sesión) y prevenir fallas de seguridad. Si aún no lo ha hecho, antes de consultar esta sección recomendamos estudiar la visión que un usuario tiene del sistema de usuarios y grupos (ver Sistema de usuarios y manejo de clave).

En una red con NIS la información de cuentas y grupos está centralizada en el servidor. Desde este debe hacerse la administración con los programas y archivos presentados en esta sección y después de cada cambio debe reconfigurarse NIS como se explicará posteriormente (ver Servicio NIS).

Usuarios

Los siguientes programas permiten realizar operaciones relacionadas con usuarios:

Comando que permite entrar a una sesión como un usuario diferente.

Comando que permite cambiar la clave de un usuario.

Comando que cambia la información sobre el envejecimiento de la clave de un usuario.

Programa que permite agregar un usuario y es más flexible que useradd.

Comando que permite cambiar la información GECOS de un usuario.

Comando que permite cambiar el intérprete de comandos de un usuario.

Comando que permite eliminar una cuenta, es más flexble que userdel.

Grupo que tiene acceso a dispositivos de sonido.

Grupo que tiene acceso a dispositivos de impresión.

Grupo que tiene acceso a unidades de disquette.

Grupo que tiene acceso al CDROM.

Grupo que tiene acceso al modem.

Grupo que tiene acceso a discos de bajo nivel.

Grupo que tiene acceso privilegiado a la memoria.

Grupo que tiene acceso privilegiado a la consola.

Comando que permite ver los grupos a los que pertenece un usuario.

Comando que permite cambiarse a un grupo con clave.

Comando que permite crear un grupo teniendo en cuenta políticas de Debian.

Comando que permite eliminar un grupo.

Comando que permite modificar información de un grupo.

Comando que permite verificar información de los grupos.

su [usuario]

Permite entrar a una sesión como un usuario diferente, si no se especifica un usuario como primer parametro, su cambia al usuario root. Desde una cuenta de usuario pedirá la clave del nuevo usuario, e iniciará el intérprete de comandos que el usuario haya configurado. Si se emplea la opción -c comando el comando se ejecutará. Por defecto el ambiente y el directorio de trabajo serán heredados de la sesión inicial, pero si se desea iniciar con un ambiente y directorio como el que tendría el usuario después de hacer login (pero sin ejecutar archivos de inicialización del interprete de comandos), emplee la opción - [1]. Si desea ejecutar un intérprete de comandos diferente al configurado por el usuario emplee la opción -s intérprete, donde intérprete debe ser la ruta completa del intérprete de comandos que además debe estar listada en el archivo /etc/shells [2]. En Debian 2.2 su al igual que login emplea los servicios de la librería PAM (Pluggable authentication modules), así que puede configurar varios detalles relacionados con seguridad de su en el archivo /etc/pam.d/su ---por ejemplo para restringir el uso de este comando.

passwd [usuario]

Permite cambiar la clave del usuario especificado (sólo root puede especificar un usuario). Si no se especifia un usuario permite cambiar la clave de la cuenta desde la cual se ejecuta. Por defecto un usuario podrá cambiar su clave cuando él/ella lo desee, aunque puede implementarse una política de expiración de claves. La política de un usuario puede examinarse con la opción -S que presenta: estado de la cuenta (L bloqueada, NP sin clave, P con clave utilizable), fecha del último cambio de clave, tiempos mínimo y máximo para cambiar clave, tiempo de avisos y tiempo para desactivación. Puede fijarse la política con las siguentes opciones: -x días para especificar el máximo de días antes de que un usuario deba cambiar su clave [3]; -w días para indicar con cuantos días de anterioridad a la expiración de la clave el sistema debe empezar a enviar correos recordando el cambio; -i días índica el mínimo número de días que el usuario debe esperar para cambiar nuevamente su clave; -i días para deshabilitar una cuenta cuya clave no haya sido cambiado en los días especificados. Una cuenta puede bloquearse para impedir que pueda usarse con el programa login. Pueden bloquear y desbloquear cuentas con las opciones -u (de unlock) y -l respectivamente.

chage usuario

Cambia la información sobre el envejecimiento de la clave de un usuario, cuando se están usando claves shadow. Para cambiar el mínimo de días entre cambios se usa la opción -m días (0 índica que puede cambiarse siempre), -M días para indicar máximo de días antes de la expiración de la clave, -d días para establecer fecha del último cambio de clave (contada en días a partir de 1/Ene/1975), -E fecha fecha en la cual la cuenta expirar (puede especificarse como una fecha mm/dd/aaaa o contada en días a partir de 1/Ene/1975), -I días establece cantidad de días de inactividad antes de bloquear una cuenta después de la expiración de la clave, -W días cantidad de días de preaviso antes de la expriación de la clave.

adduser login

Permite agregar un usuario con el login dado [4], opcionalmente indicando el directorio de trabajo (opción ­­home) que de no existir será creado, un número que identificará al usuario de forma única (opción uid), el grupo principal al que pertenecerá (opción ­­ingroup grupo), el intérprete de comandos por defecto (opción ­­shell nombre) y otros datos del usuario con la opción ­­gecos "datos" (los datos se separan con comas y por defecto son: nombre, número de cuarto, teléfono del trabajo y teléfono de la casa). A menos que se especifique ­­disabled-login o ­­disabled-password pedirá clave inmediatamente después de crear la cuenta (­­disabled-login bloquea la cuenta hasta que se asigne una clave, ­­disabled-password no bloquea la cuenta pero asigna una clave no válida, el usuario podría entrar por ejemplo con RSA ssh).

Las operaciones que adduser realiza se configuran en el archivo /etc/adduser.conf. Por defecto creará cuentas de usuarios en el directorio /home y copiará en los nuevos directorios los archivos del directorio /etc/skel (e.g .bash_profile), pondrá como intérprete de comandos por defecto /usr/bin/bash y asignará un número de usuario [5] de acuerdo a la política de Debian y asignará un grupo nuevo a cada usuario. Normalmente después para agregar un usuario debe especificar la clave que tendrá, si prefiere crear una cuenta inicialmente sin clave emplee la opción ­­disabled-password (antes de poder emplear la cuenta debe establecer la clave con passwd).

chfn [login]

Para cambiar la información GECOS de un usuario (si no se especifica un login se cambiará la información del usuario que emplee el programa). Como opciones recibe -f nombre, -r cuarto, -w teléfono_trabajo, -h teléfono casa y -o otros_datos. Nuestra sugerencia es emplear en lugar de cuarto el grado y en lugar del teléfono del trabajo la dirección de la casa. Estos datos no deben contener los caracteres ',' ';' ni '='. Los datos que no se especifiquen en la línea de comandos serán solicitados interactivamente. chfn también será llamado por passwd si se emplea la opción -f.

chsh [login]

Para cambiar el intérprete de comandos de un usuario (si no se especifica un login se cambiará el intérprete del usuario que emplee el programa). Como opción recibe el nombre del intérprete, el cual debe estar listado en el archivo /etc/shells. Un usuario que emplee un intérprete de comandos restringido (/bin/rsh) no puede cambiar su shell. chsh también será llamado por passwd si se emplea la opción -s.

deluser login

Para eliminar una cuenta Por defecto no elimina el directorio personal ni la cola de correos, puede indicarse que se borren estos directorios con la opción ­­remove-home y puede indicarse que se busquen y eliminen todos los archivos del usuario (en los demás directorios) con la opción ­­remove-all-files. Con la opción ­­backup creará un archivo comprimido con los datos del usuario en el directorio de trabajo con nombre login.tar.gz. El comportamiento por defecto de este comando puede configurarse en el archivo /etc/deluser.conf.

La información sobre usuarios se mantiene en el archivo que todos los usuarios pueden leer: /etc/passwd. Cada línea de este archivo tiene información de un usuario separada con el caracter ':'. De cada usuario mantiene:

  • login

  • Clave o un caracter de control. En sistemas Unix las claves antes de ser almacenadas en este archivo (para su posterior comparación) son convertidas a una secuencia de letras y números con un algoritmo (bien DES o bien MD5 [6] ), cada vez que un usuario desea ingresar al sistema la clave que teclea se transforma con ese algoritmo y se compará con la almacenada para dar acceso sólo si son iguales. Por las características de DES y MD5 es muy dificil recuperar la clave original partiendo de la información almacenada en /etc/passwd así que una persona con acceso a este archivo no podrá conocer facilmente las claves de los usuarios. Sin embargo es mejor emplear el sistema de claves shadow, que mantiene las claves en un archivo aparte que sólo pueda ser leido por el administrador: /etc/shadow, las cuentas que empleen este mecanismo tendrán un caracter 'x' en lugar de clave. Tanto en /etc/passwd como en /etc/shadow en lugar de clave transformada puede aparecer el caracter '*' para indicar que la cuenta tiene clave deshabilitada (opción ­­disabled-password de adduser), el usuario podría ingresar con RSA ssh. En lugar de la clave también puede aparecer el caracter '!' para indicar que la cuenta está bloqueada (opción ­­disabled-login de adduser), en este caso el usuario no podrá entrar con login ni con gdm ni con RSA ssh, pero si con su y se ejecutarán procesos del usuarios iniciados por cron o at.

    está bloqueada (el usuario no podrá entrar con login o gdm pero si con rlogin o su y se ejecutarán procesos del usuarios iniciados por cron o at).

  • GID, es decir número que identifica al grupo principal del usuario.

  • información GECOS [7], los datos se separan entre si con comas.

  • directorio personal

  • intérprete de comandos

En el archivo /etc/shadow [8] hay una línea por cada usuario con los siguientes datos separados por ':':

  • Login

  • Clave transformada

  • Fecha del último cambio de la clave (contada en días a partir del Enero 1 de 1975).

  • Días por esperar antes de que la clave pueda ser cambiada.

  • Máximo de días antes de exigir un cambio de clave.

  • Cantidad de días de preaviso antes de expiración de clave.

  • Cantidad de días entre expiración de clave y bloqueo de cuenta.

  • Fecha desde la cual la cuenta está deshabilitada (contada en días desde Enero 1 de 1975).

  • Campo reservado.

Aunque puede editar manualmente /etc/passwd y /etc/shadow es recomendable que emplee los programas presentados en esta sección. Los GID y UID reservados en un sistema Debian están en los archivos /usr/share/base-passwd/group.master y /usr/share/base-passwd/passwd.master, si algún programa o adminsitrador erradamente asigna alguno de estos números puede emplear update-passwd para reasignar los originales.

Grupos

El objetivo de los grupos es dar o restringir permisos sobre algunos archivos a ciertos usuarios (ver Archivos y permisos). Por ejemplo un archivo reporte.txt que pertenezca al grupo profesores, que tenga permiso de lectura para el grupo y no para otros usuarios (si por ejemplo se estableció con chmod ug=rw reporte.txt), podrá ser leído únicamente por el dueño y por usuarios que pertenezcan al grupo profesores.

Cada usuario tiene un grupo principal (puede especificarse durante la creación con la opción ­­gid GID o ­­ingroup grupo de adduser), puede pertenecer a diversos grupos y si conoce la clave de algún grupo con clave puede volverse miembro durante una sesión. Los programas relacionados con grupos son:

adduser usuario grupo

Para agregar un usuario a un grupo. En Debian algunos dispositivos pertenecen a ciertos grupos, de forma que es indispensable agregarlos como grupos secundarios de los usuarios que los requieran:

audio

Permite acceder a dispositivos de sonido.

lp

Permite acceder a los puertos locales de impresión.

floppy

Para acceder a la(s) unidad(es) de disquette.

tape, cdrom

Ambos son requeridos para acceder al CDROM.

dialout

Para acceder a modems.

disk

Cuando se requiere acceder a discos a bajo nivel.

kmem

Para acceder de forma privilegiada la memoria.

tty

Para acceder de forma privilegiada a la consola.

groups

Un usuario puede ver los grupos a los que pertenece con este programa.

newgrp [grupo]

Para cambiarse a un grupo con clave. Si no se específica grupo alguno se cambiará al grupo principal del usuario. Con la opción - el ambiente será reinicializado como al inicio de la sesión [9].

passwd -g grupo

Para cambiar la clave de un grupo. Para quitar la clave de un grupo se emplea passwd -g -r grupo ---los programas newgrp y sg no permiten cambiarse a un grupo sin clave.

gpasswd grupo

Para administrar grupos con clave, puede ser usado por el administrador del sistema y por el administrador de un grupo con clave. Con la opción -A login el administrador del sistema puede agregar un administrador de grupo a un grupo, con la opción -M login puede retirarse la administración de un grupo a un usuario, con la opción -r puede quitarse la clave a un grupo con clave y con la opción -R puede inhibir el acceso con newgrp a un grupo con clave. Un administrador de grupo puede agregar y eliminar usuarios del grupo con las opciones -a login y -d login respectivamente.

addgroup nombre

Permite agregar un grupo con el nombre dado [10] Con la opción ­­gid ID puede especificarse el número que identificará al grupo, número acorde con el archivo /etc/adduser.conf y a las convenciones de Debian: 0-100 estáticos reservados para Debian, 100-999 localizados dinámicamente para grupos del sistema, 1000-29999 para grupos normales (ver descripción del comando adduser en la sección anterior).

groupdel group

Permite eliminar un grupo. Sólo pueden eliminarse grupos que no sean el grupo principal de algún usuario.

groupmod grupo

Permite modificar información de un grupo. Las opciones posible son: -g GID para cambiar el número que identifica al grupo (ver convenciones en descripción de addgroup) y -n nombre para cambiar el nombre del grupo. El número que identifica al grupo debe ser único, excepto si se emplea la opción -o (para crear grupos alias, aunque el sistema de archivos no necesariamente presentará el alias como grupo dueño).

grpck

Para verificar la información de grupos en /etc/group y /etc/gshadow. Con la opción -r abre estos archivos en modo de sólo lectura.

La información de grupos se consigna en /etc/groups, cada línea tiene los siguientes datos de un grupo separados uno de otro con el caracter ':'

  • Nombre del grupo

  • Clave del grupo transformada con DES o MD5. Si el grupo tiene clave shadow en este archivo aparecerá el caracter 'x' y la clave transformada estará en otro archivo (por defecto /etc/gshadow.

  • GID

  • Lista de usuarios del grupo separados con comas.

No es recomendable editar directamente estos archivos, sino más bien emplear los programas presentados en esta sección.

Inicio de sesiones en consolas virtuales

Una sesión iniciada desde una consola virtual o desde una conexión remota (via telnet, rsh o ssh) es atendida inicialmente por el programa getty (ver Lectura Configuración de una sesión. El mensaje que presenta getty se configura en el archivo /etc/issue y puede contener algunas secuencias especiales como: \d que corresponde a la fecha, \s al nombre del sistema operativo, \l al número de la consola virtual (línea tty), \m al tipo de procesador (e.g i486), \n al nombre de la máquina, \u cantidad de usuarios conectados. Por ejemplo, si el archivo /etc/issue es:


Debian \s 2.2 en un \m. \n \u \l
getty mostrará un mensaje como:

Debian Linux 2.2 en un i586. oxigeno 3 tty1

Cuando un usuario teclea su login, getty pasa el control al programa login. El programa login por intermedio de la librería PAM espera la clave del usuario y la válida, cuando el usuario da la clave correcta verifica que el acceso para ese usuario a la hora del ingreso sea posible [11] y entonces inicializa algunas variables de ambiente, muestra algunos mensajes (por defecto la fecha de la última conexión y el contendio del archivo /etc/motd [12] ) e inicia un intérprete de comandos (el que está configurado para el usuario en /etc/passwd). Las acciones que login realiza pueden configurarse en los archivos /etc/login.def y /etc/pam.d/login, las consolas desde las cuales puede ingresar el usuario root se configuran en /etc/securetty, otras restricciones de seguridad pueden configurarse en los archivos del directorio /etc/security [13].

Inicio de sesiones X-Window

Algunas generalidades sobre X-Window y la visión del usuario final se presentaron en el capítulo anterior (ver Lectura Configuración de una sesión), en esta sección presentamos como puede iniciarse un servidor X-Window y algunos aspectos de su configuración.

Servidor X

Un servidor X configurado maneja el modo gráfico de la tarjeta de video, teclado y un apuntador (ratón, tarjeta graficadora) para interactuar con el usuario y atender programas que lo emplean como clientes X-Window. Un cliente X-Window normalmente estará corriendo en la misma máquina donde está el servidor, aunque puede estar en otra máquina ver Servicios de la Intranet. Para iniciar un servidor X se emplea el programa X (cuya ruta completa normalmente es /usr/X11R6/bin/X y que es un enlace al ejecutable del servidor que haya configurado para su hardware). Cada servidor X tiene una identificación como natura.micolegio.edu.co:0.0 compuesta por el nombre de la máquina, un número de vista (una vista se refiere a una colección de monitores con un teclado y apuntador común) y un número de pantalla (en caso de que un computador tenga más de un monitor). En un mismo computador pueden iniciarse varios servidores X, cada uno con un númeo de vista diferente. Por ejemplo para iniciar como vista 0 un servidor X en la consola virtual 9 (pasa a ella con Ctrl-Alt-F9, ver Sistema de usuarios y manejo de clave):


/usr/X11R6/bin/X :0 vt9 

Simultáneamente podría iniciarse como vista 1 en la consola virtual 3 otro con:

Aplicación encargada de manejar el modo gráfico, teclado y apuntador.


/usr/X11R6/bin/X :1 vt3 
 

Por defecto si no se especifica una consola virtual por usar, X buscara y empleará la primera libre.

Administrador de vistas xdm

Se configura en /etc/X11/xdm/xdm-config y /etc/X11/xdm/xdm.options, este administrador de vistas puede administrar uno o más servidores en una o varias máquinas (configurados en /usr/lib/X11/xdm/XServer), y permite usar terminales X con el protocolo XDMCP.

Administrador de vistas de X-Window.

En cada servidor que maneja ejecuta el script /usr/lib/X11/xdm/XSetup y después permite el inicio de sesiones presentando el widget Xlogin que pide login y clave a cada usuario y que usa los los recursos de X-Window definidos en /usr/lib/X11/xdm/Xresources (en particular la imagen presentada).

Cuando un usuario se autentica se ejecutan los scripts: /usr/lib/X11/xdm/Xstartup como root (que por defecto sólo agrega la autenticación a la bitácora utmp), después /usr/lib/X11/xdm/Xsession como usuario. Este último ejecuta /etc/X11/Xsession el cual ejecuta todos los scripts del directorio /etc/X11/xsession.d que por defecto mezclan recursos de X-Window (tanto del sistema como de usuario) y ejecutan el script ~/.xsession el cual debe ser configurado por el usuario (ver Lectura Configuración de una sesión). Algunas variables que afectan la ejecución de los scripts de /etc/X11/Xsession.d se configuran en /etc/X11/Xsession.options, puede consultarse ayuda sobre estas variables con man Xsession.options.

Cuando la ejecución de ~/.xsession concluye, xdm cierra la sesión con el script /usg/lib/X11/xdm/Xreset.

xinit o startx

xinit es un programa para iniciar desde la línea de comandos una sesión de X-Window teniendo en cuenta la configuración del usuario. Para esto inicia el servidor X configurado en ~/.xserverrc o en /etc/X11/xinit/xserverrc (que normalmente es /usr/X11R6/bin/X) y después ejecuta el archivo de configuración ~/.xinitrc o en su defecto ~/.xsession o a falta de los anteriores /usr/lib/X11/xinit/xinitrc. La sintaxis de ~/.xinitrc es la misma de ~/.xsession ---sólo que el primero hereda las variables de ambiente del interprete de comandos (la sintaxis de ~/.xsession puede consultarse en ver Lectura Configuración de una sesión).

startx tiene exactamente el mismo propósito (de hecho ejecuta xinit).

Comando que permite iniciar una sesión de X-Window (no es xinit).

Comando que permite inicar una sesión de X-Window (no es startx).

Estos comandos son especialmente útiles durante la configuración de X-Window, bien cuando no se ha logrado configurar para los dispositivos de su computador (y en ese caso xdm no puede iniciar), o bien para probar cambios más rapidamente.

Eventualmente mientras xdm esté operando usted puede querer hacer cambios a la configuración de X-Window, termine en ese caso xdm (con /etc/init.d/xdm stop o buscando y matando el proceso de xdm), términe el servidor X que esté corriendo, haga los cambios necesarios y después ejecute startx.

Administrador de vistas gdm y Gnome

El administrador de vistas gdm es similar a xdm aunque ofrece mejoras en la presentación.

Administrador de vistas de Gnome.

Se configura en el archivo gdm.conf y en scripts cuyo nombre sea el número de vista (e.g. :0) o Default en los directorios:

/etc/gdm/Init

Cuando gdm inicia.

/ete/gdm/PreSession

Cada vez que un usuario abre una sesión.

/etc/gdm/PostSession

Cada vez que un usuario cierra una sesión.

En el directorio /etc/gdm/Sessions hay scripts que serán ejecutados de acuerdo a la sesión que el usuario en el menú tipo de sesión durante la autenticación.

El script que inicia la sesión Gnome, por defecto carga algunas variables de ambiente de /etc/login.defs, mezcla recursos del sistema /etc/X11/Xresources y del usuario (~/.Xresources, activa configuración de teclado especializada del sistema y del usuario (/etc/X11/Xmodmap y ~/.Xmodmap), ejecuta el archivo de configuración de Gnome del usuario ~/.gnomerc e inicia el administrador de sesiones GNOME: gnome-session.

Variables de ambiente en consolas virtuales y X-Window

La mayoría de intérpretes de comandos, incluyendo bash, leen información de configuración primero del archivo /etc/profile y después de archivos de configuración del usuario (ver Lectura Configuración de una sesión).

Sin embargo si emplea un administrador de vistas como xdm, gdm o kdm estos programas por defecto no leerán ese archivo, así que para establecer variables antes de que un administrador de escritorio o un manejador de ventanas inicie debe emplearse un archivo de configuración propio del administrador de vistas. En el caso de gdm el valor de la variable PATH puede establecerse en /etc/X11/gdm/gdm.conf (línea DefaultPath) y otras variables pueden establecerse en el archivo que controla el tipo de sesión (con gdm el usuario puede escoger el tipo de sesión al que desea entrar e.g Xsession, Debian, Gnome). Los archivos que controlan las sesiones son scripts localizados en el directorio /etc/X11/gdm/Sessions --son scripts normalmente cortos que puede revisar y editar para configurar el inicio de sesiones gráficas.

La solución más general y rápida para establecer variables de ambiente es configurarlas en el archivo /etc/security/pam_env.conf que es leido por PAM --que a su vez es usado tanto por login como por administradores de displays como xdm y gdm. Si desea configurar PATH tenga en cuenta modificar /etc/profile y el archivo de configuración de su administrador de displays para que no la sobreescriban.

Lectura recomendadas: Administración de usuarios

Ejercicios: Administración de usuarios

1. Los números UID y GID del usuario root son fijos, investigue en su sistema cuales son.
2. En el directorio tarea1 se quiere que todos los miembros del grupo estudiantes puedan escribir, pero que un miembro de ese grupo no pueda borrar o renombrar archivos de otros, ¿cómo puede lograrse? si además se quiere que no puedan ver o modificar el contenido de archivos de otros miembros del mismo grupo que se requiere?
3. Para transformar una clave con el algoritmo DES puede emplear el siguiente script escrito en lenguaje Perl:
4. Cree un usuario en el grupo users y agréguelo a grupos que le permitan acceder a la impresora local, a dispositivos de audio y a la unidad de disquette. Después pase a la cuenta del nuevo usuario y compruebe que pueda usar disquettes. Finalmente elimine el usuario creado.
5. Nuestra plataforma de referencia (ver Plataforma de referencia) sugiere 3 grupos básicos: profesores, estudiantes y administración. Considere ventajas y desventajas de esta política (o si lo prefiere de otra ideada por usted de acuerdo a la infomación que se maneja en la red). ¿Qué usuarios deberían tener más de un grupo? ¿qué grupos podrían tener clave, quienes administrarían tales grupos y quienes serían los usuarios?
6. Cree los grupos que decidió en el punto anterior y usuarios de prueba (de forma que al menos un usuario de prueba esté en dos grupos).
7. ¿Qué cambios puede realizar en /etc/adduser.conf para facilitar la implementación de la política descrita en los ejercicios anteriores?
8. Piense una máscara de permisos apropiada para todos los usuarios. Describa como la aplica empleando umask y los cambios que debe realizar para establecer tal mascara por defecto para todos los usuarios.
9. Haga los cambios apropiados en su sistema, para que todo directorio creado para nuevos usuarios tenga un archivo ayuda.txt donde los usuarios podrían escribir sus propias notas para emplear bien el sistema, y un mecanismo que le recuerde a los usuarios la existencia de tal archivo. Inicialmente ese archivo podía tener un mensaje de bienvenida y/o instrucciones para comenzar a usar bien el sistema.
10. Haga una lista de chequeo de detalles que deba tener en cuenta para prevenir que alguien entre a cuentas que no le pertenecen (especialmente como evitar que alguién pueda entrar a la cuenta root).
11. Opcional: Configure gdm para que en vez de presentar el logo típico presente el logo de su institución educativa.

1. Los números UID y GID del usuario root son fijos, investigue en su sistema cuales son.

UID=0 y GID=0. Son menores a 100 lo que indica que deben ser fijos en cualquier computador con Debian.

2. En el directorio tarea1 se quiere que todos los miembros del grupo estudiantes puedan escribir, pero que un miembro de ese grupo no pueda borrar o renombrar archivos de otros, ¿cómo puede lograrse? si además se quiere que no puedan ver o modificar el contenido de archivos de otros miembros del mismo grupo que se requiere?


chgrp estudiantes tarea1;
chmod o+t tarea1 
Para la segunda parte se requiere que cada archivo no conceda permiso de lectura ni escritura al grupo ni a otros.

3. Para transformar una clave con el algoritmo DES puede emplear el siguiente script escrito en lenguaje Perl:


#!/usr/bin/perl
$sal=join '', ('.', '/', 0..9, 'A'..'Z','a'..'z')[rand 64, rand 64];
print crypt($ARGV[0],$sal);
print "\n";

Si el nombre del script es enc.pl y le da permiso de ejecución, para transformar la clave "vida" bastaría ejecutar enc.pl vida.

Emplee este script para transformar una clave, después edite /etc/passwd o /etc/shadow agregue la nueva clave transformada a una cuenta de prueba y finalmente compruebe que la nueva clave funciona entrando a la cuenta de prueba. Nota: Si desea experimentar con MD5 en lugar de DES debe cambiar la "sal" [14], remplazando la línea con la función crypt por print crypt($ARGV[0],"\$1\$$sal");

"enc.pl vida" (con MD5) da por ejemplo "$1$wv$mOwf63L.QvbJ.f7U362Os1" que puede ponerse bien en el campo para la clave de /etc/passwd o bien si las claves shadow están activas, dejar 'x' en /etc/passwd y remplazar la clave en /etc/shadow.

4. Cree un usuario en el grupo users y agréguelo a grupos que le permitan acceder a la impresora local, a dispositivos de audio y a la unidad de disquette. Después pase a la cuenta del nuevo usuario y compruebe que pueda usar disquettes. Finalmente elimine el usuario creado.


adduser ­­ingroup users gloria 
adduser gloria lpr 
adduser gloria audio 
adduser gloria floppy
su - gloria
mdir
exit
deluser ­­remove-home gloria

5. Nuestra plataforma de referencia (ver Plataforma de referencia) sugiere 3 grupos básicos: profesores, estudiantes y administración. Considere ventajas y desventajas de esta política (o si lo prefiere de otra ideada por usted de acuerdo a la infomación que se maneja en la red). ¿Qué usuarios deberían tener más de un grupo? ¿qué grupos podrían tener clave, quienes administrarían tales grupos y quienes serían los usuarios?

Los grupos básicos no tendrian clave: profesores, estudiantes y administación (podrían crearse grupos para otros miembros de la comunidad como exalumnos o padres). Los estudiantes pueden estar sólo en el grupo de estudiantes, los profesores pueden tener como segundo grupo estudiantes, los usuarios de la parte administrativa podrían tener como grupo principal administracion y como grupos secundarios profesores y estudiantes. En principio la información que cree un usuario no debe ser visible a su grupo. Podrían haber grupos con clave para grupos lideradors por un profesor, administrador o estudiante que requieran manejar información separada (con un poco de instrucción los lideres podrían ser los administradores de grupo).

6. Cree los grupos que decidió en el punto anterior y usuarios de prueba (de forma que al menos un usuario de prueba esté en dos grupos).

 
addgroup ­­gid 1100 estudiantes; 
addgroup ­­gid 1101 profesores; 
addgroup ­­gid 1102 admin; 
adduser ­­ingroup estudiantes esperanza; 
adduser ­­ingroup profesores johannes; 
adduser ­­ingroup tomas; 
adduser estudiantes johanes; 
adduser estudiantes tomas; 
adduser profesores tomas

7. ¿Qué cambios puede realizar en /etc/adduser.conf para facilitar la implementación de la política descrita en los ejercicios anteriores?

Suponiendo que los grupos son estudiantes (GID=1100), profesores (GID=1101), cuerpo administrativo (GID=1102) adduser.conf puede ser como el que viene por defecto con los siguientes cambios:


USERGROUPS=no
USERS_GID=1100
       
Así por defecto todo usuario nuevo sería estudiante (para agregar profesores y administradores se usaría la opción ­­ingroup de adduser). Entre las opciones por defecto de ese archivo que puede ser mejor conservar están: bash como intérprete de comandos por defecto (que ha sido documentado en estas guías), como directorio para usuarios /home (que se ha supuesto en los primeros capítulos de estas guías), los números de usuarios que siguen las políticas de Debian.

8. Piense una máscara de permisos apropiada para todos los usuarios. Describa como la aplica empleando umask y los cambios que debe realizar para establecer tal mascara por defecto para todos los usuarios.

Como se desea que por defecto los usuarios de unos grupos no puedan ver información de usuarios del mismo grupo: umask u=rw,g=,o=. Debe agregarse tal orden en /etc/profile y en los archivos de sesiones de gdm en el directorio /etc/gdm/Session.

9. Haga los cambios apropiados en su sistema, para que todo directorio creado para nuevos usuarios tenga un archivo ayuda.txt donde los usuarios podrían escribir sus propias notas para emplear bien el sistema, y un mecanismo que le recuerde a los usuarios la existencia de tal archivo. Inicialmente ese archivo podía tener un mensaje de bienvenida y/o instrucciones para comenzar a usar bien el sistema.

Crear el archivo en etc/skel (como parte del contenido puede recordarse a los usuarios actualizar la información personal con chfn). En /etc/skel/.bashrc puede agregarse algo como:


echo "Hay ayuda que puede completar en el archivo ayuda.txt"
	 

10. Haga una lista de chequeo de detalles que deba tener en cuenta para prevenir que alguien entre a cuentas que no le pertenecen (especialmente como evitar que alguién pueda entrar a la cuenta root).

Evitar entrada a la cuenta root desde el prompt de arranque. Evitar en lo posible emplear los bits SUID y GUID con usuario o grupo root. Emplear claves shadow con MD5 (en Debian se usa por defecto PAM que es muy apropiado). Educar a los usuarios en este tema, buscando que eligan buenas claves y ayuden a cuidar y construir la red (emplear para la cuenta root una muy buena clave conocida sólo por el administrador). Emplear cracklib para evitar uso de claves simples.

11. Opcional: Configure gdm para que en vez de presentar el logo típico presente el logo de su institución educativa.

Editar en /etc/gdm/gdm.conf la línea:


logo=/usr/share/pixmaps/gnome-logo-large.png
    

Notas

[1]

Al emplear la opción - de su se inicializa el ambiente tal como el programa login lo haría, el valor de la variable PATH será tomado de /etc/login.defs, de ENV_PATH si se pasa a un usuario normal o de ENV_SUPATH si se trata del usuario root

[2]

En /etc/shells se listan los intérpretes de comandos disponibles. Algunos programas que opean en red sólo aceptan conexiones de usuarios cuyo intérprete de comandos esté listado en ese archivo.

[3]

Cuando un usuario no ha cambiado su clave dentro del máximo de días especificado, en la siguiente oportunidad que entre a una sesión el sistema solicitará una nueva clave --que debe ser diferente a la anterior.

[4]

Hay varios programas similares a adduser, addgroup, deluser y delgroup se trata de useradd, groupadd, userdel y groupdel. Recomendamos emplear los primeros porque son más flexibles (se configuran en los archivos /etc/adduser.conf y /etc/deluser.conf) y porque permiten seguir las políticas de numeración de grupos y usuarios de Debian

[5]

Si no se especifica un número de usuario o grupo a adduser o addgroup, estos asignarán uno disponible de acuerdo a la política de Debian: en el rango 1000 a 29999 si es un usuario normal o en el rango 100 a 999 si es una cuenta requerida por algún programa (que se indica con la opción ­­system, además al usar ­­system con adduser el intérprete de comandos será /bin/false). Las identificaciones entre 0 y 100 son comunes a cualquier sistema Debian y no deben modificarse.

[6]

Con DES el tamaño máximo de una clave es 8 caracteres, el algoritmo MD5 es más seguro y permite claves de mayor longitud.

[7]

De acuerdo a la página man de passwd, GECOS es sigla de General Electric Comprehensive Operating System.

[8]

Para convertir un archivo de claves shadow a passwd y viceversa se usan pwunconv y pwconv respectivamente. Puede desactivarse el uso de claves shadow con shadowconfig off y activarse con shadowconfig on

[9]

sg es un comando similar a newgrp que además permite especificar un comando por ejecutar con la opción -c comando

[10]

Un comando casi equivalente a addgroup es groupadd, sin embargo addgroup tiene en cuenta las políticas de Debian y la información de /etc/adduser.conf.

[11]

Por defecto todos los usuarios pueden entrar a cualquier hora, puede modificarse esto editando /etc/security/time.conf.

[12]

motd abrevia message of day (en español mensaje del día).

[13]

access.conf login access control table, group.conf para dar acceso a ciertos usuarios a ciertos grupos a los cuales no pertenece, limits.conf para establecer límites en el uso de algunos recursos del sistema (como procesos, memoria, archivos abiertos simultaneamente, tiempo de CPU, número de logins, prioridad de procesos), pam_env.conf donde pueden configurarse variables de ambiente, time.conf donde se configura horarios en el que ciertos usuarios pueden ingresar al sistema

[14]

Tanto MD5 como DES transforman una clave empleando un número, este número (llamado informalmente "sal") produce una transformación diferente y se adjunta al comienzo de la clave transformada. Es útil para hacer más dificil a un intruso descubrir claves (porque si intenta descubrir claves probando con algunas fijas, transformandolas y comparando con /etc/passwd debe usar cada una de las sales de cada usuario en sus intentos.