Linux で HFS+ ボリュームをマウントするときにデフォルトの権限をバイパスする

Linux で HFS+ ボリュームをマウントするときにデフォルトの権限をバイパスする

私は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

実は、この質問に出会ったとき、私も同じようなことをやろうと思っていました。最初の投稿から理解したところによると、要求されたマウント オプションは、Linux システムのデフォルト (つまり、uid 1000) の代わりにどのユーザー uid を使用するかを尋ねているということです。したがって、代わりに、マウントしようとしているファイル システムの予想される所有者である 502 を使用する必要があります。

私は自分の状況でこれをテストしましたが、システム間で共有するファイルシステムの uid 99 でうまくいきました。これで uid を変更する必要がなくなります。共有していただきありがとうございます。これはもうあなたにとってあまり役に立たないかもしれませんが、他の人の役に立つかもしれません。乾杯

関連情報