Ubuntu

遷移具有相同權限的掛載不起作用

  • May 7, 2016

我有兩個坐騎/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-3gFUSE 的預設設置是不允許其他使用者訪問。 mhddfs是一個 FUSE 文件系統,所以也是ntfs-3g(但請參閱下一節)。

2)在使用allow_other的時候,還要考慮權限檢查。FUSE 的預設設置是不檢查權限。因此,只需添加allow_other到文件系統就可以讓所有使用者都可以訪問它。這可能是不可取的;單獨的使用者 ID 通常用於包含服務,例如 CUPS 列印機守護程序,以防它們受到網路攻擊的影響。要在通用 FUSE 文件系統上啟用使用者/組/模式權限檢查,該選項稱為default_permissions.

NTFS-3G 特定行為

1 -> 根據其man頁面,ntfs-3gallow_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

要解決您的權限錯誤,您需要確定哪些使用者應該擁有對相關文件的訪問權限,並相應地設置正確的權限。 您從未說過哪個使用者(甚至是什麼軟體)未通過權限檢查,因此很難更具體。

引用自:https://unix.stackexchange.com/questions/280631