Tente este procedimento.
Crie uma pasta compartilhada e conceda a permissão correta:
mkdir /pathYouWant/share
chmod 770 /pathYouWant/share
Isso não dá acesso a outro.
chmod +t /pathYouWant/share
Este modo, de acordo com a página de manual chmod :
The restricted deletion flag or sticky bit is a single bit, whose
interpretation depends on the file type. For directories, it prevents
unprivileged users from removing or renaming a file in the directory
unless they own the file or the directory
Como dito por Marty Fried, os arquivos criados na pasta de compartilhamento devem ter as permissões certas e isso pode ser obtido com masks de compartilhamento de samba em smb.conf
:
create mask = 440
directory mask = 550
Os programas do Windows não devem tentar remover arquivos somente leitura, a menos que a opção delete readonly
esteja configurada como sim.
delete readonly = no
Além disso, se você quiser ocultar todo o arquivo na pasta de compartilhamento:
veto files = /*/
delete veto files = no
De acordo com o manual do samba, esta diretiva:
O que acontece se o usuário tentar excluir um diretório que contenha vetou arquivos? É aí que entra a opção excluir arquivos de veto. esta opção booleana está definida como sim, o usuário pode excluir tanto o arquivos regulares e os arquivos vetados no diretório e no diretório em si é removido. Se a opção estiver definida como não, o usuário não poderá excluir os arquivos vetados e, consequentemente, o diretório não é excluído ou. Do ponto de vista do usuário, o diretório aparece vazio, mas não pode ser removido.
Após essa configuração, o único problema que resta é que o usuário ainda pode excluir seus próprios arquivos, mesmo que não os veja (não está claro para nós o porquê).
Então, decidimos seguir a sugestão_Seppi para concluir a tarefa e Bram Driesen fez um script que altera a propriedade do arquivo para o PC host.
Ele usou incron
para disparar o script sempre que um arquivo é colocado na pasta, seguindo este como guia para configurá-lo.