У меня проблема, когда удаление символической ссылки на папку на смонтированном общем ресурсе Samba также удаляет содержимое целевой папки при доступе из моего Macbook. На самом деле это проблема, с которой я столкнулся на протяжении многих лет и остается, несмотря на использование разных версий компьютеров и операционных систем.

Вот последовательность событий:

  1. коснитесь foo/bar/1.txt
  2. Создайте символическую ссылку на папку на компьютере с Ubuntu, например, ln -s foo/bar bar2
  3. Смонтируйте общий ресурс Samba, содержащий символическую ссылку bar 2, на Mac
  4. Удалите символическую ссылку bar2 через Mac.
  5. Символическая ссылка bar2 будет удалена, но файл foo/bar/1.txt также будет удален. Любые файлы или папки в foo/bar исчезнут.

На данный момент я использую El Capitan, Ubuntu 16.04 с Samba 4.3.11.

В моем файле smb.conf есть следующие параметры, которые являются единственными, которые приходят на ум, насколько это возможно: разрешить небезопасные широкие ссылки = да unix extensions = нет

1 ответ1

0

Поскольку общий доступ к файлам 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 = да

Возможно, вы захотите изучить вариант небезопасных широких ссылок, поскольку можете отключить его, чтобы добиться желаемых результатов.

Вышеуказанное может работать не так, как вы хотите, из-за того, что во многих системах реализовано удаление структуры папок. Обычно последовательность продолжается как

  1. клиент неправильно определяет объект, который нужно удалить - это структура папок вместо символической ссылки.
  2. клиент рекурсивно переходит на самые глубокие уровни дерева и удаляет все содержимое этих папок.
  3. клиент работает обратно с самых глубоких уровней обратно в папку, которую вы сказали ему удалить, удаляя их по мере необходимости
  4. наконец, когда папка пуста, клиент отправит команду на удаление папки.
  5. однако, поскольку папка на самом деле является символической ссылкой, хост удаляет только символическую ссылку.

Таким образом удаляется содержимое цели вместе с символической ссылкой, но не фактическая целевая папка.

Аналогичным образом, когда выдается указание удалить файл с символьной ссылкой, удаляется только символическая ссылка. Проблема со структурой папок с символическими ссылками заключается в том, что клиент samba отправляет команду удаления на весь контент, прежде чем дать серверу указание удалить символическую ссылку на папку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .