¿Es posible, utilizando el esquema de permisos de Linux, permitir a los usuarios crear archivos pero no editarlos o eliminarlos más adelante? Quiero decir, tenemos una carpeta de entrega donde los usuarios ponen artefactos allí y no queremos que estos artefactos se modifiquen después de la entrega, es decir, editados o eliminados.
linux
permissions
synchronization
Gilles 'SO- deja de ser malvado'
fuente
fuente
Respuestas:
No puede hacer eso: si el usuario puede crear archivos, serán de su propiedad y podrá modificarlos y borrarlos.
Iba a proponer un esquema simple para tener un directorio provisional (donde el usuario puede hacer lo que quiera) y un directorio entrante (no accesible para el usuario), con un pequeño programa privilegiado para mover archivos desde el directorio provisional al entrante directorio. Pero en realidad es difícil hacer lo correcto: entre otras cosas, debe tener cuidado de que el programa privilegiado no mueva archivos en otros directorios (tenga cuidado con las condiciones de carrera, enlaces simbólicos,
../
), no sobrescribirá los archivos existentes (rename(3)
es atómico pero puede borrar el destino), no permitirá que el usuario mantenga abierto un descriptor de archivo y modifique el archivo después de moverlo (por lo que es mejor copiarlo que moverlo). En cambio, recomendaré tomar una solución sólida existente:fuente
NO
Pero tiene otras opciones sugeridas por @Fredrik en el comentario a su pregunta. Mira aquí.
fuente
Aquí hay un enfoque que debería, en teoría, funcionar. Es demasiado esfuerzo para mí desarrollar incluso una prueba de concepto; puedes rechazarlo por la misma razón. Y, estrictamente hablando, esto no es "usar el esquema de permisos de Linux".
/mnt/delivery
y les dice a sus usuarios que coloquen sus archivos allí.fuente
La respuesta simple es ejecutar un script en un intervalo determinado que elija (digamos cada 15 minutos) que reasigna la propiedad de todos los archivos en el directorio "upload" a un usuario "admin" predeterminado y establece los permisos en "644". Esto permitirá a todos los usuarios acceso de solo lectura a todos los archivos en el directorio de carga, incluidos los que ellos mismos cargaron. Por supuesto, puede optimizar el script después de la primera ejecución para buscar solo aquellos archivos con fechas creadas después de la ejecución anterior del script (por ejemplo, en los últimos 17 minutos).
fuente