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


8

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と一致するように変更できることはわかっていますが、できればそれを避けたいと思います。

回答:


9

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

非常にクールなソリューション。OSのデフォルトの動作を変更せずに問題を解決し、さらに多くのオプションを可能にします。システムが他のユーザーと共有されている場合は注意してください。これにより、プライベートファイルが予期しないユーザーに公開される可能性があります。
gerlos 2013年

1
うん。システムマウントユーティリティがこの機能を提供していないことに驚きました。または、bindfsのmap機能を使用して、ユーザー502を1000に単純にマップすることもできます。
Catskul 2013年

コメントする評判がないので、Catskulの答えに小さな間違いがあることを指摘しておきます。=が欠落しています。 myUIDdiskFoo
J.サイモンファンデルウォルト

1

最後に、mac os xユーザーと同じUIDを使用してLinuxユーザーを作成しましたが、mac hfs +ボリューム上にある私の家のすべてのディレクトリを参照することはできません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」を入力した場合は、異なる結果が予想されます。

「実際の」UNIXユーザーとFinderによって認識されたユーザーとの間のOSXの違いは、私に多くの頭痛の種を与えました... OSX上のいくつかのアプリが奇妙に動作することさえあります(例えば、Dropboxはファイルを同期しません)。問題を回避するには、OSXシステムにログインしてターミナルを開き、UNIXユーザーがOS Xユーザーが既に所有しているすべてのものを所有していることを確認してください。多分私は何かを理解していませんが、私の経験ではGUIの使用では十分ではありません。
gerlos、2013

1

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

私は自分の状況でこれをテストしましたが、ファイルシステムをシステム間で共有するためのuid 99で、うまく機能しました。これにより、uidの変更を回避する必要がなくなります。共有してくれてありがとう。これはもうあなたにとってはあまり役に立ちませんが、誰かを助けるかもしれません。乾杯


1
正しい。最善の解決策は、UIDとアクセス許可をそのままにし、HFS +ファイルシステムを通常どおりマウントし、bindfsを使用してHFS +ファイルシステムの下に家をマウントすることです。これにより、すべてがLinuxユーザーによって所有されているように見えます。この方法では、カスタムUIDを使用する必要がなく、HFS +ファイルシステムのアクセス許可を変更する必要もないため、両方のシステムでデフォルトの動作を維持できます。bindfsを使用して各ユーザーのホームを再マウントできるので、共有システム内でもプライベートファイルを保持しながら、ユーザーがアクセスできるようにすることができます。
gerlos、2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.