Dengan melewatkan izin default saat memasang volume HFS + di linux

8

Saya memiliki pro dual boot macbook dengan Snow Leopard dan Kubuntu 11.10, dan ingin membaca (tidak peduli menulis) direktori home Mac saya ketika saya menjalankan Kubuntu.

Saya dapat memasangnya tanpa masalah, tetapi pengguna saya di Kubuntu pada tidak dapat melihat file pada HFS + yang dimiliki oleh pengguna mac, karena uid berbeda (502 pada Mac, 1000 pada Kubuntu).

Melihat dokumentasi kernel tentang HFS + saya membacanya:

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.

Jadi saya mencoba menggunakan opsi ini:

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

Tapi mereka sepertinya tidak melakukan apa-apa: Saya masih melihat izin yang sama ketika saya melihat-lihat menggunakan ls-l. Saya mungkin kehilangan sesuatu, ada petunjuk?

Saya tahu bahwa saya dapat mengubah id pengguna saya di Ubuntu untuk mencocokkannya dengan Mac Os X, tapi saya lebih suka menghindarinya jika memungkinkan.

gerlos
sumber

Jawaban:

9

bindfsadalah jawabannya. Ini akan mengambil sistem file yang sudah terpasang dan memberikan pandangan tentangnya dengan mana pun yang Anda inginkan:

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

Edit:

Juga, membaca dokumen yang saya sadari bahwa mapopsi (1.10 dan yang lebih baru) mungkin lebih cocok:

sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo
Catskul
sumber
Solusi yang sangat keren. Ini memecahkan masalah tanpa mengubah perilaku default OS, dan memungkinkan lebih banyak opsi. Berhati-hatilah jika sistem dibagikan dengan pengguna lain, ini dapat mengekspos file pribadi ke pemirsa yang tidak terduga.
gerlos
1
Ya. Saya terkejut bahwa utilitas sistem mount tidak menawarkan kemampuan ini. Atau Anda dapat menggunakan mapfungsionalitas bindf untuk memetakan pengguna 502 hingga 1000 yang mungkin lebih aman dan lebih sesuai dengan yang Anda inginkan.
Catskul
Karena saya tidak memiliki reputasi untuk berkomentar, saya hanya akan mencatat bahwa ada kesalahan kecil dalam jawaban Catskul, sebuah = hilang, seharusnya: sudo bindfs --map = 502/1000 / media / diskFoo ~ / myUIDdiskFoo
J. Simon van der Walt
1

Pada akhirnya, saya membuat pengguna linux dengan UID yang sama dengan pengguna mac os x saya, tetapi tidak dapat menelusuri setiap direktori di rumah saya di mac hfs + volume karena banyak file dimiliki oleh pengguna mac "tidak diketahui", UID 99 (lihat http://googlemac.blogspot.com/2007/03/user-99-unknown.html ).

Tampaknya mereka melakukannya untuk membiarkan Anda memasang dan membaca volume Anda ketika Anda menghubungkannya ke komputer lain. Ketika pengguna biasa melihat file-file yang dimiliki oleh UID 99, ia melihatnya karena ia adalah pemiliknya. Cukup aneh. Hanya root yang melihat mereka apa adanya.

Jadi saya reboot di Mac Os X, login dengan pengguna yang berbeda dengan hak administratif dan menggunakan chown -R 502: 20 / Users / gerlos / * untuk mengubah pemilik setiap file di rumah saya. Sekarang saya bisa membaca semuanya tanpa masalah.

Catatan:

  • alat kubuntu gui default untuk membuat pengguna baru di Kubuntu 11.10 tidak dapat membuat pengguna dengan UID kurang dari 1000. Gunakan adduser di terminal sebagai gantinya.
  • Anda dapat mengetahui UID pengguna Anda menggunakan perintah "id" di terminal.
  • pada mac os x, Anda harus melakukan root untuk melihat pemilik sebenarnya dari file tersebut. Jadi, harapkan hasil yang berbeda jika Anda mengetik "ls -n / Users / gerlos" dan "sudo ls -n / Users / gerlos".
gerlos
sumber
Perbedaan OSX antara pengguna unix "asli" dan pengguna yang dikenali oleh Finder memberi saya banyak sakit kepala ... bahkan dapat membuat beberapa aplikasi di OSX berperilaku aneh (mis. Dropbox tidak akan menyinkronkan file Anda). Untuk menghindari masalah, masuk ke sistem OSX Anda, buka terminal dan pastikan pengguna unix Anda memiliki semua yang dimiliki oleh pengguna OS X Anda. Mungkin saya tidak mengerti sesuatu, tetapi dalam pengalaman saya menggunakan GUI tidak cukup.
gerlos
1

Sebenarnya saya ingin melakukan hal serupa ketika saya menemukan pertanyaan ini. Apakah pemahaman saya, melihat dari posting pertama Anda, bahwa opsi mount yang diminta menanyakan pengguna apa yang harus digunakan daripada default sistem linux Anda (yaitu uid 1000). Jadi alih-alih Anda harus menggunakan 502 yang merupakan harapan pemilik sistem file yang Anda coba untuk me-mount.

Saya telah menguji ini dalam situasi saya sendiri, dan itu bekerja dengan baik, dengan menggunakan sistem file untuk dibagikan di antara sistem saya. Dengan ini saya tidak perlu berkeliling mengganti cairan. Jadi terima kasih sudah berbagi. Ini mungkin tidak terlalu berarti bagi Anda lagi tetapi dapat membantu orang lain. Bersulang

pengguna245987
sumber
1
Baik. Solusi terbaik adalah meninggalkan UID dan izin, pasang sistem file HFS + Anda seperti biasanya, dan kemudian pasang rumah Anda di bawah sistem file HFS + menggunakan bindf, sehingga semuanya tampak dimiliki oleh pengguna linux Anda. Dengan cara ini Anda tidak perlu menggunakan UID khusus, tidak juga untuk mengubah izin di sistem file HFS +, sehingga Anda mempertahankan perilaku default di kedua sistem. Karena Anda dapat melakukan remount dengan bindf rumah masing-masing pengguna, Anda dapat menyimpan file pribadi bahkan dalam sistem bersama, tetap membuatnya dapat diakses oleh pengguna.
gerlos