
Estou compartilhando algumas pastas no Ubuntu 18.04, para que possam ser acessadas para leitura/gravação em clientes Windows.
Estrutura do arquivo:
myshare/
dir1/
somefile1.txt
somefile2.txt
dir2/
dir3/
O cliente samba tem permissões de leitura/gravação/criação/exclusão para os arquivos dentro do dir1
.
Fui atingido por um acidente de usuário não intencional: um usuário atingiriaexcluiron dir1
e todos os arquivos contidos nele dir1
foram excluídos.
Não consegui aplicar configurações de permissão que pudessem impedir isso. Tudo isso parece se resumir a como os clientes samba implementam a exclusão de uma estrutura de pastas; eles fazem isso listando o conteúdo da pasta e, em seguida, executando a exclusão de um arquivo um por um, recursivamente a partir do nível mais profundo da árvore de diretórios.
Resumindo: no lado do servidor, não tenho chance de distinguir entre a exclusão permitida de um único arquivo e a exclusão indesejada, completa e recursiva da pasta.
Estou esquecendo de algo?
Pensei em dois truques, mas não consegui descobrir nenhuma solução:
Posso colocar um arquivo dentro
dir1
que faria com que o cliente samba abortasse a operação de exclusão em lote? Tive algum sucesso ao colocar umarquivo não deletávelemdir1
, mas o sucesso parece aleatório.Percebi que se eu fizer
dir1
a raiz do compartilhamento, o risco acima desaparece. Se o usuário pressionar deletedir1
a operação será negada, o que é perfeito. Mas terdir1
,dir2
,dir3
etc como compartilhamentos separados não é bem dimensionado. Quero que o usuário tenha apenas um ponto de acesso/myshare
. Mas existe uma maneira de fazer com que eledir1
se comporte como um compartilhamento (para que um cliente possa navegar nele, mas não excluí-lo) e ainda assim aparecer dentro dele/myshare
?
Uma solução que funcionasse apenas para clientes do Windows File Explorer seria aceitável.