遷移具有相同權限的掛載不起作用
我有兩個坐騎
/mount1
和/mount2
. 我執行了命令:rsync -azrt /mount1/* /mount2/
將所有內容從 複製
/mount1
到/mount2
.然後我更改了
/etc/fstab
*(見下文)*以刪除/mount1
和安裝/mount2
,/mount1
但是由於權限原因,事情(包括我的電子郵件伺服器本地使用者文件夾)不再正常工作,即使在將權限與安裝前後的權限進行比較時它們是相同的?!
/etc/fstab
之前(工作):UUID="3999A4F22570EAC4" /mount2 ntfs-3g nobootwait,permissions,locale=en_US.utf8 0 2 mhddfs#/mount3,/mount4 /mount1 fuse defaults,allow_other,nobootwait,nonempty,uid=1000,gid=1000,umask=007 0 0
/etc/fstab
之後(不工作):UUID="3999A4F22570EAC4" /mount1 ntfs-3g nobootwait,permissions,locale=en_US.utf8 0 2
哪裡
UUID="3999A4F22570EAC4"
有/mount2
前面的內容/mount1
通用 FUSE 選項
1)我注意到文件系統掛載
allow_other
上沒有設置。ntfs-3g
FUSE 的預設設置是不允許其他使用者訪問。mhddfs
是一個 FUSE 文件系統,所以也是ntfs-3g
(但請參閱下一節)。2)在使用
allow_other
的時候,還要考慮權限檢查。FUSE 的預設設置是不檢查權限。因此,只需添加allow_other
到文件系統就可以讓所有使用者都可以訪問它。這可能是不可取的;單獨的使用者 ID 通常用於包含服務,例如 CUPS 列印機守護程序,以防它們受到網路攻擊的影響。要在通用 FUSE 文件系統上啟用使用者/組/模式權限檢查,該選項稱為default_permissions
.NTFS-3G 特定行為
1 -> 根據其
man
頁面,ntfs-3g
將allow_other
預設啟用。(FUSE 預設只允許 root 使用者執行此操作。不過這裡不是問題,因為您使用mount
的是作為 root 執行的)。2 - >聽起來該
ntfs-3g
選項permissions
為您啟用了權限檢查。否則,您不會注意到任何權限錯誤。(SELinux 可能會,但你沒有使用 SELinux,因為你在 Ubuntu 上。Ubuntu AppArmor 被描述為基於路徑的,所以根據你的描述,我認為它不太可能導致問題)。論文
我相信您的 ntfs-3g 掛載設置為執行權限檢查,並且 FUSE 不會單獨阻止其他使用者的訪問。這對於
fstab
用於提供系統目錄(如/var/mail
.但是,您的
mhddfs
掛載本身並沒有執行權限檢查,因為它沒有default_permissions
設置。這可以解釋為什麼mhddfs
設置能夠工作(儘管選項uid,gid,umask
只允許訪問您的使用者 ID 1000)。您沒有顯示底層文件系統,所以我不知道他們是否正在檢查權限,但我懷疑這只mhddfs
是以 root 身份執行並避免以這種方式進行權限檢查。這是您可以在
mhddfs
安裝上執行的測試。它應該顯示是否正在檢查權限位。mkdir dir chmod a-w dir # make directory read-only touch dir/t # attempt writing to directory
要解決您的權限錯誤,您需要確定哪些使用者應該擁有對相關文件的訪問權限,並相應地設置正確的權限。 您從未說過哪個使用者(甚至是什麼軟體)未通過權限檢查,因此很難更具體。