Listas de control de acceso
La respuesta directa son las listas de control de acceso (ACL) . Sí, puedes encontrar un contraejemplo, pero son lo suficientemente buenos en la práctica (a diferencia de la simple escritura grupal que requiere que los usuarios piensen en ello todo el tiempo). Lo que sí requieren es que el administrador del sistema (root) defina los grupos, si desea que los archivos sean compartidos solo por un grupo con nombre (root puede elegir delegar, por ejemplo, aceptando grupos de LDAP, pero esa es otra historia).
Es necesario que los usuarios participantes tengan una umask de 022. Si crean rutinariamente archivos que no se pueden leer en todo el mundo, este esquema no funcionará. Pero si tienen una máscara de usuario restrictiva, es presumiblemente porque no quieren compartir archivos de todos modos.
Habilitación de ACL
Ubuntu no habilita las ACL de forma predeterminada, por lo que hay un requisito de administrador único. Edite /etc/fstab
utilizando su editor favorito y cambie cada línea correspondiente a un sistema de archivos donde desea compartir archivos: agregue acl
a las opciones. (Asegúrese de no cambiar ninguna otra línea y de no usar un editor que envuelva líneas largas). Aquí hay una línea de ejemplo con la acl
opción agregada:
UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors=remount-ro,acl 0 1
Para que la opción surta efecto la primera vez, use un comando como el siguiente (para cada sistema de archivos):
sudo mount -o remount,acl /
Instale las herramientas de ACL del acl
paquete.
Configurar el directorio compartido
Para tener archivos compartidos por el grupo mygroup
:
setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root
Si las personas crean archivos y los copian en el directorio compartido, los archivos serán legibles en todo el mundo (debido a la máscara de usuario) y cualquier persona en el grupo puede agregar y eliminar archivos (porque el grupo se puede escribir en grupo). La gente no puede editar los archivos de los demás, pero eso es algo bueno o te encontrarás con conflictos de edición de inmediato.
Si no tiene un grupo unix, puede agregar usuarios uno por uno:
setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root
Control de versiones
Si desea que las personas puedan editar archivos en su lugar, también necesita algo para evitar conflictos de edición. Eso es control de versiones.
No necesita nada de esto para compartir un repositorio git. Sabes que hay soluciones como la gitosis, así que úsalas.