Continuamos con la serie de casos prácticos sobre automatización de un sistema GNU/Linux con shell script. La última entrada es: Automatizaciones. Bash Shell Script: nuevosUsuarios.sh
Resulta que nuestro jefe nos ha dado la enhorabuena por todo el trabajo que llevamos realizado. Es más, nos ha regalado un lote de productos de ibéricos de una empresa pacense, Eurojamón, que hemos disfrutado con nuestros amig@s y familia. Todo estaba muy bueno, como siempre 🙂

Ahora, nuestro jefe en su afán de mejorar los servicios y la productivada de la empresa, ha escuchado algo de noseque de FTP. Quiere que tengamos montado un servidor FTP dónde todos los empleados de los distintos departamentos tengan acceso a recursos compartidos.
Parte técnica
Nos conectamos al servidor srv01.

Vamos a utilizar el servidor ftp vsftpd en GNU/Linux.

Oh! Tenemos dos opciones, lanzamos la máquina de WS2016 o nos saltamos, un momentito, el server.

El fichero de configuración de este servicio está en /etc/vsftpd.conf. Muestra el contenido de dicho fichero sin comentarios y sin líneas vacías, por favor.

Debería tener una configuración como la que se muestra en las líneas marcadas en rojo.
Reiniciamos el servicio

El directorio raíz del servidor FTP para acceso anónimo está en /srv/ftp. Es decir, todo lo que dejemos dentro de este directorio estará disponible a través de ftp.
Por ejemplo, si creamos un fichero llamado leeme.txt dentro de /srv/ftp, ese fichero estará disponible con la dirección /leeme.txt dentro de nuestro servidor ftp.
Lo mismo ocurre si creamos un directorios, por ejemplo educatica dentro de /srv/ftp. Si dentro del directorio /srv/ftp/educatica creamos un fichero llamado saludo.txt, la URL de este fichero a través de ftp será ftp://srv01.castelar.ex/educatica/leeme.txt
Definición del script – Pop Rock
Nos piden que para cada usuario del sistema creemos dentro del directorio /srv/ftp/staff un directorio con su nombre y lo configuremos para que solo ese usuario pueda acceder con todos los permisos.
De esta forma, se podrá acceder a través de ftp a ese directorio, pero solo podrá acceder el usuario al que realmente pertenezca.
Vamos a considerar que un usuario del sistema es aquel usuario que utilice como shell /bin/bash o /bin/sh y no sea el usuario root.
Solución propuesta
Recorremos la lista de usuarios del fichero /etc/passwd y, para cada usuario del sistema, si no existe su directorio de usuario en /srv/ftp/staff, lo creamos y lo configuramos para que ese usuario sea el único que pueda acceder con todos los permisos.
¿Cómo seleccionamos los usuarios del sistema? Seleccionando solo aquellos que tengan como shell /bin/bash o /bin/sh y no sean root.
¿Cómo obtenemos el nombre del usuario que cumple con los requisitos? Cortando el campo que nos interesa, el nombre de usuario.
¿Cómo comprobamos si un directorio existe?. Eso, amig@, deberías saberlo a estas alturas.
Vamos a ello!

Probamos 🙂

¡Versión Heavy!
Ahora queremos que para cada departamento se cree un directorio con el nombre del departamento y dentro de ese directorio creemos un directorio para cada empleado miembro del departamento.
El directorio de cada departamento en el servidor FTP estará dentro del directorio departamentos, es decir /srv/ftp/departamentos.
La configuración de seguridad hará que tan solo los miembros de dicho departamento puedan acceder al directorio del departamento en el FTP. De la misma forma, para cada directorio de empleado de un departamento, podrá acceder con todos los permisos el empleado, los miembros del departamento podrán acceder para solo lectura y el resto de usuario no podrá hacer nada.
Solución propuesta
Recorremos los grupos del fichero de grupos del sistema obteniendo el nombre del grupo y la lista de miembros.
Para cada grupo con miembros, recorremos sus miembros, creamos y configuramos el directorio de cada usuario empleado dentro del directorio del departamento.
¿y el directorio del departamento?
Para cada grupo, recorremos los miembros y creamos los directorios del miembros. Si hemos entrado aquí, en el bucle que crea directorios de empleados, es que ese grupo tiene miembros y, por tanto, hay que crear el directorio del proyecto.
Lo mejor es que al crear el directorio de uno de sus miembros se crea automáticamente. Lo que nos quedaría al salir del bucle es comprobar si existe el directorio del departamento, si existe, lo configuramos.

Vamos a modificar la función creaDirectorioFTP para adaptarla a lo que necesitamos
Este sería el código

Probamos

¡Versión Thrash Metal!
Nos hemos dado cuenta que no hemos llevado contabilidad de los grupos del sistema que realmente sean departamentos de empleados de la empresa. Podría existir un grupo en el sistema que tenga miembros, pero que no sea un grupo que represente un departamento de la empresa.
Para solventar esta pesadilla, vamos a utilizar, de nuevo, el fichero que nos proporcionó nuestro jefe con la información de empleados y departamentos que nosotros transformamos a csv.
Queremos llevar a cabo el proceso de creación de directorios y usuarios en el FTP para los grupos que representen realmente departamentos de la empresa y para usuarios que sean realmente sean de empleados.
Tenemos toda la información necesaria en el fichero CSV 🙂
Dejar una respuesta