Удаление символической ссылки папки Ubuntu удаляет содержимое целевой папки, когда выполняется через OSX & Samba
У меня проблема с удалением символической ссылки папки на смонтированном Samba share также удаляет содержимое целевой папки при доступе с моего Macbook. Это на самом деле проблема, которую я имел в течение многих лет, и остается, несмотря на использование разных версий машин и операционных систем.
Вот последовательность событий:
- Touch foo / bar / 1.txt
- Создайте символическую ссылку на папку на машине Ubuntu, то есть ln -s foo / bar bar2
- Соедините долю Samba, содержащую символическую ссылку bar 2 на Mac
- Удалите символическую ссылку bar2 через Mac.
- Символьная строка bar2 будет удалена, но файл foo / bar / 1.txt также исчезнет. Любые файлы или папки в foo / bar исчезнут.
На данный момент я управляю El Capitan, Ubuntu 16.04, с Samba 4.3.11.
- Как копировать символические ссылки?
- Просмотр списка символических ссылок в системе?
- Не удалось создать символическую связь между терминалом в Mac OS X и Sublime Text 2, чтобы его можно было запустить из командной строки
- Ubuntu + последняя версия samba, символические ссылки больше не работают на share, установленном в окнах
- VIM уничтожает символические ссылки под Windows
У меня есть следующие опции в моем smb.conf, которые являются единственными, что приходит на ум, насколько это возможно: разрешить небезопасные широкие ссылки = да unix extensions = no
- Как вы создаете символическую ссылку с относительным путем с помощью mklink?
- Доступ запрещен на mklink
- Как найти все ссылки (символические ссылки) в текущем каталоге?
- Как найти все символические ссылки в Windows Vista или 7?
- Как просмотреть все символические ссылки, точки соединения, жесткие ссылки в папке с помощью dir?
- Общие домашние папки между операционными системами
- Простой, простой способ создания символических ссылок в Windows?
- Как выяснить, является ли ссылка символической ссылкой, жесткой ссылкой или перекрестком каталогов в Windows?
Поскольку совместное использование файлов Windows и, следовательно, исходная samba не имели понятия символических ссылок, она обычно удаляла бы все дерево папок через символическую ссылку. Однако вы можете попробовать перейти на unix extensions = yes
как ваш OSX может это понять.
На странице https://www.samba.org/samba/docs/man/manpages/smb.conf.5.html#UNIXEXTENSIONS
Расширения unix (G)
Этот логический параметр определяет, реализует ли Samba расширения CIFS UNIX, как определено HP. Эти расширения позволяют Samba лучше обслуживать клиентов UNIX CIFS, поддерживая такие функции, как символические ссылки, жесткие ссылки и т. Д. Эти расширения требуют клиента с одинаковой поддержкой и не используются в настоящее время для клиентов Windows.
Обратите внимание, что если этот параметр включен, параметр широких ссылок будет автоматически отключен.
См. Параметр позволяют небезопасные широкие ссылки, если вы хотите изменить эту связь между двумя параметрами.
По умолчанию: unix extensions = yes
Возможно, вам захочется исследовать опцию небезопасных широких ссылок, так как вы можете отключить ее для достижения результатов, которые вы после.
Вышеупомянутое может по-прежнему не работать по вашему желанию из-за того, что многие системы реализуют удаление структуры папок. Обычно последовательность выполняется как
- Клиент неправильно обнаруживает объект, который нужно удалить, это структура папок вместо символической ссылки.
- Клиент рекурсивно переходит к самым глубоким уровням дерева и удаляет все содержимое этих папок.
- Клиент работает с самых глубоких уровней обратно в папку, которую вы сказали удалить, удаляя их
- То, наконец, когда папка пуста, клиент отправит команду для удаления папки
- Однако, поскольку папка на самом деле является символической ссылкой, хост удаляет только символическую ссылку.
Таким образом, содержимое цели удаляется вместе с символической ссылкой, но не фактической целевой папкой.
Аналогичным образом, когда ему дается указание удалить символический файл, удаляется только символическая ссылка. Проблема с символической структурой папок заключается в том, что клиент samba отправляет команду delete ко всему содержимому, прежде чем указывать серверу на удаление символической ссылки на эту папку.