Samba 共享 - 遵循符號連結但已在本機路徑中

Samba 共享 - 遵循符號連結但已在本機路徑中

我剛剛遇到了一個我在任何地方都找不到的問題(例如 samba 文件)。

我在 server1 上有一個 samba 共享,並且該共享安裝到了 server2 上。 server1 的共享是到 的符號連結/var/container/db

問題是,當我嘗試從 server2 打開此符號連結資料夾時,它會顯示 server2 上的本機文件,因為該路徑/var/container/db存在於我的 server2 上。

什麼會導致這個問題,解決方案是什麼?

兩台伺服器都運行在 Debian 上。

答案1

如果您在類 Unix 主機之間共享符號鏈接,則安裝共享的系統將根據其自己的檔案系統樹解釋符號鏈接。這就是 Unix 風格的符號連結的工作原理。

如果伺服器 1 上的共用包含您希望符號連結指向的內容,則可以使用相對的符號連結而不​​是絕對連結。

例如,如果您在 server1 上的 samba 共享是,/var並且它作為 掛載在 server2 上/server1var,並且符號連結位於 server1 上/var/some/directory/link-to-db,則您當前的符號連結將如下所示:

server1# ln -s /var/container/db /var/some/directory/link-to-db

相反,你可以這樣做:

server1# cd /var/some/directory
server1# ln -s ../../container/db link-to-db

如果 server1 上的資料庫不在 Samba 共用內,那麼您將需要 Samba 伺服器參數wide links = yes。這將使 server1 遵循符號連結並提供對 server1 的訪問,/var/container/db而不僅僅是傳遞符號

但是,如果伺服器在預設設定下運行,它也會unix extensions = yes預設啟用 -wide links如果客戶端是類 Unix 系統(如您的情況),這將停用。

但是,透過設置,即使在共享連接上有效,allow insecure wide links = yes您也可以允許該wide links參數起作用-unix extensions但不建議這樣做,因為它不安全。server1 上的管理員將失去對共享內容和不可共享內容的控制,因為客戶端可以嘗試透過在共享上創建合適的符號鏈接(如果可寫)來訪問 Samba 共享之外的任何文件 - 然後它就只是連線上使用的使用者帳戶是否有權讀取該檔案。

基本上,allow insecure wide links+ wide links+ unix extensions+ 客戶端可寫入共用實際上等同於僅/與 Samba 共用。不建議。

相關內容