Excluir o link simbólico da pasta do Ubuntu exclui o conteúdo da pasta de destino quando feito via OSX e Samba

0

Eu tenho um problema em que a exclusão de um link simbólico de pasta em um compartilhamento Samba montado também exclui o conteúdo da pasta de destino quando acessado pelo meu Macbook. Este é realmente um problema que tive por muitos anos e permanece apesar de usar versões diferentes de máquinas e sistemas operacionais.

Aqui está a sequência de eventos:

  1. toque em foo / bar / 1.txt
  2. Crie um link simbólico para uma pasta em uma máquina Ubuntu, por exemplo, ln -s foo / bar bar2
  3. Monte o compartilhamento do Samba contendo o link simbólico da barra 2 em um Mac
  4. Exclua o link simbólico do bar2 pelo Mac.
  5. A barra de links simbólicos2 será excluída, mas o arquivo foo / bar / 1.txt também será removido. Todos os arquivos ou pastas no foo / bar terão desaparecido.

No momento, estou executando o El Capitan, Ubuntu 16.04 com o Samba 4.3.11.

Eu tenho as seguintes opções no meu smb.conf, que são as únicas coisas que me vêm à mente envolvidas: permitir links largos inseguros = sim extensões unix = não

    
por Max Pfleger 30.10.2016 / 04:02

1 resposta

0

Como o compartilhamento de arquivos do Windows e, portanto, o samba original não tinha nenhum conceito de links simbólicos, ele normalmente excluiria toda a árvore de pastas por meio de um link simbólico. No entanto, você pode tentar mudar para unix extensions = yes , pois o seu OSX também pode entender isso.

Na página link

unix extensions (G)

This boolean parameter controls whether Samba implements the CIFS UNIX extensions, as defined by HP. These extensions enable Samba to better serve UNIX CIFS clients by supporting features such as symbolic links, hard links, etc... These extensions require a similarly enabled client, and are of no current use to Windows clients.

Note if this parameter is turned on, the wide links parameter will automatically be disabled.

See the parameter allow insecure wide links if you wish to change this coupling between the two parameters.

Default: unix extensions = yes

Você pode querer investigar mais a opção inseguros de links largos, já que talvez queira desativá-la para alcançar os resultados desejados.

O acima pode ainda não funcionar como você deseja devido à forma como muitos sistemas implementam a exclusão de uma estrutura de pastas. Normalmente a sequência continua como

  1. o cliente detecta incorretamente o objeto a ser excluído é uma estrutura de pastas em vez de um link simbólico.
  2. O
  3. cliente recursivamente prossegue para os níveis mais profundos da árvore e exclui todo o conteúdo dessas pastas.
  4. o cliente volta dos níveis mais profundos de volta para a pasta que você pediu para excluir, excluindo-os da seguinte forma
  5. finalmente, quando a pasta estiver vazia, o cliente enviará o comando para excluir a pasta
  6. no entanto, como a pasta é, na verdade, um link simbólico, o host só exclui o link simbólico.

É assim que o conteúdo do alvo é deletado junto com o link simbólico, mas não a pasta atual.

Da mesma forma, quando for instruído a excluir um arquivo com link simbólico, apenas o link simbólico será excluído. O problema com a estrutura de pastas ligadas a links simbólicos é que o cliente samba envia o comando delete para todo o conteúdo antes de instruir o servidor a excluir o link simbólico para a pasta.

    
por 30.10.2016 / 04:40