Comment conserver la propriété et les autorisations dans Dropbox?

9

J'ai deux machines, un Mac et un PC sous Linux, que j'essaie de garder un certain fichier synchronisé entre l'utilisation de Dropbox.

Un des fichiers que je synchronise doit être accessible en écriture par un autre utilisateur (UID différent sur la même machine, ne faisant pas référence à un autre utilisateur Dropbox) en plus de moi. Pour être plus précis, cet autre UID est en fait un démon. Ainsi, soit le fichier doit appartenir à cet autre utilisateur, soit une autorisation d'écriture est nécessaire pour "groupe" et / ou "autre". Au départ, je l'ai configuré de cette façon sur les deux machines. De plus, le répertoire contenant le fichier appartient déjà (chmod 777) à l'utilisateur qui doit avoir un accès en écriture au fichier.

Cependant, chaque fois que le fichier est synchronisé d'une boîte à une autre, il apparaît que Dropbox ignore complètement les deux ensembles d'autorisations et modifie les autorisations sur le fichier nouvellement mis à jour qui m'appartiennent avec les autorisations 0644 (rw pour moi, r pour tout le monde) ). Si le fichier ne m'appartient pas, il revient même à moi-même! En conséquence, l'autre utilisateur n'a plus d'autorisations d'écriture jusqu'à ce que j'entre manuellement et re-modifie le fichier.

D'autres choses que j'ai essayées n'ont pas fonctionné:

  1. assurez-vous que le compte d'utilisateur (pour "l'autre utilisateur") sur les deux machines a le même UID. Je ne sais pas pourquoi cela serait nécessaire, car mon compte principal n'a pas le même UID sur les deux machines.

  2. chmod u+s <dir>et chmod g+s <dir>où se trouve le répertoire contenant le fichier en question.

  3. changer la propriété du fichier à l'autre utilisateur et le placer en dehors du répertoire Dropbox, et créer un lien symbolique vers le fichier dans le répertoire Dropbox. Dropbox supprime en fait le lien symbolique, laisse le fichier d'origine (en dehors du répertoire Dropbox) inchangé et crée une nouvelle copie du fichier où se trouvait le lien symbolique!

Comment puis-je configurer les choses afin que mes autorisations et / ou propriété soient préservées?

Michael
la source

Réponses:

5

Ok, voici la solution que j'ai trouvée. Il n'est pas certain que cela fonctionnera avec les futures versions de Dropbox. J'ai ouvert une demande de service avec Dropbox pour essayer de résoudre le problème davantage.

Dans l'ensemble, la solution est une combinaison de deux choses:

  1. Définition de l'umask pour le processus Dropbox afin que les fichiers nouvellement créés aient les autorisations 0660. Il s'agit de l'utilisateur en lecture / écriture, en lecture / écriture de groupe, autre aucun.
  2. Définir le groupe pour les fichiers nouvellement créés sur le groupe qui doit avoir un accès en écriture aux fichiers en question.

Cette solution s'appliquera à tous les fichiers du dossier Dropbox, pas seulement à un seul fichier. Dans mon cas, cela est acceptable.

Sous Linux, je modifie le /etc/init.d/dropboxscript de démarrage pour que la ligne appelant dropbox en tant que démon indique:

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

L'ajout de la fonction --umask 0006accomplit la définition de l'umask et la :$dbgrppartie de l'option -c permet de définir le groupe auquel appartient le démon.

Côté Mac, j'exécute les commandes suivantes:

ps aux | grep -i dropbox

De là, je peux voir les options de ligne de commande qui ont démarré Dropbox et j'en extrait le $ mydropboxid utilisé plus tard. Ensuite, je quitte Dropbox et ouvre une invite de commande et saisis les commandes suivantes:

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

Je prévois d'automatiser les commandes ci-dessus à un moment donné afin de ne pas avoir à les réexécuter à chaque redémarrage de ma machine.

Cela gère la définition du masque pour les fichiers nouvellement créés afin que le groupe d'un fichier ait un accès en écriture. Cependant, pour obtenir le groupe correctement, je dois définir le répertoire de cache Dropbox - jusqu'à présent, cela n'a dû être effectué qu'une seule fois:

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

Il semble que tous les nouveaux fichiers soient d'abord créés sous le répertoire ~ / Dropbox / .dropbox.cache, donc les commandes ci-dessus donnent à ces nouveaux fichiers la propriété et les autorisations appropriées que les nouveaux fichiers créés par Dropbox ont le groupe correct.

Michael
la source
Intéressant. Pouvez-vous expliquer un peu plus ce que font cette ligne et le fichier modifié en général?
nixda
Le démon start-stop est un utilitaire Linux qui vous permet de contrôler divers paramètres sous lesquels un démon s'exécute. La plupart des paramètres sont passés dans des variables shell. Les modifications clés sont l'ajout de "--umask 0006" qui laisse l'autorisation R / W pour l'utilisateur et le groupe mais le supprime pour les autres, et l'ajout du paramètre de groupe (": $ dbgrp") au paramètre -c, qui définit l'UID / GID sous lequel le processus démon s'exécute). La commande Mac est similaire, mais je n'ai pas trouvé d'utilitaire similaire, donc dépend de la configuration de ces paramètres dans le shell qui exécute Dropbox.
Michael
Est-ce que cela s'applique également à la version actuelle de Dropbox? Mon script dropboxd est 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 $@et se trouve dans ./.dropbox-dist/ et est géré via le script python fourni
vélo
@bicycle Je n'ai pas été invité à mettre à jour mon client dropbox depuis que j'ai proposé cette solution.
Michael
@Michael, Dropbox a-t-il déjà répondu à votre demande de service?
bbozo
0

Placez ce fichier dans son propre dossier et partagez ce dossier avec l'autre utilisateur. De cette façon, ils modifient la dernière version comme vous. Attention à ne pas y travailler en même temps.

CodeMonkey
la source
1
Mise à jour de ma question d'origine pour refléter le fait que le dossier contenant le fichier en question appartient déjà à l'autre utilisateur. Cela ne fait aucune différence, Dropbox ignore toujours la propriété / les autorisations actuelles et les réinitialise chaque fois que le fichier est synchronisé avec la machine.
Michael
0

Si vous copiez un fichier entre deux ordinateurs, le logiciel qui effectue la copie décide quelles sont les autorisations sur la copie. Pour ce que vous faites, vous avez besoin d'un mappage d'autorisations assez fin. Les fonctionnalités de mappage des autorisations Dropbox se limitent à conserver les autorisations si les deux systèmes exécutent le même système d'exploitation . Aucun résultat spécifique n'est garanti pour la copie entre deux systèmes d'exploitation différents.

Même si vous pouviez trouver un moyen d'utiliser Dropbox comme vous le souhaitez, je vous déconseille de vous y fier. Les bizarreries des logiciels non documentés peuvent disparaître sans préavis. Vous devez examiner les outils de transfert de fichiers conçus en fonction de votre cas d'utilisation. Mon premier choix serait rsync , qui est standard sur les distributions Linux, et facile à installer sur Windows, surtout si vous avez Cygwin . Et Cygwin est généralement utile pour les personnes qui doivent travailler avec Windows et Linux!

Bien sûr, rsync nécessite une connexion directe - il n'y a pas de serveur central tel que celui fourni par Dropbox. La façon dont vous gérez cela dépend des détails de la configuration de votre réseau.

Isaac Rabinovitch
la source
Ouais, je suis d'accord avec ce que tu dis sur les bizarreries. Dans mon esprit, c'est souvent une bonne raison d'arrêter la mise à niveau du logiciel - s'il fait ce que vous voulez, pourquoi risquer que les nouvelles versions cassent cela!
Michael
rsync n'est pas bidirectionnel et ne se met pas à jour automatiquement chaque fois qu'une modification est apportée au fichier.
Michael
@Michael Vous n'avez pas toujours le choix de mettre à niveau le logiciel; quand il est basé sur le cloud (comme Dropbox), vous n'avez jamais le choix. Et il est difficile de voir pourquoi la bidirectionnalité ou la copie automatique sont essentielles pour ce que vous essayez de faire.
Isaac Rabinovitch
Tant que le service reste rétrocompatible avec le client précédent, vous avez le choix. Et à moins que Dropbox ne puisse forcer tout le monde à mettre à niveau immédiatement, je doute qu'ils pourraient faire quelque chose comme apporter des modifications de bas niveau au protocole, ce qui casserait les anciens clients. La seule façon dont je peux voir qu'ils pourraient le faire, c'est par une sorte de transition.
Michael
En ce qui concerne ce que j'essaie de faire, j'essaie de maintenir un ensemble de fichiers sur deux machines différentes et de pouvoir modifier l'un d'eux à un moment donné, puis passer à l'autre peu de temps après et ramasser où je me suis arrêté, sans avoir à faire quoi que ce soit manuellement comme démarrer une rsync. Ceci principalement parce que je pourrais faire la modification à distance (par exemple via une interface Web), et il y a des problèmes comme les pare-feu et la latence qui rendent difficile la maintenance d'une seule copie centralisée des données.
Michael