在 Linux 中掛載 HFS+ 磁碟區時繞過預設權限

在 Linux 中掛載 HFS+ 磁碟區時繞過預設權限

我有一台裝有 Snow Leopard 和 Kubuntu 11.10 的雙啟動 MacBook Pro,並且想要(不關心寫入)我運行 Kubuntu 時的 Mac 主目錄。

我可以毫無問題地安裝它,但我在 Kubuntu 上的用戶無法看到 mac 用戶擁有的 HFS+ 上的文件,因為 uid 不同(Mac 上為 502,Kubuntu 上為 1000)。

查看有關 HFS+ 的內核文檔我讀到:

When mounting an HFSPlus filesystem, the following options are accepted:
[CUT]
    uid=n, gid=n
        Specifies the user/group that owns all files on the filesystem
        that have uninitialized permissions structures.
        Default:  user/group id of the mounting process.

所以我嘗試使用這些選項:

$ sudo mount -t hfsplus -o uid=1000,gid=1000 /dev/sda2 /mnt/Mac

但他們似乎什麼也沒做:當我使用 ls -l 環顧四周時,我仍然看到相同的權限。我可能錯過了一些東西,有什麼線索嗎?

我知道我可以在 Ubuntu 上更改我的用戶 ID 以使其與 Mac Os X 匹配,但如果可能的話我寧願避免它。

答案1

bindfs就是答案。它將獲取一個已安裝的檔案系統,並使用您想要的任何 uid 提供它的視圖:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

編輯:

另外,閱讀文件我意識到該map選項(1.10 及更高版本)可能更適合:

sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo

答案2

最後,我創建了一個與 mac os x 用戶具有相同 UID 的 linux 用戶,但它無法瀏覽 mac hfs+ 卷上我家中的每個目錄,因為很多文件都屬於 mac 用戶“未知”、UID 99(見http://googlemac.blogspot.com/2007/03/user-99-unknown.html)。

他們這樣做似乎是為了讓您在將磁碟區連接到另一台電腦時安裝並讀取磁碟區。當一般使用者查看 UID 99 擁有的那些文件時,他會看到這些文件,因為他是這些文件的擁有者。很奇怪。只有 root 才能看到它們原本的樣子。

因此,我在 Mac Os X 中重新啟動,使用具有管理權限的其他使用者登錄,並使用 chown -R 502:20 /Users/gerlos/* 更改我家中每個文件的所有者。現在我可以毫無問題地閱讀所有內容。

評論:

  • 在 Kubuntu 11.10 上建立新使用者的預設 kubuntu gui 工具無法建立 UID 小於 1000 的使用者。
  • 您可以使用終端機上的「id」指令知道您的使用者UID。
  • 在 mac os x 上,您需要成為 root 才能查看文件的真正擁有者。因此,如果您輸入“ls -n /Users/gerlos”和“sudo ls -n /Users/gerlos”,預計會出現不同的結果。

答案3

實際上,當我遇到這個問題時,我想做類似的事情。從您的第一篇文章來看,我的理解是,請求的掛載選項是詢問應該使用什麼使用者 uid,而不是 Linux 系統的預設值(即 uid 1000)。因此,您應該使用 502,它是您嘗試掛載的檔案系統的預期所有者。

我已經在自己的​​情況下對此進行了測試,效果很好,檔案系統的 uid 99 在我的系統之間共用。有了這個,我就不需要到處改變 uid 了。所以謝謝你的分享。這可能對你來說不再有什麼幫助,但可能對其他人有幫助。乾杯

相關內容