Samba: evita exclusão em massa acidental e recursiva de arquivos

Samba: evita exclusão em massa acidental e recursiva de arquivos

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 dir1e todos os arquivos contidos nele dir1foram 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:

  1. Posso colocar um arquivo dentro dir1que faria com que o cliente samba abortasse a operação de exclusão em lote? Tive algum sucesso ao colocar umarquivo não deletávelem dir1, mas o sucesso parece aleatório.

  2. Percebi que se eu fizer dir1a raiz do compartilhamento, o risco acima desaparece. Se o usuário pressionar delete dir1a operação será negada, o que é perfeito. Mas ter dir1, dir2, dir3etc 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 ele dir1se 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.

informação relacionada