9

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

Один из файлов, которые я синхронизирую, должен быть доступен для записи другому пользователю (другой UID на той же машине, не относящийся к другому пользователю Dropbox), кроме меня. Чтобы быть более конкретным, этот другой UID на самом деле является демоном. Таким образом, либо файл должен принадлежать этому другому пользователю, либо требуется разрешение на запись для "группы" и / или "другого". Первоначально я настроил это на обеих машинах. Кроме того, каталог, содержащий файл, уже принадлежит (chmod 777) пользователю, которому необходимо иметь доступ для записи в файл.

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

Дополнительные вещи, которые я пробовал, которые не работали:

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

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

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

Как я могу настроить все так, чтобы мои права и / или права собственности были сохранены?

3 ответа3

5

Хорошо, вот решение, которое я нашел. Будет ли это работать с будущими версиями Dropbox, пока неясно. Я открыл запрос на обслуживание с Dropbox, чтобы попытаться решить проблему дальше.

В целом, решение представляет собой сочетание двух вещей:

  1. Настройка umask для процесса Dropbox, чтобы вновь созданные файлы имели права доступа 0660. Это пользовательское чтение / запись, групповое чтение / запись, остальные нет.
  2. Установка группы для вновь созданных файлов в группу, которая должна иметь права на запись в рассматриваемые файлы.

Это решение будет применяться ко всем файлам в папке Dropbox, а не только к одному файлу. В моем случае это приемлемо.

Под Linux я изменяю скрипт запуска /etc/init.d/dropbox так, чтобы строка, вызывающая 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, имеют правильную группу.

0

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

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

Конечно, для rsync требуется прямое соединение - нет центрального сервера, подобного тому, который предоставляет Dropbox. То, как вы справитесь с этим, зависит от настроек вашей сети.

0

Поместите этот файл в его собственную папку и поделитесь этой папкой с другим пользователем. Таким образом, они редактируют последнюю версию, как и вы. Будьте осторожны, чтобы не работать над этим одновременно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .