Jak zachować własność i uprawnienia w Dropbox?

9

Mam dwie maszyny, Mac i PC z systemem Linux, które próbuję zsynchronizować pewien plik między Dropbox.

Jeden z plików, który synchronizuję, musi być zapisywalny przez innego użytkownika (inny UID na tym samym komputerze, nie odnoszący się do innego użytkownika Dropbox) poza mną. Mówiąc ściślej, ten inny UID jest tak naprawdę demonem. Tak więc albo plik musi być własnością tego innego użytkownika, albo wymagane jest pozwolenie na zapis dla „grupy” i / lub „innego”. Początkowo ustawiłem go w ten sposób na obu komputerach. Ponadto katalog zawierający plik jest już własnością (chmod 777) użytkownika, który musi mieć dostęp do zapisu do pliku.

Jednak za każdym razem, gdy plik jest synchronizowany z jednego pola do drugiego, wydaje się, że Dropbox całkowicie ignoruje oba zestawy uprawnień i zmienia uprawnienia do nowo zaktualizowanego pliku, który jest własnością mnie z uprawnieniami 0644 (rw dla mnie, r dla wszystkich innych ). Jeśli plik nie jest własnością, nawet zmienia własność z powrotem na mnie! W rezultacie drugi użytkownik nie ma już uprawnień do zapisu, dopóki ręcznie nie wejdę i nie zmienię pliku chmod.

Dodatkowe rzeczy, które próbowałem i które nie zadziałały:

  1. upewniłem się, że konto użytkownika (dla „innego użytkownika”) na obu komputerach ma ten sam UID. Nie jestem pewien, dlaczego byłoby to konieczne, ponieważ moje konto podstawowe nie ma tego samego identyfikatora UID na obu komputerach.

  2. chmod u+s <dir>i chmod g+s <dir>gdzie jest katalog zawierający dany plik.

  3. zmiana właściciela pliku na innego użytkownika i umieszczenie go poza katalogiem Dropbox oraz utworzenie dowiązania symbolicznego do pliku w katalogu Dropbox. Dropbox faktycznie usuwa dowiązanie symboliczne, pozostawia oryginalny plik (poza katalogiem Dropbox) bez zmian i tworzy nową kopię pliku, w którym kiedyś znajdowało się dowiązanie symboliczne!

Jak mogę skonfigurować ustawienia, aby zachować moje uprawnienia i / lub własność?

Michał
źródło

Odpowiedzi:

5

Ok, oto rozwiązanie, które znalazłem. To, czy będzie to działać w przyszłych wersjach Dropbox, nie jest pewne. Otworzyłem zgłoszenie serwisowe w usłudze Dropbox, aby spróbować rozwiązać problem.

Ogólnie rzecz biorąc, rozwiązanie to połączenie dwóch rzeczy:

  1. Ustawienie umask dla procesu Dropbox tak, aby nowo tworzone pliki miały uprawnienia 0660. Jest to odczyt / zapis użytkownika, odczyt / zapis grupy, inny brak.
  2. Ustawienie grupy dla nowo tworzonych plików na grupę, która musi mieć dostęp do zapisu do danych plików.

To rozwiązanie będzie dotyczyć wszystkich plików w folderze Dropbox, a nie tylko jednego pliku. W moim przypadku jest to dopuszczalne.

Pod Linuksem modyfikuję /etc/init.d/dropboxskrypt startowy, aby wiersz wywołujący dropbox jako demon brzmiał:

HOME="$HOMEDIR" start-stop-daemon --umask 0006 -b -o -c $dbuser:$dbgrp -S -u $dbuser -x $HOMEDIR/$DAEMON

Dodanie zakończeń --umask 0006powoduje ustawienie umask, a :$dbgrpczęść opcji -c kończy ustawienie grupy, do której należy demon.

Po stronie Maca uruchamiam następujące polecenia:

ps aux | grep -i dropbox

Z tego widzę opcje wiersza poleceń, które uruchomiły Dropbox, a następnie wyodrębniłem $ mydropboxid użyty później. Następnie zamykam Dropbox i otwieram wiersz poleceń i wprowadzam następujące polecenia:

umask 0006
/Applications/Dropbox.app/Contents/MacOS/Dropbox -psn_0_$mydropboxid &
exit

Planuję zautomatyzować powyższe polecenia w pewnym momencie, aby nie musiałem ich ponownie uruchamiać przy każdym ponownym uruchomieniu komputera.

Obsługuje to ustawianie maski dla nowo tworzonych plików, aby grupa dla pliku miała dostęp do zapisu. Aby jednak poprawnie ustawić grupę, muszę ustawić katalog podręczny Dropbox - do tej pory wystarczyło to zrobić tylko raz:

sudo chgrp -R $dbgrp ~/Dropbox/.dropbox.cache
sudo chmod -R g+s ~/Dropbox/.dropbox.cache

Wygląda na to, że wszystkie nowe pliki są najpierw tworzone w katalogu ~ / Dropbox / .dropbox.cache, więc powyższe polecenia dają tym nowym plikom odpowiednią własność i uprawnienia, że ​​nowe pliki utworzone przez Dropbox mają odpowiednią grupę.

Michał
źródło
Ciekawy. Czy możesz wyjaśnić nieco więcej, co robi ta linia i ogólnie zmodyfikowany plik?
nixda
Start-stop-daemon to narzędzie Linuksa, które pozwala kontrolować różne ustawienia działania demona. Większość parametrów przekazywana jest w zmiennych powłoki. Kluczowymi modyfikacjami są dodanie „--umask 0006”, które pozostawia uprawnienia R / W dla użytkownika i grupy, ale usuwa je dla innych, oraz dodanie parametru grupy („: $ dbgrp”) do parametru -c, który ustawia UID / GID, jak działa proces demona). Polecenie Mac jest podobne, ale nie znalazłem podobnego narzędzia, więc polega na skonfigurowaniu tych ustawień w powłoce, która uruchamia Dropbox.
Michael
Czy dotyczy to również bieżącej wersji Dropbox? Mój skrypt dropboxd PAR=$(dirname $(readlink -f $0)) OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH LD_LIBRARY_PATH=$PAR${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH exec $PAR/dropbox $@znajduje się w ./.dropbox-dist/ i jest zarządzany za pomocą dostarczonego skryptu python
rower
@ bicykl Nie pojawił się monit o aktualizację mojego klienta Dropbox od czasu opracowania tego rozwiązania.
Michael
@Michael, czy Dropbox kiedykolwiek odpowiedział na twoje zgłoszenie serwisowe?
bbozo
0

Umieść ten plik we własnym folderze i udostępnij ten folder innemu użytkownikowi. W ten sposób edytują najnowszą wersję tak jak Ty. Uważaj, aby nie pracować nad tym w tym samym czasie.

CodeMonkey
źródło
1
Aktualizacja mojego pierwotnego pytania w celu odzwierciedlenia faktu, że folder zawierający dany plik jest już własnością drugiego użytkownika. Nie ma znaczenia, Dropbox nadal ignoruje bieżącą własność / uprawnienia i resetuje je za każdym razem, gdy plik jest synchronizowany z maszyną.
Michael
0

Jeśli skopiujesz plik między dwoma komputerami, oprogramowanie wykonujące kopiowanie decyduje o uprawnieniach do kopiowania. Do tego, co robisz, potrzebujesz dość szczegółowego mapowania uprawnień. Funkcje mapowania uprawnień Dropbox są ograniczone do zachowania uprawnień, jeśli oba systemy mają ten sam system operacyjny . Nie można zagwarantować określonych wyników kopiowania między dwoma różnymi systemami operacyjnymi.

Nawet jeśli możesz wymyślić jakiś sposób korzystania z Dropbox tak, jak chcesz, odradzam poleganie na nim. Nieudokumentowane dziwactwa oprogramowania mogą zniknąć bez uprzedzenia. Musisz przyjrzeć się narzędziom do przesyłania plików zaprojektowanym z myślą o Twoim przypadku użycia. Moim pierwszym wyborem będzie rsync , który jest standardem w dystrybucjach Linuksa i łatwy do zainstalowania w systemie Windows, szczególnie jeśli masz Cygwin . A Cygwin jest ogólnie przydatny dla osób, które muszą pracować zarówno z systemem Windows, jak i Linux!

Oczywiście rsync wymaga bezpośredniego połączenia - nie ma centralnego serwera, takiego jak Dropbox. Sposób radzenia sobie z tym zależy od szczegółów konfiguracji sieci.

Izaak Rabinowicz
źródło
Tak, zgadzam się z tym, co mówisz o dziwactwach. Moim zdaniem jest to często dobry powód, aby przestać aktualizować oprogramowanie - jeśli robi to, co chcesz, po co ryzykować, że nowsze wersje to zepsują!
Michael
rsync nie jest dwukierunkowy i nie aktualizuje się automatycznie przy każdej zmianie pliku.
Michael
@Michael Nie zawsze masz wybór dotyczący aktualizacji oprogramowania; kiedy jest oparty na chmurze (jak Dropbox), nigdy nie masz wyboru. I trudno jest zrozumieć, dlaczego dwukierunkowość lub automatyczne kopiowanie są niezbędne do tego, co próbujesz zrobić.
Izaak Rabinovitch
Tak długo, jak usługa pozostaje wstecznie kompatybilna z poprzednim klientem, masz wybór. I chyba że Dropbox może zmusić wszystkich do natychmiastowej aktualizacji, wątpię, aby mogli zrobić coś takiego, jak wprowadzenie zmian w protokole na niskim poziomie, które złamałyby starych klientów. Jedyny sposób, w jaki widzę, że mogliby to zrobić, to jakieś przejście.
Michael
Jeśli chodzi o to, co próbuję zrobić, staram się utrzymywać zestaw plików na dwóch różnych komputerach i móc modyfikować jeden z nich w dowolnym momencie, a następnie przejść do drugiego wkrótce i odebrać gdzie skończyłem, bez konieczności robienia czegokolwiek ręcznego, jak uruchomienie rsync. Jest tak głównie dlatego, że mogę wykonać modyfikację zdalnie (np. Przez interfejs sieciowy), a istnieją takie problemy, jak zapory ogniowe i opóźnienia, które utrudniają utrzymanie pojedynczej scentralizowanej kopii danych.
Michael