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)
기본적으로 "실제" 디렉토리 data1/data2에는 사용자가 액세스할 수 있거나 액세스할 수 없는 디렉토리가 혼합되어 있으며 해당 액세스는 ACL에 의해 시행됩니다.
그러나 사용자가 공유에 액세스할 때 먼저 이러한 디렉토리를 보지 않기를 바랍니다.
"일반" 숨김 파일은 Windows 탐색기에 표시되므로 "파일 숨기기"나 도트 파일을 사용할 수 없습니다. 도움이 되는 경우 거부권 파일, 액세스 제어 열거, ACL 읽기/트래버스 등과 같은 다른 방법을 사용할 수 있습니다. 그러나 data1/data2가 사용자에게 직접 표시되는 것을 방지하고 싶습니다. 순회를 종료하고 싶지 않습니다.심볼릭 링크 d4/d6/d9를 통해data1/data2의 하위 디렉토리로.
액세스 제어 열거, smb.conf 및 ACL의 조합을 사용하여 이것이 가능합니까? 그렇지 않다면 무엇이 해결책에 가장 가까운가?
답변1
귀하의 요청을 완전히 이해했는지는 모르겠지만 nullfs
마운트를 사용하는 것이 가장 먼저 떠오르는 전술입니다.
물리적인 실제 구조는 그대로 둡니다. physical_root
이 예를 위해 이것을 호출하십시오 .
에 대한 새로운 빈 디렉토리를 만들고 share_root
smb4.conf에서 Samba가 해당 디렉토리를 가리키도록 합니다.
아래에서 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
해당 마운트는 아마도 'late' 옵션을 사용하여 /etc/fstab에 추가할 수 있습니다:
/physical_root/data1/data4 /share_root/d4 nullfs rw,late 0 0
...etc...