![在 Linux 中挂载 HFS+ 卷时绕过默认权限](https://linux22.com/image/1304213/%E5%9C%A8%20Linux%20%E4%B8%AD%E6%8C%82%E8%BD%BD%20HFS%2B%20%E5%8D%B7%E6%97%B6%E7%BB%95%E8%BF%87%E9%BB%98%E8%AE%A4%E6%9D%83%E9%99%90.png)
我有一台安装了 Snow Leopard 和 Kubuntu 11.10 的双启动 MacBook Pro,我想读(当我运行 Kubuntu 时,不关心写入)我的家庭 Mac 主目录。
我可以毫无问题地安装它,但是由于 uid 不同(Mac 上为 502,Kubuntu 上为 1000),Kubuntu 上的用户无法看到 Mac 用户拥有的 HFS+ 上的文件。
查看有关 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 的用户。请改用终端上的 adduser。
- 您可以使用终端上的“id”命令了解您的用户 UID。
- 在 mac os x 上,您需要 root 权限才能查看文件的实际所有者。因此,如果您输入“ls -n /Users/gerlos”和“sudo ls -n /Users/gerlos”,结果会有所不同。
答案3
实际上,当我遇到这个问题时,我正在寻找类似的东西。从您的第一篇文章来看,我的理解是,请求的挂载选项是询问应使用哪个用户 uid,而不是您的 linux 系统的默认值(即 uid 1000)。因此,您应该使用 502,这是您尝试挂载的文件系统的预期所有者。
我已经在自己的环境中测试过这个,效果很好,我的系统之间共享文件系统时,uid 为 99。这样我就不需要到处更改 uid 了。所以谢谢你的分享。这对你来说可能没什么用,但可能会对别人有所帮助。干杯