我剛剛遇到了一個我在任何地方都找不到的問題(例如 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 共用。不建議。