Pominięcie domyślnych uprawnień podczas montowania woluminów HFS + w systemie Linux

8

Mam MacBooka Pro z podwójnym uruchamianiem z systemem Snow Leopard i Kubuntu 11.10 i chcę czytać (nie przejmuj się pisaniem) mój domowy katalog Mac podczas uruchamiania Kubuntu.

Mogę go zamontować bez żadnych problemów, ale mój użytkownik na Kubuntu na nie widzi plików na HFS + należących do użytkownika mac, z powodu innego identyfikatora użytkownika (502 na Macu, 1000 na Kubuntu).

Przeglądając dokumenty jądra dotyczące HFS + przeczytałem, że:

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.

Próbowałem więc użyć tych opcji:

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

Ale wydaje się, że nic nie robią: nadal widzę te same uprawnienia, kiedy rozglądam się za pomocą ls -l. Mogę coś przeoczyć, jakiś pomysł?

Wiem, że mogę zmienić swój identyfikator użytkownika na Ubuntu, aby dopasować go do Mac OS X, ale wolę go unikać, jeśli to możliwe.

gerlos
źródło

Odpowiedzi:

9

bindfsjest odpowiedzią. Zajmie to już zamontowany system plików i wyświetli go z dowolnym identyfikatorem użytkownika:

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

Edytować:

Ponadto czytając dokument zdałem sobie sprawę, że mapopcja (1.10 i nowsze) może pasować lepiej:

sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo
Catskul
źródło
Bardzo fajne rozwiązanie. Rozwiązuje problem bez zmiany domyślnych zachowań systemów operacyjnych i umożliwia wiele innych opcji. Bądź ostrożny, jeśli system jest współdzielony z innymi użytkownikami, może to narażać prywatne pliki na nieoczekiwaną widownię.
gerlos
1
Tak. Byłem zaskoczony, że narzędzie do montowania systemu nie oferuje tej zdolności. Alternatywnie możesz użyć mapfunkcji bindfs, aby po prostu zmapować użytkownika 502 na 1000, co może być bezpieczniejsze i więcej tego, co zamierzałeś.
Catskul
Ponieważ nie mam reputacji do komentowania, zamierzam tylko zauważyć, że w odpowiedzi Catskul jest niewielki błąd, a = brak, powinno być: sudo bindfs --map = 502/1000 / media / diskFoo ~ / myUIDdiskFoo
J. Simon van der Walt
1

W końcu utworzyłem użytkownika linux z tym samym UID mojego użytkownika Mac OS X, ale nie może on przeglądać każdego katalogu w moim domu na Mac HFS + wolumin, ponieważ wiele plików było własnością użytkownika Mac „nieznany”, UID 99 (patrz http://googlemac.blogspot.com/2007/03/user-99-unknown.html ).

Wygląda na to, że zrobili to, aby umożliwić podłączenie i odczytanie woluminu po podłączeniu go do innego komputera. Gdy zwykły użytkownik patrzy na pliki posiadane przez UID 99, widzi je jako swojego właściciela. Trochę dziwne. Tylko root widzi je takimi, jakie są.

Ponownie uruchomiłem w Mac OS X, zalogowałem się z innym użytkownikiem z uprawnieniami administratora i użyłem chown -R 502: 20 / Users / gerlos / *, aby zmienić właściciela każdego pliku w moim domu. Teraz mogę czytać wszystko bez problemu.

Uwagi:

  • Domyślne narzędzie GUI Kubuntu do tworzenia nowych użytkowników w Kubuntu 11.10 nie może tworzyć użytkowników z UID mniejszym niż 1000. Zamiast tego użyj terminalu w programie adduser.
  • możesz znać swój identyfikator użytkownika za pomocą polecenia „id” na terminalu.
  • w systemie Mac OS X musisz być rootem, aby zobaczyć prawdziwego właściciela plików. Spodziewaj się różnych wyników, jeśli wpiszesz „ls -n / Users / gerlos” i „sudo ls -n / Users / gerlos”.
gerlos
źródło
Ta różnica w OSX między „prawdziwym” użytkownikiem unixa a użytkownikiem rozpoznanym przez Findera sprawiła mi wiele bólu głowy… może nawet sprawić, że niektóre aplikacje w OSX będą się dziwnie zachowywać (np. Dropbox nie zsynchronizuje twoich plików). Aby uniknąć problemów, zaloguj się do systemu OSX, otwórz terminal i upewnij się, że użytkownik unix jest właścicielem wszystkiego, co użytkownik OS X już posiada. Może czegoś nie rozumiem, ale z mojego doświadczenia wynika, że ​​używanie GUI nie wystarczy.
gerlos
1

Właściwie to chcę zrobić coś podobnego, kiedy natrafię na to pytanie. Rozumiem, patrząc od pierwszego postu, że żądana opcja montowania pyta, jakiego użytkownika należy użyć zamiast domyślnego systemu linux (tj. Uid 1000). Zamiast tego powinieneś używać 502, który jest oczekiwanym właścicielem systemu plików, który próbujesz zamontować.

Przetestowałem to w mojej własnej sytuacji i działało świetnie, z uid 99 dla systemu plików współdzielonego między moimi systemami. Dzięki temu nie będę musiał chodzić dookoła zmieniając UID. Dziękuję za udostępnienie. To może już nie być dla ciebie ważne, ale może pomóc komuś innemu. Twoje zdrowie

użytkownik245987
źródło
1
Dobrze. Najlepszym rozwiązaniem jest pozostawienie samych identyfikatorów UID i uprawnień, zamontowanie systemu plików HFS + w zwykły sposób, a następnie zamontowanie domu w systemie plików HFS + za pomocą bindfs, dzięki czemu wszystko wydaje się być własnością użytkownika systemu Linux. W ten sposób nigdy nie będziesz musiał używać niestandardowych identyfikatorów UID, ani zmieniać uprawnień w systemie plików HFS +, dzięki czemu zachowujesz domyślne zachowanie w obu systemach. Ponieważ możesz ponownie zamontować za pomocą bindfs domu każdego użytkownika, możesz zachować prywatne pliki nawet we współdzielonych systemach, zachowując je jednocześnie dla użytkowników.
gerlos