Carpetas compartidas con grupos en Linux

Resumen

Administrar grupos en Linux te permite repartir permisos entre usuarios y compartir archivos sin exponer tu sistema. Aquí aprenderás a crear, modificar y eliminar grupos, y a montar una carpeta compartida real entre dos usuarios usando permisos especiales.

¿Dónde se guardan los grupos en Linux?

Todo grupo creado en el sistema queda registrado en el archivo /etc/group, similar a como ocurre con los usuarios.

Puedes inspeccionarlo con less /etc/group y verás líneas con el nombre del grupo, una X que representa la contraseña (cuando aplica) y el group ID. Cada vez que creas un usuario, Linux genera automáticamente un grupo con su mismo nombre.

¿Cómo veo a qué grupos pertenece un usuario? Si tienes la sesión iniciada, ejecuta groups. Si eres administrador y quieres consultar otro usuario o grupo, usa getent group nombre_del_grupo y te mostrará todos los miembros.

También puedes combinar cat /etc/group con un grep usando el pipe operator para filtrar coincidencias rápidas, como buscar tu propio usuario o el grupo sudo, que agrupa a los superusuarios del sistema.

¿Cómo crear y renombrar un grupo?

La creación de grupos requiere permisos administrativos. Sin sudo, el sistema te devolverá permission denied.

El flujo básico es así:

  • Crear un grupo: sudo groupadd amigos.
  • Renombrar el grupo: sudo groupmod -n friends amigos.
  • Verificar el cambio: cat /etc/group.

Una buena práctica es nombrar grupos en inglés para que cualquier persona del equipo entienda su propósito. Al renombrar con groupmod -n, el group ID se conserva intacto, así que ningún permiso previo se rompe.

¿Cómo crear una carpeta compartida entre usuarios?

Para este ejercicio necesitas dos usuarios. Créalos con adduser fulano y adduser perengano, asignando una contraseña a cada uno.

Por defecto, fulano no puede listar el home de perengano porque sus permisos y grupos son distintos. La solución es montar un directorio compartido y vincularlo a un grupo común.

¿Cómo asignar el grupo dueño de un directorio?

Desde el usuario root, sitúate en /root y crea la carpeta:

bash mkdir shared chgrp friends shared

Con chgrp (change group) reasignas el grupo propietario. Al hacer ls -la, verás que el group owner cambió a friends, aunque el owner siga siendo root.

¿Cómo ajustar los permisos del directorio?

Los permisos por defecto permiten lectura a cualquier usuario externo, lo cual no queremos. Ajusta con chmod para que el owner y el grupo tengan permisos completos, y los demás ninguno:

bash chmod 770 shared

¿Qué significa chmod 770? El primer 7 da lectura, escritura y ejecución al owner. El segundo 7, lo mismo al grupo. El 0 final bloquea por completo a usuarios externos.

¿Qué son los permisos SUID y SGID?

Existen permisos especiales llamados SUID (a nivel usuario) y SGID (a nivel grupo) que habilitan acciones especiales sobre archivos y directorios.

Aplicar SGID a una carpeta tiene un efecto muy útil: cualquier archivo o subdirectorio creado dentro hereda automáticamente el grupo dueño de la carpeta padre. Así garantizas que los archivos compartidos siempre pertenezcan al grupo friends, sin importar quién los cree.

Se activa con:

bash chmod g+s shared

Después de aplicarlo, en el bit de ejecución del grupo verás una s en lugar de una x. Si root crea un archivo dentro de shared, su grupo dueño ya no será root sino friends.

¿Cómo agregar y quitar usuarios de un grupo?

Para sumar usuarios al grupo compartido se usa usermod con dos flags clave: -a de append y -G para indicar el grupo.

bash usermod -aG friends fulano usermod -aG friends perengano

Ahora fulano puede entrar a /root/shared, crear un archivo como mensaje.txt y perengano podrá leerlo con cat /root/shared/mensaje.txt. Ambos comparten el grupo friends y, gracias al SGID, todo lo que generen mantiene el grupo correcto.

Para remover a alguien del grupo:

bash gpasswd -d perengano friends

La flag -d elimina al usuario del grupo. Si perengano intenta acceder de nuevo a la carpeta, el sistema le negará permisos al instante, ni siquiera permitirá autocompletar la ruta.

¿Cómo eliminar un grupo en Linux?

Cuando ya no necesitas un grupo, lo borras con un comando directo:

bash groupdel friends

Al revisar /etc/group, el grupo desaparece, aunque los grupos individuales de cada usuario (como fulano o perengano) siguen intactos.

¿Por qué importa dominar el manejo de grupos?

Manejar grupos es una habilidad central para cualquier administrador de sistemas Linux. Servicios como Docker y Postgres dependen de esto: para ejecutar Docker sin sudo, tu usuario debe pertenecer al grupo docker. Si alguna vez te encuentras con ese glitch tan común al instalar Docker, ya sabes por dónde atacarlo.

¿Qué carpeta compartida vas a montar primero en tu servidor? Cuéntamelo en los comentarios.