#
#
#
# Documentacion de alba
#
# Version: 1.2
#
#
# Fecha de revision: 02/05/2005
#
#
#
#
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 ...
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 ...
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 ...
En definitiva, simple y efectivo, ¿ no os parece ? ...
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:
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