Tenemos un entorno de unos pocos miles de usuarios que ejecutan aplicaciones en aproximadamente 40 clústeres que varían en tamaño desde 20 nodos de cómputo hasta 98,000 nodos de cómputo. Los usuarios de estos sistemas generan archivos masivos (a veces> 1PB) controlados por los permisos tradicionales de Unix (las ACL generalmente no están disponibles o son prácticas debido a la naturaleza especializada del sistema de archivos).
Actualmente tenemos un programa llamado "dar", que es un programa suid-root que permite a un usuario "dar" un archivo a otro usuario cuando los permisos de grupo son insuficientes. Entonces, un usuario escribiría algo como lo siguiente para dar un archivo a otro usuario:
> give username-to-give-to filename-to-give ...
El usuario receptor puede usar un comando llamado "take" (parte del programa give) para recibir el archivo:
> take filename-to-receive
Los permisos del archivo se transfieren efectivamente al usuario receptor.
Este programa ha existido durante años y nos gustaría revisar las cosas desde un punto de vista funcional y de seguridad.
Nuestro plan de acción actual es eliminar la putrefacción de bits en nuestra implementación actual de "dar" y empaquetarlo como una aplicación de código abierto antes de volver a implementarlo en producción.
¿Alguien tiene otro método que usan para transferir archivos extremadamente grandes entre usuarios cuando solo están disponibles los permisos tradicionales de Unix?
chown
debe hacerlo. Parece que también desea copiar el archivo, una vez que ambas partes involucradas hayan acordado.