Esta entrada repasa ciertos aspectos un poco más avanzados de gestión de cuentas de usuario y grupos en un sistema GNU/Linux Debian utilizando comandos de GNU en bash.
No se recomienda como punto de partida para trabajar con gestión de usuarios y grupos. Si todavía no dominas estos contenidos, estaría bien echar un vistazo al apartado de Comandos de GNU/Linux o a las entradas sobre esta temática en educatica.
Directorio /etc/skel
Es decir, adduser crea el directorio personal del usuario y lo rellena con el contenido del directorio /etc/skel
Vamos a crear cierto contenido que pensamos que es importante que tengan los usuarios de nuestro sistema.
Vamos a cambiar los permisos del directorio private y public_html. En el primer caso, en private, vamos a configurarlo de forma que sea totalmente confidencial, tan solo podrá acceder con todos los permisos el propietario.
En cuanto al directorio public_html, tan solo accederán el propietario y el grupo, el resto de usuarios no podrá hacer nada. Los permisos para usuario y grupo los mantenemos como están.
Además, el directorio public_html le vamos a dejar como propietario al grupo www-data, que existe en nuestro sistema. Podemos comprobarlo.
Cambiamos el grupo del directorio
Vamos a crear un usuario, a ver que sucede.
Veamos el contenido de su directorio personal
El grupo no lo ha mantenido. El comando adduser ha copiado el contenido del directorio, pero le ha asignado a cada fichero como propietario y grupo el usuario y el grupo principal del usuario.
Script – checkUsers.sh
Vamos a crear un script que para cada usuario del sistema comprobará si existen los directorios private, public_html y public en su directorio personal. Si no existe, lo creará y lo configurará con los permisos adecuados, tal cuál se ha hecho en el apartado anterior.
Además, aunque exista el directorio se va a configurar el grupo del directorio public_html para que el grupo sea www-data.
Consejo de implementación
- Vamos a recorrer el fichero de cuentas de usuario que utilicen /bin/bash excepto el usuario root.
- Para cada usuario tendremos que determinar la ruta de su directorio personal
- Con la ruta de su directorio personal podremos calcular la ruta absoluta de los directorios private, public y public_html.
- Comprobamos si existe cada directorio y si no existe lo creamos y lo configuramos.
- Si el directorio public_html ya existía, el podemos como grupo al grupo www-data.
Solución propuesta
Primero creamos el esqueleto del script.
La función procesaUsuario se encarga de realizar el trabajo con los datos del usuario, su nombre y la ruta del directorio personal. Por ahora tan solo muestra información en pantalla.
Podríamos hacer algo así
Dejar una respuesta