Назад | Перейти на главную страницу

Символьные ссылки выглядят как обычные файлы в общих папках samba

Символические ссылки на моем общем ресурсе samba ведут себя не так, как я хочу - в частности, ссылки выглядят так дублировать обычные файлы на клиентскую машину. Раньше это работало (т.е. символические ссылки на сервере выглядели как символические ссылки на клиенте), но в какой-то момент это прекратилось. Я предполагаю, что это как-то связано с версией самбы, но я никогда не находил комбинацию, которая работает.

Возможно ли, чтобы символические ссылки работали "как символические ссылки" на клиентах Samba? Если да, то как?

Вот моя установка.

Сервер: Synology NAS обслуживает общий ресурс через samba

------server smb.conf-------
[global]
unix extensions=no
follow symlinks=yes
wide links=yes
allow insecure wide links=yes

Клиент: Машина Ubuntu 16.04, монтируя общий ресурс с помощью следующей команды

sudo mount -t cifs -o vers=3.0 -o user=<myuser> //server/sharename /mnt/mountpoint

После установки общего ресурса я делаю следующее:

На сервере

$ echo "HELLO WORLD" > file-created-on-server.txt
$ ln -s file-created-on-server.txt symlink-created-on-server.txt
$ ls -iog
75852 -rwxrwxrwx+ 1 12 Jul 19 20:16 file-created-on-server.txt
75859 lrwxrwxrwx+ 1 25 Jul 19 20:53 symlink-created-on-server.txt -> file-created-on-server.txt

Очевидно, что это символическая ссылка. Однако, если я тогда сделаю ...

На клиенте

$ ls -iog
total 8
75852 -rwxr-xr-x 1 12 Jul 19 21:16 file-created-on-server.txt
75852 -rwxr-xr-x 1 12 Jul 19 21:16 symlink-created-on-server.txt

Я ожидал символическая ссылка-созданный-на-сервере.txt к похоже на символическую ссылку. Но это не так. Это похоже на дубликат исходного файла - у них даже есть тот же номер inode на клиенте, но не на сервере.

Что здесь происходит? Есть ли способ сделать символические ссылки просто похожими на символические ссылки? Я читал кое-что о проблемах безопасности с samba и символическими ссылками, и я предполагаю, что это могло быть причиной изменения поведения, но я так и не нашел четкого объяснения - и в этом случае меня не волнуют последствия для безопасности.

Чего ты ожидал?

У тебя есть

unix extensions=no
follow symlinks=yes

Что означает, что

  1. Сервер не будет сообщать о ссылках
  2. Сервер будет следовать по символической ссылке.

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