web-dev-qa-db-ja.com

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

SnowLeopardとKubuntu11.10を搭載したデュアルブートMacbookProを持っていて、自宅のMacホームディレクトリを読み取り(書き込みは気にしない)したいKubuntuを実行しています。

問題なくマウントできますが、uid(Macでは502、Kubuntuでは1000)が異なるため、Kubuntuonのユーザーは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をMacOs Xと一致するように変更できることは知っていますが、可能であれば避けたいと思います。

8
gerlos

bindfsがその答えです。すでにマウントされているファイルシステムを取得し、必要なuidでそのビューを提供します。

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

編集:

また、 doc を読むと、mapオプション(1.10以降)の方が適している可能性があることに気付きました。

Sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo
9
Catskul

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

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

1
user245987

結局、mac os xユーザーと同じUIDでlinuxユーザーを作成しましたが、多くのファイルがmacユーザー "unknown"、UIDによって所有されていたため、mac hfs +ボリューム上の自宅のすべてのディレクトリを参照できません。 99( http://googlemac.blogspot.com/2007/03/user-99-unknown.html を参照)。

別のコンピューターに接続したときにボリュームをマウントして読み取ることができるようにするために、そうしているようです。通常のユーザーがUID99が所有するファイルを見ると、自分が所有者であることがわかります。かなり奇妙。 rootだけがそれらをそのまま見ます。

そこで、Mac Os Xで再起動し、管理者権限を持つ別のユーザーでログインし、chown -R 502:20/Users/gerlos/*を使用して、自宅のすべてのファイルの所有者を変更しました。今、私は問題なくすべてを読むことができます。

備考:

  • kubuntu11.10で新しいユーザーを作成するためのデフォルトのkubuntuGUIツールは、UIDが1000未満のユーザーを作成できません。代わりに、ターミナルでadduserを使用してください。
  • ターミナルの「id」コマンドを使用して、ユーザーUIDを知ることができます。
  • mac os xでは、ファイルの実際の所有者を確認するには、rootである必要があります。したがって、「ls -n/Users/gerlos」と「Sudols-n/Users/gerlos」と入力すると、異なる結果が期待されます。
1
gerlos