Як зберегти право власності та дозволи в Dropbox?


9

У мене є дві машини, Mac та ПК під управлінням Linux, які я намагаюся тримати певний файл синхронізованим між Dropbox.

Один з файлів, які я синхронізую, повинен записувати інший користувач (інший UID на одній машині, не посилаючись на іншого користувача папки), крім мене. Якщо бути більш конкретним, цей інший UID насправді демон. Отже, або файл повинен належати тому іншому користувачеві, або ж необхідний дозвіл на запис для "групи" та / або "іншого". Спочатку я встановив це так на обох машинах. Крім того, каталог, що містить файл, вже належить користувачеві (chmod 777) користувачеві, якому потрібно мати доступ до запису до файлу.

Однак щоразу, коли файл синхронізується з одного поля в інше, виявляється, що Dropbox повністю ігнорує обидва набори дозволів і змінює дозволи на нещодавно оновлений файл, який належить мені, з дозволами 0644 (rw для мене, r для всіх інших ). Якщо файл не належить мені, він навіть змінює право власності на себе! Як результат, інший користувач більше не має дозволу на запис, доки я вручну не заходжу і повторно chmod файл.

Додаткові речі, які я спробував, які не спрацювали:

  1. переконайтесь, що обліковий запис користувача (для "іншого користувача") на обох машинах має однаковий UID. Не впевнений, чому це було б необхідно, оскільки мій основний обліковий запис не має однакового UID на обох машинах.

  2. chmod u+s <dir>і chmod g+s <dir>де знаходиться каталог, що містить відповідний файл.

  3. зміна права власності на файл на іншого користувача та розміщення його поза каталогом Dropbox та створення символьного посилання на файл у каталозі Dropbox. Dropbox фактично видаляє симпосилання, залишає вихідний файл (поза каталогом Dropbox) незмінним і створює нову копію файлу, де раніше було посилання!

Як я можу налаштувати речі так, щоб мої дозволи та / або право власності зберігалися?

Відповіді:


5

Гаразд, ось знайдене нами рішення. Чи буде це працювати з майбутніми версіями Dropbox, невідомо. Я відкрив запит на обслуговування з Dropbox, щоб спробувати вирішити проблему.

Загалом, рішення - це поєднання двох речей:

  1. Налаштування umask для процесу Dropbox таким чином, щоб новостворені файли мали дозвіл 0660. Це користувач читає / записує, читає / записує групу, інші - ні.
  2. Встановлення групи для новостворених файлів у групу, якій потрібно мати доступ для запису до відповідних файлів.

Це рішення застосовуватиметься до всіх файлів у папці Dropbox, а не лише до одного файлу. У моєму випадку це прийнятно.

У Linux я /etc/init.d/dropboxзмінюю скрипт запуску, щоб рядок, що викликає папку, як демон, читав:

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

Додавання --umask 0006завершення встановлює umask, а :$dbgrpчастина параметра -c виконує встановлення групи, до якої належить демон.

З боку Mac я запускаю такі команди:

ps aux | grep -i dropbox

З цього я бачу параметри командного рядка, які запустили Dropbox, і з цього я витягую $ mydropboxid, що використовувався пізніше. Потім я виходжу з Dropbox і відкриваю командний рядок і ввожу такі команди:

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

Я планую автоматизувати вищезазначені команди в якийсь момент, щоб мені не довелося повторно запускати ці моменти, коли моя машина перезавантажиться.

Це обробляє налаштування маски для новостворених файлів, щоб група для файлу мала доступ до запису. Однак для правильного набору групи мені потрібно встановити жорсткий каталог кешу Dropbox - це поки що потрібно зробити лише один раз:

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

Здається, що всі нові файли спочатку створюються в каталозі ~ / Dropbox / .dropbox.cache, тому наведені вище команди надають цим новим файлам належне право власності та дозволи, що нові файли, створені Dropbox, мають правильну групу.


Цікаво. Чи можете ви пояснити трохи більше, що робить цей рядок та модифікований файл взагалі?
nixda

Демон-пуск-стоп - це утиліта Linux, яка дозволяє керувати різними налаштуваннями, під якими працює демон. Більшість параметрів передаються змінними оболонки. Ключовими модифікаціями є додавання "--umask 0006", яке залишає дозвіл R / W для користувача та групи, але видаляє його для інших, та додавання параметру групи (": $ dbgrp") до параметра -c, який встановлює UID / GID, процес демона працює як). Команда Mac схожа, але я не знайшов подібної утиліти, тому покладається на встановлення цих налаштувань у оболонці, в якій працює Dropbox.
Майкл

Чи застосовується це і до поточної версії "dropbox"? Мій сценарій 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 $@і знаходиться в ./.dropbox-dist/ і керується за допомогою наданого сценарію python
велосипеда

@bicycle Мене не запропонувало оновити клієнта, який випускає папку, оскільки я знайшов це рішення.
Майкл

@Michael, чи Dropbox коли-небудь відповідав на ваш запит на обслуговування?
bbozo

0

Помістіть цей файл у свою власну папку та поділіться цією папкою з іншим користувачем. Таким чином вони редагують останню версію, як і ви. Будьте обережні, щоб не працювати над цим одночасно.


1
Оновлення мого початкового запитання, щоб відобразити той факт, що папка, що містить відповідний файл, вже належить іншому користувачеві. Це не має ніякої різниці, Dropbox все ще ігнорує поточні права власності / дозволи та скидає їх щоразу, коли файл синхронізується з машиною.
Майкл

0

Якщо ви копіюєте файл між двома комп'ютерами, програмне забезпечення, яке виконує копіювання, вирішує, які дозволи на копію є. Для того, що ви робите, вам потрібно трохи чітко детальне відображення дозволів. Функції відображення дозволів Dropbox обмежуються збереженням дозволів, якщо обидві системи працюють на одній ОС . Ніякі конкретні результати не гарантуються для копіювання між двома різними ОС.

Навіть якщо ви зможете знайти якийсь спосіб використовувати Dropbox так, як вам хочеться, я б радив не покладатися на нього. Незадокументовані програмні примхи можуть зникнути без попереднього повідомлення. Потрібно переглянути інструменти передачі файлів, розроблені з урахуванням Вашого випадку використання. Першим моїм вибором буде rsync , який є стандартним для дистрибутивів Linux, і простий в установці в Windows, особливо якщо у вас є Cygwin . А Cygwin взагалі корисний людям, яким доводиться працювати і з Windows, і з Linux!

Звичайно, для rsync потрібне пряме підключення - немає центрального сервера, як той, який надає Dropbox. Як ви вирішите це з цим, залежить від деталей налаштування вашої мережі.


Так, я згоден з тим, що ви говорите про примхи. На мій погляд, це часто є вагомим приводом припинити оновлення програмного забезпечення - якщо воно робить те, що ви хочете, навіщо ризикувати, що нові версії це порушать!
Майкл

rsync не є двонаправленим і не оновлюється автоматично щоразу, коли в файл вноситься зміна.
Майкл

@Michael У вас не завжди є вибір щодо оновлення програмного забезпечення; коли це хмара (наприклад, Dropbox), ви ніколи не маєте вибору. І важко зрозуміти, чому двостороння або автоматична копія є важливими для того, що ви намагаєтеся зробити.
Ісаак Рабінович

Поки послуга залишається сумісною з попереднім клієнтом, у вас є вибір. І якщо Dropbox не може змусити всіх оновлюватись одразу, я сумніваюся, що вони могли б зробити щось на зразок внесення змін на низький рівень до протоколу, який би зламав старих клієнтів. Єдиний спосіб я бачу, що вони могли це зробити, - через якийсь перехід.
Майкл

Що стосується того, що я намагаюся зробити, я намагаюся підтримувати набір файлів на двох різних машинах і зможу в будь-який момент змінити будь-який з них, а потім перейти до іншого через короткий час і забрати де я зупинився, не маючи нічого робити вручну, як запустити rsync. Це головним чином через те, що я можу зробити модифікацію віддалено (наприклад, через веб-інтерфейс), і такі проблеми, як брандмауері та затримка, роблять незручним підтримку єдиної централізованої копії даних.
Майкл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.