educatica!

educación, informática y demás

Ejercicios 09 – Shell scripts

Realiza los siguientes shell scripts de bash cumpliendo los requisitos que se solicitan en cada caso.

Shell script – addUsers.sh

Crea un script que se encargue de crear una serie de cuentas de usuario en un sistema. El script se deberá ejecutar como usuario root, puesto que se van a ejecutar una serie de comandos de administración dentro del propio script. Si no se ejecuta como root no se debería tratar de realizar ninguna acción, avisando al usuario de la necesidad de ejecutarlo como root y saliendo con un código de retorno de error. Utiliza una función llamada error que gestione los mensajes de error y la salida del script con un código de error distinto de 0, por ejemplo el 1.

Este script deberá crear una serie de cuentas de usuario y grupos en el sistema. También se encargará de añadir usuarios a grupos dada una información previa

Creando cuentas de usuario.

Se almacenará en una variable llamada userList una lista con las cuentas de usuario que se deberán crear en el sistema. El valor de dicha variable será:

userList = alfredoff marinapg ramonam jesusrp rosarp evaha miguelmp

Para cada usuario de la lista, deberás comprobar si ya existe dicha cuenta en el sistema. Si no existe, entonces la creamos pero para evitar que nos solicite información durante el proceso de creación utilizaremos el comando adduser con dos opciones concretas:

  • Opción que deshabilite el login del usuario hasta que se le establezca una contraseña.
  • Opción que utilice valores gecos que se pasan por parámetros entre comillas.

Deberás consultar la página de manual del comando adduser.

Creando cuentas de grupo

Una vez creadas las cuentas de usuario, debemos crear las cuentas de grupos.

La lista de grupos estará en almacenada en una variable llamada groupList y estará compuesta por una lista de nombres de grupo separados por espacios. El script deberá recorrer cada grupo de la lista y crearlo en el sistema.

Los grupos de groupList serán: empresa, empleados, directivos, redactores, editores, clientes y bloqueados.

El script también deberá contar con una variable para cada grupo que contendrá los miembros de cada uno de los grupos. El nombre de la variable coincidirá con el grupo al que representa. Los miembros del grupo estarán separados por un espacio.

  • empresa = alfredoff marinapg ramonam jesusrp rosarp evaha miguelmp
  • empleados = alfredoff marinapg ramonam jesusrp
  • directivos = evaha miguelmp
  • redactores = alfredoff, jesusrp, evaha
  • editores = marinapg ramonam rosarp miguelmp
  • clientes = miguelmp
  • bloqueados = <vacío>

Para cada uno de las variables anteriores, debemos recorrerlas y añadir cada usuario en la variable al grupo correspondiente. Para ello utilizaremos el comando que permite añadir un usuario a un grupo.

Solución

La solución propuesta es la siguiente

Shell script – addWebSite.sh

El siguiente script se encargará de crear un directorio llamado webSite dentro del directorio personal del usuario que se pase por parámetro.

Comprobaciones

Para ello, el script se deberá ejecutar como root. Si no se ejecuta como root, se mostrará un mensaje de advertencia y se saldrá con un valor de retorno. Utiliza una función llamada error que gestione los mensajes de error y la salida del script con un código de error distinto de 0, por ejemplo el 1. El mensaje de error lo recibirá como primer parámetro.

También debemos comprobar que se ha pasado un valor en el primer parámetro y que ese valor se corresponde con el nombre de una cuenta de usuario en el sistema. Si no se cumple alguno de estos requisitos, se deberá mostrar un mensaje de error adecuado y terminar la ejecución del script con un código de error (usa la función error)).

Información del usuario: ruta del directorio personal y grupo principal

Una vez realizadas las comprobaciones, necesitamos conocer la ruta del directorio personal del usuario seleccionado. Para ello, podemos consultar el fichero de cuentas de usuario, buscando la información del usuario concreto y seleccionando de toda la información solo el campo donde se almacena la ruta de su directorio personal. Esta información la deberíamos guardar en una variable (igual que el nombre del usuario).

También debemos obtener el nombre del grupo principal al que pertenece el usuario. Para ello, primero debemos almacenar el gid del grupo principal al que pertenece que está en el fichero de cuentas de usuario, de forma similar a como hemos obtenido la ruta del directorio personal.

Con el gid del usuario, podemos obtener el nombre del grupo que tiene asignado ese GID consultando el fichero de cuentas de grupo del sistema, filtrando un poco la salida de dicha consulta con la información que tenemos del grupo y seleccionando el campo que necesitemos. Esta información deberíamos almacenarla en una variable.

Creando y configurando el directorio website

Con toda la información disponible, creamos un directorio llamado webSite en el directorio personal del usuario seleccionado si no existía previamente.

Como se ha creado este directorio como usuario root, pertenecerá a dicho usuario, tanto como usuario propietario y grupo. Así que, una vez creado se deberán cambiar propietario y grupo para que pertenezca al usuario y al grupo principal del usuario. Esta información la hemos obtenido previamente y almacenado en una variable.

Por último, se configurarán los permisos de dicho directorio para que el propietario pueda realizar cualquier operación sobre él, el grupo solo pueda acceder y leer y el resto de usuarios no pueda realizar ninguna acción.

Solución

La solución propuesta es la siguiente

Tema creado por Anders Norén