Ir al principioc | Ir al final
Home

TIC
TIC.AdduserMultipledesdeFicheror1.7 - 24 Feb 2008 - 17:50 - JoseLuisPerezBarralesabajo

Start of topic | Skip to actions
#
#
#
# Documentacion de alba
#
# Version: 1.2 #
#
# Fecha de revision: 02/05/2005
#
#
#
#

AdduserMultipledesdeFichero

1 INTRODUCCION

alba es una utilidad de sistema desde la linea de comandos que permite dar de alta multiples usuarios a partir de un fichero de texto. En este sentido, permite crear cientos de usuarios en pocos minutos, e incluso los puede asignar a cualquier grupo definido en el fichero de texto

Es bien conocido que desde sus origenes, tanto UNIX como LINUX no disponen de utilidades amigables para gestionar usuarios. Actualmente existen herramientas que permiten automatizar el alta de multiples usuarios, como Perl o Webmin. Sin embargo, muchos administradores de sistema pueden sentirse asustados ante el hecho de aprender Perl o tener que aprender el uso de Webmin. Para ellos, alba puede ser una herramienta sencilla y comoda que solucione su problema

2 USO Y APLICACION DE alba

alba ha sido ideado y desarrollado para gestionar aulas de informatica en centros docentes. Es una utilidad de sistema destinada a administradores. Entre otros, hallaran alba interesante:

  • Responsables de aulas informaticas funcionando bajo Guadalinex-Edu
  • Administradores de sistemas UNIX en general

Para ver su utilidad, pensemos en un aula tipica funcionando bajo Guadalinex-Edu, con las siguientes caracteristicas:

  • Numero de ordenadores: 20
  • Alumnos del centro: 200
  • Cursos que la utilizan: 8 (dos primeros, dos segundos, dos terceros, dos cuartos)

La forma mas simple de utilizar el aula, es sencillamente, asignar los ordenadores a los alumnos para que lo utilicen sin nombre de usuario ni password, aunque en terminos de seguridad esta solucion es del todo inaceptable

Un modo sencillo de controlar el sistema es dar de alta en cada ordenador los siguientes usuarios:

usuario primeroa
usuario primerob
usuario segundoa

....

usuario cuartob

De este modo sencillo, cada curso accederia al sistema con el nombre de su grupo, evitando borrados accidentales de datos por parte de otros usuarios. El problema es que esta solucion obliga a dar de alta los usuarios en cada ordenador, lo que supone globalmente ejecutar adduser 8 * 20 = 160 veces. Por muy rapido que seamos (digamos, 1 minuto por adduser), realizar este trabajo nos supondra unas 3 horas de trabajo ... frown

Un problema tipico derivado de la configuracion anterior es el siguiente: supongamos que el ordenador numero 5 no arranca cuando entramos con el curso primero b. Si colocamos a los alumnos de dicho ordenador en el ordenador 14 y han cambiado la clave de primero b, ¿ como acceden dichos alumnos ?. Podriamos incluir en el sistema un usuario extra, con el nombre usuario, pero en terminos de seguridad esto no soluciona el problema

La solucion adecuada seria dar de alta TODOS LOS USUARIOS EN TODOS LOS ORDENADORES, mas ¿ quien da de alta 200 usuarios en 20 ordenadores ?. Podria hacerse en uno, y con una utilidad tipo Partimage o SystemImager copiar el sistema en los restantes, pero aun asi, hay que ejecutar 200 veces adduser, aprender Perl o emplear Webmin ... frown

Con todo esto en mente, basta decir que una orden como Alba en unos 7 minutos da de alta 200 usuarios con solo ejecutar en modo superusuario la orden

root@Guadalinex: alba -ng -fe=na.txt

Mas aun: podemos asignar todos los alumnos de primeroa al grupo primeroa, el cual se crea automaticamente, y asi sucesivamente

Todo esto lo realiza alba. Tan solo es necesario un fichero de texto con los nombres y apellidos de los alumnos, y el grupo al que pertenecen, el cual nos lo puede proporcionar el Secretario del centro ... smile

En definitiva, simple y efectivo, ¿ no os parece ? ... smile

3 CREACION DE ALBA

Si estas leyendo estas lineas, supongo que habras desempaquetado el fichero alba.tar. A partir de aqui ...

  • Crea un directorio (Por ejemplo mkdir /alba)
  • Copia los ficheros de alba a dicho directorio
  • Ejecuta el comando make

El paquete incluye tres ficheros de texto

ns.txt
na.txt
ng.txt

con ejemplos de ficheros de entrada de alba. Incluyen errores a proposito

4 SINTAXIS DE ALBA

El formato de alba es

Uso: alba [-ns | -na | -ng ] [-la | -le | -lt ] -c -p -i -fe=

El uso recomendado es el siguiente: primero se debe probar el fichero de entrada, para verificar el fichero de entrada y eliminar errores. Esto se hace con las opciones -p -i y opcionalmente con la opcion -la -le -lt. Una vez chequeado el fichero, se lanza el programa sin dichas opciones. La opcion -c es independiente de las anteriores.

Otro forma segura de ejecutar alba es lanzarlo desde un terminal sin ser superusuario. En este caso, al no tener privilegios, alba no creara los usuarios

Parametros obligatorios:

ns Crea usuarios a partir de un fichero formado por lineas que contienen solo un nombre

Cada linea debe tener el formato siguiente:

nombre

alba crea un usuario con username nombre. El password es igual al nombre

na Crea usuarios a partir de un fichero formado por lineas que contienen apellidos y nombre

Cada linea debe tener el formato siguiente:

apellido1 apellido2 nombre1 (nombre2 opcional)

como separadores de campos se admiten espacios o tabuladores

El fin de linea puede ser DOS o UNIX ( ver 5 FORMATOS DE FICHERO DE ENTRADA )

alba crea un usuario con username formado formado por las dos primeras letras del nombre,las dos primeras letras del apellido1, y las dos primeras letras del apellido2. El password es igual al username

ng Crea usuarios a partir de un fichero formado por lineas que contienen apellidos,nombre y grupo

Cada linea debe tener el formato siguiente:

apellido1 apellido2 nombre1 (nombre2 opcional) nombre_grupo

como separadores de campos se admiten espacios o tabuladores

El fin de linea puede ser DOS o UNIX ( ver 5 FORMATOS DE FICHERO DE ENTRADA )

alba crea un usuario con username formado formado por las dos primeras letras del nombre,las dos primeras letras del apellido1, y las dos primeras letras del apellido2. El password es igual al username. Adicionalmente, se crea el grupo nombre_grupo si no existe,y se añade el usuario a dicho grupo

fe= es el nombre del fichero de entrada

Opciones:

-i Modo interactivo. alba pide teclear tras procesar cada linea. Es util solo para verificar el fichero de entrada

-p Modo prueba. alba chequea la sintaxis de cada linea, pero no da de alta los usuarios. Su utilidad es similar a la de la opcion -i

-la Muestra por pantalla las lineas del fichero que suponen altas de usuarios

-le Muestra por pantalla las lineas del fichero que contiene errores de sintaxis

-lt Muestra por pantalla todas las lineas del fichero

Las opciones -la , -le , -lt son utiles para verificar el fichero de entrada, y deberian ser utilizadas junto a las opciones -p -i

-c Esta opcion esta pensada para evitar la duplicidad de claves, derivadas del uso incorecto de alba con las opciones -na o -ng. Esta opcion añade al nombre de usuario un numero de tres cifras, con los que los usuarios creados tendrán el siguiente formato

nombre001
nombre002

.....

Con esto, usuarios como

PEREZ BARRALES JOSE
PEREZ BARRALES JOSE RAMON

que generarian la misma clave, jopeba, pasaran a tener las claves

jopeba001
jopeba002

Con todo, la duplicidad de claves se puede evitar ejecutando previamente alba en modo prueba con la opcion -p, puesto que alba avisa de la posible duplicidad de claves, las cuales se incluyen en los ficheros de prueba na.txt y ng.txt

* Alba en estado puro:
Imagen037.jpg

5 FORMATOS DEL FICHERO DE ENTRADA

Como ya se debiera conocer, alba requiere un fichero de texto. Dicho fichero consta de una serie de lineas, cada una de ellas terminadas por un retorno de carro (). Es indiferente que el fichero de texto se realice con un procesador tipo Wordpad de Windows, o bien con gEdit de LINUX, aunque esto afecta al caracter fin de linea ( para los no iniciados, dicho caracter se almacena a nivel de fichero con un caracter -caracter 13 - o con dos -caracteres 13 y 10 - )

Los caracteres que alba reconoce son los alfanumericos ( a... z , A ... Z , 0 ... 9 , _ ) , aunque en todo caso LOS CARACTERES SE CONVIERTEN A MINUSCULAS. Caso de encontrar algun caracter diferente, alba genera un mensaje de error, indicando ademas el numero de linea del fichero en la que se encuentra el error. Un ejemplo de dicho mensaje se muestra a continuacion

Linea 192: Linea de fichero con caracter no valido

alba admite tres tipos diferentes de formato de fichero de entrada, segun se ejecute con la opcion -ns , -na o -ng. Los formatos se describen a continuacion:

- Alta de usuarios con nombre solamente (opcion -ns)

Este modo esta pensado para dar de alta pocos usuarios, como en los ordenadores de la sala de profesores, en un departamento, o en una clase con pocos usuarios. En este caso, el fichero debe estar formado por un conjunto de lineas, cada una con un nombre de usuario. Un ejemplo de esto seria

manolo_mat
pepe_fisica
primeroa
primerob
segundoa

En este caso la salida de alba seria la siguiente:

Linea 1: manolo_mat: Creado-> manolo_mat Clave: manolo_mat
Linea 2: pepe_fisica: Creado-> pepe_f Clave: pepe_fisica
Linea 3: primeroa: Creado-> primeroa Clave: primeroa
Linea 4: primerob: Creado-> primerob Clave: primerob
Linea 5: segundoa: Creado-> segundoa Clave: segundoa

La longitud de cada nombre debe ser al menos de seis caracteres. alba crea el usuario con los primeros doce caracteres de cada linea (seis como minimo), asignandole la misma password.

Es indiferente que el nombre tenga espacios o tabuladores al principio o final de cada linea. alba los elimina automaticamente. Basta que cada linea termine con un caracter

El fichero adjunto ns.txt, muestra algunos ejemplos

- Alta de usuarios con nombres y apellidos (opcion -na)

Este modo esta pensado para dar de alta usuarios que tendran un username en base a su nombre y apellidos. En este caso, el fichero debe estar formado por un conjunto de lineas, cada una con los siguientes campos:

apellido1 apellido2 nombre1 (nombre2 opcional)

Como ejemplo de lineas correctas tendriamos

PEREZ CORRALES ALBA
PEREZ BARRALES JOSE LUIS
corrales aguilera charo

En este caso la salida de alba seria la siguiente:

Linea 1: PEREZ CORRALES ALBA: Creado-> alpeco Clave: alpeco
Linea 2: PEREZ BARRALES JOSE LUIS: Creado -> jopeba Clave: jopeba
Linea 3: corrales aguilera charo: Creado-> chcoag Clave: chcoag

La longitud de cada campo debe ser al menos de dos caracteres. alba crea el usuario con los dos primeros caracteres del campo nombre1, los dos primeros caracteres de apellido1, y los dos primeros caracteres de apellido2. Notese que el campo nombre2 no se utiliza para crear el username. El password coincide con el username

Es indiferente que el nombre tenga espacios o tabuladores al principio o final de cada linea, o entre campos. alba los elimina automaticamente. Basta que cada linea termine con un caracter

El fichero adjunto na.txt, muestra algunos ejemplos

- Alta de usuarios con nombres, apellidos y grupo (opcion -ng)

Este modo esta pensado para dar de alta usuarios que tendran un username en base a su nombre y apellidos. Adicionalmente, incluye al usuario al grupo indicado en el ultimo campo de la linea del fichero de entrada. En este caso, el fichero debe estar formado por un conjunto de lineas, cada una con los siguientes campos:

apellido1 apellido2 nombre1 (nombre2 opcional) grupo

Como ejemplo de lineas correctas tendriamos

PEREZ CORRALES ALBA primeroa
PEREZ BARRALES JOSE LUIS primeroa
corrales aguilera charo cuartob

En este caso la salida de alba seria la siguiente:

Linea 1: PEREZ CORRALES ALBA: Creado-> alpeco Clave: alpeco Grupo: primeroa
Linea 2: PEREZ BARRALES JOSE LUIS: Creado -> jopeba Clave: jopeba Grupo: primeroa
Linea 3: corrales aguilera charo: Creado-> chcoag Clave: chcoag Grupo: cuartob

La longitud de cada campo debe ser al menos de dos caracteres. alba crea el usuario con los dos primeros caracteres del campo nombre1, los dos primeros caracteres de apellido1, y los dos primeros caracteres de apellido2. Notese que el campo nombre2 no se utiliza para crear el username. El password coincide con el username

El grupo al que se asigna el usuario es el ultimo campo de cada linea. El grupo se crea si no existe.

Es indiferente que el nombre tenga espacios o tabuladores al principio o final de cada linea, o entre campos. alba los elimina automaticamente. Basta que cada linea termine con un caracter

El fichero adjunto ng.txt, muestra algunos ejemplos

En todos los casos (-ns , -na , -ng), alba evita duplicados de clave, avisando con un mensaje que indica las lineas de duplicidad de claves.

6 NOTAS PARA PROGRAMADORES

alba esta realizado en C estandard. Tan solo se han incluido comentarios C++ (//) en vez de los tradicionales de C (/* y */).

El diseño del programa no ha sido optimizado. Se ha optado por diseñar funciones faciles de entender por cualquier programador de nivel medio-avanzado. Por otra parte, el sistema esta mas ocupado llamando a la funcion useradd y creando directorios que verificando la sintaxis de cada linea.

Actualmente el password asignado a cada usuario coincide con el username. Es facil crear otro tipo de password, por ejemplo de forma aleatoria. Esta mejora futura dependera del exito de la version inicial del programa. En todo caso, la funcion Crea_usuario() es la que crea el password del usuario.

El programa consta de tres módulos:

alba.c Contiene el programa principal
listas.c Contiene los módulos de busqueda e inserción en una lista simplemente enlazada

7 RECOMENDACIONES EN EL USO DE alba

Para un uso optimizado de alba se recomienda seguir los siguientes pasos:

-> Ejecutar alba sin ser superusuario. Con esto, aun ejecutando alba sin la opcion -p, no se crearan los usuarios, al no tener privilegios

-> Ejecutar alba con los modificadores -p -lt para verificar la sintaxis del fichero de entrada

-> Una vez la sintaxis este correcta y no aparezcan errores, se puede ejecutar alba -la -p redireccionado la salida a un fichero, para guardar las claves ( añadir tras -fe >salida.txt)

-> Entrar como superusuario con su

-> Ejecutar alba con los parametros definitvos [-ns -na -ng ] y -fe

-> Si queremos dar de alta un numero elevado de usuarios, hay que ser paciente. El sistema debe de crear los directorios indicados en /etc/skel. En Guadalinex-Edu son pocos, pero en Guadalinex 2004 existe un gran numero de directorios. En todo caso, alba no se cuelga.

Repasar la documentacion de useradd ( para ello, ejecutar man useradd )

8 CONDICIONES DE USO

alba es de dominio publico, lo cual autoriza a cualquier persona a copiarlo, usarlo, modificarlo, etc etc etc. Tan solo pido por favor que:

1 No le cambies el nombre
2 Recuerdes siempre el origen del mismo
3 IMPORTANTE. SI LO USAS, Y CREES QUE TE HA SERVIDO, HAZ UNA DONACION A ALGUN ORGANISMO BENEFICO ( CRUZ ROJA, UNICEF ... ), O BIEN APADRINA UN NIÑO/A. EN ESTE CASO, HAZMELO SABER A LAS DIRECCIONES yuyuplotter@onoQUITAESTO.com O BIEN jlpb@onoQUITAESTO.com ESTA SERA LA MEJOR RECOMPENSACION QUE PODRE RECIBIR POR EL ESFUERZO DEDICADO EN BENEFICIO DE LA COMUNIDAD

9 AGRADECIMIENTOS

Es obligado mencionar a las siguientes personas, sin las cuales alba no habria visto la luz:

Alba Perez Corrales -> Mi hija de dos años, nacida el 02/05/2003.
Charo Corrales Aguilera -> Mi mujer, que me aguanta todos los dias (uuuu..ffff, que paciencia)
Ricardo de los Santos -> Coordinador del CEP de Villamartin (CADIZ). Un gurú de la Informatica Sabe tela de LINUX
Luis Olmedo -> Profesor del CEP de Villamartin (CADIZ). Gran persona y gran conocedor de LINUX. Me enseñó a andar en Guadalinex
Juan Lopez -> Coordinador TIC del Colegio de Puerto Serrano. Como Luis Olmedo.

-- JoseLuisPerezBarrales - 01 Jun 2005

Acuario es aire
El pingüino ya no tiene frío


arriba


Estás aquí: TIC > AdduserMultipledesdeFichero

arriba

Copyright © 2004 por los autores que han contribuido al desarrollo de esta web. Todos los materiales son propiedad de sus respectivos autores.
Para cualquier consulta o sugerencia contactar con TWiki.WebMaster