
Estoy compartiendo algunas carpetas en Ubuntu 18.04, para que se pueda acceder a ellas en lectura/escritura desde clientes de Windows.
Estructura de archivos:
myshare/
dir1/
somefile1.txt
somefile2.txt
dir2/
dir3/
El cliente Samba tiene permisos de lectura/escritura/creación/eliminación de los archivos internos dir1
.
Fui golpeado por un accidente de usuario no intencionado: un usuario golpearíaborrarencendido dir1
y todos los archivos que contiene dir1
se eliminaron.
No he podido aplicar configuraciones de permisos que pudieran evitar esto. Todo esto parece reducirse a cómo los clientes Samba implementan la eliminación de una estructura de carpetas; lo hacen enumerando el contenido de la carpeta y luego ejecutando una eliminación de archivos uno por uno, de forma recursiva desde el nivel más profundo del árbol de directorios.
En pocas palabras: en el lado del servidor no tengo posibilidad de distinguir entre la eliminación permitida de un solo archivo y la eliminación no deseada, completa y recursiva de una carpeta.
¿Me estoy perdiendo de algo?
He pensado en dos trucos pero no he podido encontrar ninguna solución:
¿Puedo colocar un archivo dentro
dir1
que haga que el cliente Samba cancele la operación de eliminación por lotes? He tenido cierto éxito al colocar unarchivo no borrableendir1
, pero el éxito parece aleatorio.He notado que si hago
dir1
la raíz del recurso compartido, el riesgo anterior desaparece. Si el usuario luego presiona eliminar,dir1
la operación se niega, lo cual es perfecto. Pero tenerdir1
,,dir2
etc.dir3
como acciones separadas no escala bien. Quiero que el usuario tenga un solo punto de acceso/myshare
. Pero, ¿hay alguna manera de hacer quedir1
se comporte como un recurso compartido (para que un cliente pueda explorarlo pero no eliminarlo) y aun así aparecer dentro/myshare
?
Sería aceptable una solución que funcione sólo para clientes del explorador de archivos de Windows.