educación, informática y demás

2306 - Scripts

Usuarios y grupos del sistema

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

  1. Vamos a recorrer el fichero de cuentas de usuario que utilicen /bin/bash excepto el usuario root.
  2. Para cada usuario tendremos que determinar la ruta de su directorio personal
  3. Con la ruta de su directorio personal podremos calcular la ruta absoluta de los directorios private, public y public_html.
  4. Comprobamos si existe cada directorio y si no existe lo creamos y lo configuramos.
  5. 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