Jak zarządzać uprawnieniami do udostępnionego woluminu dla OSX i Ubuntu

8

Na moim komputerze Mac używam nieprzypisanej partycji HFS do udostępniania plików między OSX 10.8 a Ubuntu 12.04.

Na początku była to miła myśl, ponieważ Time Machine automatycznie wykona kopię zapasową woluminu w OSX, ale wkrótce zauważyłem, że OSX i Ubuntu bałaganią za pozwoleniem w sposób, który sprawia, że ​​wszystko jest dla mnie bałagan.

Tak więc, aby w pełni przeglądać i zmieniać pliki, nadal używam chmoduprawnień, które pozwolą mi w pełni korzystać z dokumentu. Ale nie rozumiem, dlaczego muszę zachować stosowania zmian w kółko .

Czy można na stałe ustawić jakieś zezwolenie, aby oba systemy operacyjne były stale przestrzegane?

Chyba 777 zadziała, ale pomyślałem, że nie jest to mądre. Ale dopóki „inni” nie uzyskają pełnego dostępu (trzecia siódemka), widzę ikonę kłódki na pliku w Ubuntu.

Seth
źródło
1
Czy masz tę samą nazwę użytkownika zarówno w systemie OS X, jak i Ubuntu? Jeśli masz różne nazwy użytkowników, możesz spróbować dodać nazwę użytkownika Ubuntu do swojej grupy w systemie OS X i odwrotnie . W ten sposób potrzebujesz tylko 774uprawnień.
edwin
@edwin Dzięki za wskazówkę. Jak dodać nazwę użytkownika do mojej grupy? Czy używanie 777 jest rozsądne czy niebezpieczne?

Odpowiedzi:

12

Nazwy użytkowników są nieistotne. Uprawnienia w systemach plików macierzystych dla systemu plików HFS + i Linux są przechowywane w postaci identyfikatorów użytkowników (UID), które są liczbami powiązanymi z nazwami użytkowników. W Ubuntu, podobnie jak w większości współczesnych dystrybucji Linuksa, pierwszy użytkownik otrzymuje domyślnie UID 1000. W OS X pierwszy użytkownik otrzymuje domyślnie identyfikator UID 501. Dlatego podczas udostępniania mediów, które kodują wartości UID, wartości UID prawdopodobnie się nie zgadzają.

Jednym ze sposobów rozwiązania tego jest ustawienie luźnych uprawnień (wartość trybu, jak w rwxr-xr-x, lub 755 w ósemce). Zauważ, że ósemkowy kod uprawnień nie jest taki sam jak wartość UID. W dowolnym systemie operacyjnym można ustawić domyślne uprawnienia używane do plików za pomocą umaskpolecenia, które określa wartość bitu do usunięcia z uprawnień do plików. Na przykład umask 022usuwa uprawnienia do zapisu dla grupy i inne uprawnienia, w wyniku czego 755 (rwxr-xr-x) uprawnienia do nowych plików (lub 644, jeśli coś usuwa bit uprawnień do wykonywania, co jest powszechną praktyką w przypadku plików). Jest to jednak głównie narzędzie wiersza polecenia; jeśli w dużej mierze jesteś użytkownikiem GUI, musisz znaleźć inne narzędzie do wykonania zadania, prawdopodobnie związane z domyślnymi ustawieniami środowiska pulpitu. Może to być niejasne i źle udokumentowane. Także ustawianie luźnych uprawnień w ten sposób może mieć wady bezpieczeństwa, szczególnie jeśli twój jest systemem dla wielu użytkowników.

Lepszym rozwiązaniem jest zsynchronizowanie identyfikatorów UID konta w systemie Linux i OS X. Możesz łatwo zmienić wartość UID w systemie Linux za pomocą usermodpolecenia, jak w:

usermod -u 501 dale

To polecenie ustawia identyfikator UID na dale501. Istnieją jednak pewne istotne zastrzeżenia:

  • Przed zmodyfikowaniem należy wylogować się z konta, które modyfikujesz. Próba zmodyfikowania używanego konta spowoduje, że konto zacznie się dziwnie zachowywać.
  • usermodmusi być użyty jako root. Możesz go wykonać za pośrednictwem sudo, ale robiąc to z konta, które modyfikujesz, jest skrajnie niewskazane. Dlatego musisz podać roothasło i zalogować się rootbezpośrednio lub użyć sudokonta drugiego użytkownika.
  • usermodKomenda nie zmieni własność wszystkich plików posiadanych przez danego użytkownika. Aby dostosować własność tych plików, musisz je zlokalizować, a następnie zmienić ich własność za pomocą chown. Większość plików będzie w katalogu domowym użytkownika, więc chown -R dale: /home/dalewpisane tak , jak rootpo zmianie daleidentyfikatora UID, zmieni większość daleplików tak, aby używały nowego numeru UID. Niektóre pliki użytkownika mogą jednak znajdować się gdzie indziej. Wpisanie find / -uid 1000znajdzie wszystkie pliki, które używają starego UID (zakładając, że był to 1000). Pamiętaj, że wykonanie tego findpolecenia prawdopodobnie potrwa kilka minut. Aby przyspieszyć, odmontuj wszystkie systemy plików, w których masz pewność, że nie znajdzie żadnych trafień, takich jak woluminy FAT lub NTFS.
  • Jeśli uzyskujesz dostęp do woluminów FAT lub NTFS, ich wartości UID są określane przez opcje w czasie montowania. Jeśli korzystasz z menedżera plików GUI, istnieje prawdopodobieństwo, że wartość UID jest ustawiona na tego, kto uruchamia menedżera plików, więc nie musisz robić nic specjalnego. Jeśli jednak montujesz wolumin za pomocą /etc/fstabpozycji, może być konieczne dostosowanie podanej wartości UID.
  • Ubuntu przechowuje minimalną wartość, której używa dla identyfikatorów UID /etc/login.defs. Jeśli nie zmienisz UID_MINwartości w tym pliku, prawdopodobnie odkryjesz, że Twoje konto „zniknie” z ekranu logowania GUI i być może z innych systemów. Dlatego powinieneś edytować ten plik.

Teoretycznie można zmienić identyfikator UID konta OS X w podobny sposób, aby osiągnąć ten sam cel. Jednak mniej znam się na narzędziach do zarządzania kontem OS X, więc nie mogę podać jednoznacznych instrukcji. Dostosowanie wartości OS X miałoby tę zaletę, że nie trzeba dostosowywać UID_MINw systemie Linux.

Jeśli masz wiele kont na swoim komputerze, powinieneś je wszystkie dostosować, aby były zsynchronizowane we wszystkich instalacjach systemu operacyjnego.

Jeszcze jeden punkt: wartość identyfikatora grupy (GID) jest przechowywana w podobny sposób. IIRC, Ubuntu przypisuje wartość GID dla każdego konta, która jest identyczna z jego wartością UID. Domyślnie nie pamiętam, co robi OS X. Możesz dostosować wartości GID dla dwóch systemów operacyjnych w sposób analogiczny do zmian UID, ale nie jest to tak ważne, jak dostosowanie wartości UID.

EDYCJA: Jeśli chcesz zmienić swój UID (i GID, jeśli to pożądane) w macOS / OS X zamiast w Ubuntu, możesz to zrobić. Ponieważ ta modyfikacja w systemie macOS wykracza poza zakres tej witryny, po prostu odsyłam do kilku stron, które zawierają procedury umożliwiające wykonanie tego w systemie macOS:

Rod Smith
źródło
Wow, dziękuję! To jest naprawdę dobrze napisana kompleksowa odpowiedź - wyjaśniająca pełny kontekst problemu! To rozwiązanie pomogło mi uzyskać bezbłędną partycję współdzieloną bez żadnych kompromisów. Początkowo nadal występował problem własności pliku: „zignorowanie własności tego woluminu” w OSX nie dałoby mi dostępu do zapisu do nowo utworzonych plików OSX, gdy działał pod Ubuntu (ikona kłódki) i odwrotnie. Skończyłem więc konfigurowanie nowego konta w Ubuntu przy użyciu tej samej nazwy użytkownika co w OSX i ponowne zmienianie UID.
Teraz mam pełny dostęp z obu systemów operacyjnych do istniejących i nowo tworzonych plików bez konieczności zmiany ograniczeń dostępu. Ponieważ jest to przykładowa odpowiedź, dam ci nagrodę, gdy pytanie kwalifikuje się do nagrody. ;-)
Po wykonaniu instrukcji podjąłem próbę zalogowania się w Ubuntu. Kiedy nacisnąłem Enter, przez sekundę widziałem czarny ekran, a potem wylądowałem z powrotem na ekranie logowania. Po przywróceniu czegokolwiek do standardowego 1000 z mojego konta tymczasowego mogłem zalogować się ponownie. Masz pomysł, dlaczego nie mogłem zalogować się przy użyciu nowego identyfikatora użytkownika?
borisdiakur
Jeśli zaniedbałeś zmiany uprawnień do własnego katalogu domowego, może to być przyczyną problemu. Jeśli używasz 13.10, możliwe jest również, że coś się zmieniło w Ubuntu, co powoduje problemy, jeśli się nie dostosujesz UID_MIN.
Rod Smith
1
AKTUALIZACJA: właśnie zrobiłem usermod w moim systemie i jakoś pozwolenie mojego katalogu domowego nie musiało zostać zmienione !? Wszystko działa ładnie po tylko usermod (jako root).
krumpelstiltskin
0

Przekonałem się, że czasami możesz kliknąć folder, który chcesz udostępnić, i nacisnąć klawisze Command + I. Następnie kliknij blokadę i wprowadź hasło, jeśli nie jest odblokowane, a następnie w miejscu, w którym jest napisane „wszyscy”, wybierz opcję odczytu i zapisu.

Kolejną rzeczą, która działa, jest skonfigurowanie folderu jako „folderu współdzielonego”, można to zrobić w panelu preferencji udostępniania w preferencjach systemowych.
Przejdź do preferencji systemowych> udostępnianie> udostępnianie plików. Następnie udostępnij, aby pole udostępniania plików było zaznaczone, i dodaj folder, który chcesz udostępnić, za pomocą przycisku plus. Następnie możesz zmienić uprawnienia do odczytu zapisu.

JEDNA UWAGA: użycie drugiej opcji spowoduje również otwarcie komputera, aby umożliwić dostęp do wybranego folderu przez Internet (tylko podczas uruchamiania w systemie OS X) !! Udostępnij, że masz bezpieczne hasło i prawdopodobnie je wyłączysz w miejscach publicznych (nie zapomnij zdobyć kapelusza z folii aluminiowej!)

aChipmunk
źródło
Działa to w obu przypadkach, ale użyję tylko pierwszej opcji. Jednak zezwolenie na dostęp „wszystkim” (tj. Zezwolenie 777) wydaje się zbyt radykalne - czy nie jest? Czy to jest bezpieczne?
1
Cóż, nie jest to na pewno zalecane. „Każdy” będzie mógł modyfikować i czytać dokumenty z tymi uprawnieniami (ale myślę, że to głównie rzeczy uniksowe). Jest zdecydowanie nieco bezpieczniejszy w użyciu 774.
edwin
0

Otwórz terminal i:

W systemie OS X spróbuj tego

sudo dscl / -create /Users/<ubuntu-username>
sudo dscl / -append /Groups/<os-x-username> GroupMembership <ubuntu-username>

W Ubuntu uruchom to

sudo adduser --system --no-create-home --ingroup <ubuntu-username> <os-x-username>

Teraz powinieneś być w stanie używać, 774a nawet 770uzyskiwać uprawnienia do plików.

edwin
źródło
To nie działa Polecenie OSX też nie działa. Ale udało mi się dodać użytkownika ubuntu przez interfejs GUI w OSX. Po dodaniu użytkownika innego systemu operacyjnego do działającego systemu operacyjnego i zmianie uprawnień na 774 w obu systemach operacyjnych, Ubuntu nadal nie może uzyskać pełnego dostępu do wszystkich plików na wspólnej partycji. Niektóre podkatalogi na przykład nie mogę otworzyć (uprawnienie to 774). Musiałem więc zmienić go na 777, aby go otworzyć. Czy te łaskawe pozwolenia są bezpieczne?
Przynajmniej w Ubuntu polecenie powinno działać. Próbowałem sam przed dodaniem odpowiedzi. Czy na pewno zastąpiłeś <ubuntu-username>swoją rzeczywistą nazwę użytkownika w Ubuntu (idem dla <os-x-usernanme>)? Czy możesz bardziej szczegółowo określić, jakie błędy popełnił system OS X podczas próby uruchomienia tego polecenia?
edwin
Powiedziałem tylko, że polecenie nie działa w OSX. Jeśli dobrze pamiętam, polecenie addusernie kończy się.
Zredagowałem na to odpowiedź. Spróbuj. Nie jestem pewien, ponieważ nie znam zarządzania użytkownikami OS X. W OS X można również użyć GUI do utworzenia użytkownika Ubuntu (z nazwą użytkownika używaną w Ubuntu), a następnie dodania go do faktycznej grupy użytkowników OS X.
edwin
Nie ważne. OSX oferuje prosty GUI podczas korzystania z CMD + I, w którym można bardzo łatwo tworzyć i dodawać użytkowników. Ale to jednak nie rozwiązało problemu. Skończyło się na tym, że wykorzystałem 777 uprawnień.