Dónde colocar la carpeta

El punto ideal en el que montar nuestra carpeta sería bajo /srv o /home. Me gusta más /srv pero en mi caso, puesto que ya hice una partición para /home cuando instalé el sistema, en la que se encuentra la mayoría del espacio en disco y de los datos, la montaré en /home/share/ y me ahorraré muchos quebraderos de cabeza.

Además, /home tiene otra ventaja, y es que, al estar en la misma partición que el resto de usuarios, cuando mueva ficheros de mi carpeta personal a la compartida, la operación será instantánea.

Crear un grupo para los usuarios que la compartan

Obviamente, todos los usuarios que quieran acceder a una carpeta tendrán que tener el mismo grupo, así que vamos a crear uno para dicha tarea; lo llamaremos trusted:

# groupadd trusted

Ahora vamos a añadir a todos los usuarios a ese grupo (repetir con cada usuario, reemplazando $USER):

# usermod --append --groups trusted $USER

Recuerda que si estás cambiando los grupos de tu propio usuario, tienes que cerrar y abrir la sesión para que estos se actualicen.

Crear la carpeta y asignarle los permisos

# mkdir /home/share
# chown --recursive root:trusted /home/share
# chmod --recursive u=rwX,g=rwXs,o= /home/share

Lo que acabamos de hacer es crear la carpeta con dueño root y asignarle el SETGID para que lo que haya dentro siempre pertenezca al grupo trusted.

Ajustar los permisos tras haber volcado algunos datos

Después de mover ficheros ahí, notarás que tienen los mismos permisos que antes si haces un ls -l. Cuando hayas movido todo lo que necesites, vuelve a ejecutar los 2 últimos comandos de antes:

$ chown --recursive $USER:trusted /home/share
$ chmod --recursive u=rwX,g=rwXs,o= /home/share

Ajustar el umask de los usuarios

Es posible que tus usuarios tengan un umask demasiado permisivo o restrictivo, y que esto ocasione que en el futuro te tengas que ver obligado a ejecutar los comandos de arriba otra vez por problemas de permisos.

En nuestro caso, ya no queremos que esto vuelva a pasar, así que necesitaremos ajustar el umask de cada usuario con acceso para que permita lectura, escritura y ejecución al grupo. Para ello, edita el fichero ~/.bashrc (si el usuario usa Bash), ~/.config/fish/config.fish (si usa Fish) o el equivalente y añade este comando al final:

umask 0007

Esto quiere decir que los nuevos ficheros que cree tendrán permisos go=rwX,o=, o sea justo lo que necesitamos para compartir con seguridad.

Recuerda que umask sólo se aplica al crear o copiar archivos, no al moverlos.