Из-за способа, которым Samba обрабатывает символические ссылки и широкие ссылки (он может различать только "в корне общего ресурса" или "вне корня общего ресурса"), я хочу создать фиксированные символические ссылки в корне общего ресурса для "фактических" директорий, а затем предотвратить "фактические" каталоги показываются непосредственно пользователю, когда они просматривают сетевой ресурс, как показано.

Это возможно?

АКТУАЛЬНАЯ СТРУКТУРА (файловый сервер FreeBSD):

share_root
   --- data1
          --- data3
          --- data4
          --- data5
          --- data6
   --- data2
          --- data7
          --- data8
          --- data9
   --- d4 (=symlink to data4)
   --- d6 (=symlink to data6)
   --- d9 (=symlink to data9)

Что видит пользователь (клиент Windows):

share_root
   --- d4 (and all data4's subdirs)
   --- d6 (and all data6's subdirs)
   --- d9 (and all data9's subdirs)

   (note: actual access to any dir is controlled by ACLs on data1/data2
    and their subdirs, so this just cleans up the tree seen by a user
    when they browse the share; it doesn't create any security)

По сути, "настоящие" dirs data1/data2 содержат набор dirs, к которым пользователь может / не может получить доступ, и этот доступ обеспечивается ACL.

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

"Нормальные" скрытые файлы будут отображаться в проводнике Windows, поэтому я не могу использовать "скрытые файлы" или точечные файлы для этого. Я мог бы использовать другие методы, такие как файлы вето, перечисление с контролем доступа, чтение / обход ACL и так далее, если они помогают. Однако я хочу только предотвратить показ данных data1 / data2 непосредственно пользователю - я не хочу прерывать обход через символические ссылки d4 / d6 / d9 к подкаталогам data1 / data2.

Возможно ли это с помощью комбинации перечисления с контролем доступа, smb.conf и ACL? Если нет, то что бы приблизило меня к решению?

1 ответ1

0

Я не уверен, что полностью понимаю ваш запрос, но использование nullfs - это первая тактика, которая приходит на ум.

Оставьте физическую, фактическую структуру в покое. Назовите это physical_root ради этого примера.

Создайте новый пустой каталог для share_root и укажите Samba на него в своем файле smb4.conf.

Под share_root создайте точки монтирования для всех каталогов, которые вы хотите предоставить клиентам Samba:

for DIR in d4 d6 d9; do
    mkdir /share_root/$DIR
done

Теперь установите нулевые фактические физические каталоги в фальшивое пространство share_root :

mount_nullfs /physical_root/data1/data4 /share_root/d4
mount_nullfs /physical_root/data1/data6 /share_root/d6
mount_nullfs /physical_root/data2/data9 /share_root/d9

Эти монтирования могут быть добавлены в /etc /fstab, возможно, с использованием опции 'late':

/physical_root/data1/data4  /share_root/d4  nullfs  rw,late  0  0
...etc...

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