Come conservare la proprietà e le autorizzazioni in Dropbox?


9

Ho due macchine, un Mac e un PC con Linux, che sto cercando di mantenere un certo file sincronizzato tra l'utilizzo di Dropbox.

Uno dei file che sto sincronizzando deve essere scrivibile da un altro utente (UID diverso sulla stessa macchina, non riferendosi a un altro utente dropbox) oltre a me stesso. Per essere più specifici, questo altro UID è in realtà un demone. Pertanto, o il file deve essere di proprietà di quell'altro utente, oppure è necessaria l'autorizzazione di scrittura per "gruppo" e / o "altro". Inizialmente l'ho impostato in questo modo su entrambe le macchine. Inoltre, la directory che contiene il file è già di proprietà (chmod 777) dall'utente che deve avere accesso in scrittura al file.

Tuttavia, ogni volta che il file viene sincronizzato da una casella a un'altra, sembra che Dropbox ignori completamente entrambi i set di autorizzazioni e cambi le autorizzazioni sul file appena aggiornato per essere di mia proprietà con autorizzazioni 0644 (rw per me, r per tutti gli altri ). Se il file non è di mia proprietà, cambia anche la proprietà su me stesso! Di conseguenza, l'altro utente non ha più i permessi di scrittura finché non accedo manualmente e ricodifico il file.

Altre cose che ho provato che non hanno funzionato:

  1. assicurarsi che l'account utente (per "l'altro utente") su entrambe le macchine abbia lo stesso UID. Non sono sicuro del motivo per cui questo sarebbe necessario, dal momento che il mio account principale non ha lo stesso UID su entrambi i computer.

  2. chmod u+s <dir>e chmod g+s <dir>dov'è la directory che contiene il file in questione.

  3. cambiando la proprietà del file all'altro utente e posizionandolo all'esterno della directory di Dropbox e creando un collegamento simbolico al file nella directory di Dropbox. Dropbox elimina effettivamente il collegamento simbolico, lascia invariato il file originale (all'esterno della directory Dropbox) e crea una nuova copia del file in cui si trovava il collegamento simbolico!

Come posso impostare le cose in modo che le mie autorizzazioni e / o proprietà siano preservate?

Risposte:


5

Ok, ecco la soluzione che ho trovato. Non è chiaro se questo funzionerà con le versioni future di Dropbox. Ho aperto una richiesta di servizio con Dropbox per provare a risolvere ulteriormente il problema.

Nel complesso, la soluzione è una combinazione di due cose:

  1. Impostando umask per il processo Dropbox in modo che i file appena creati dispongano delle autorizzazioni di 0660. Si tratta di lettura / scrittura dell'utente, lettura / scrittura del gruppo, altro nessuno.
  2. Impostazione del gruppo per i file appena creati sul gruppo che deve avere accesso in scrittura ai file in questione.

Questa soluzione si applicherà a tutti i file nella cartella Dropbox, non solo a un singolo file. Nel mio caso questo è accettabile.

Sotto Linux, modifico lo /etc/init.d/dropboxscript di avvio in modo che la riga che richiama dropbox come demone reciti:

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

Aggiungendo le --umask 0006impostazioni compiute per umask, e la :$dbgrpparte dell'opzione -c esegue l'impostazione del gruppo a cui appartiene il demone.

Sul lato Mac, eseguo i seguenti comandi:

ps aux | grep -i dropbox

Da questo posso vedere le opzioni della riga di comando che hanno avviato Dropbox e da questo estraggo $ mydropboxid usato in seguito. Quindi esco da Dropbox e apro un prompt dei comandi e immetto i seguenti comandi:

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

Ho intenzione di automatizzare i comandi di cui sopra ad un certo punto in modo da non doverli rieseguire ogni volta che il mio computer viene riavviato.

Questo gestisce l'impostazione della maschera per i file appena creati in modo che il gruppo per un file abbia accesso in scrittura. Tuttavia, per impostare correttamente il gruppo ho bisogno di impostaregid la directory della cache di Dropbox - questo finora deve essere fatto solo una volta:

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

Sembra che tutti i nuovi file vengano prima creati nella directory ~ / Dropbox / .dropbox.cache, quindi i comandi precedenti danno a quei nuovi file la proprietà e le autorizzazioni appropriate per i nuovi file creati da Dropbox con il gruppo corretto.


Interessante. Puoi spiegarci un po 'di più cosa fanno questa riga e il file modificato in generale?
nixda,

Start-stop-daemon è un'utilità Linux che consente di controllare varie impostazioni in base alle quali viene eseguito un demone. La maggior parte dei parametri vengono passati in una variabile shell. Le modifiche chiave sono l'aggiunta di "--umask 0006" che lascia l'autorizzazione R / W per l'utente e il gruppo ma lo rimuove per gli altri e l'aggiunta del parametro del gruppo (": $ dbgrp") al parametro -c, che imposta l'UID / GID come viene eseguito il processo daemon). Il comando Mac è simile, ma non ho trovato un'utilità simile, quindi fa affidamento sulla configurazione di queste impostazioni nella shell che esegue Dropbox.
Michael,

Questo vale anche per l'attuale versione di dropbox? Il mio script 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 $@ed è situato in ./.dropbox-dist/ ed è gestito tramite lo script python fornito
bicicletta

@bicycle Non mi è stato richiesto di aggiornare il mio client Dropbox da quando ho trovato questa soluzione.
Michael,

@Michael, Dropbox ha mai risposto alla tua richiesta di servizio?
bbozo,

0

Metti quel file nella sua cartella e condividi quella cartella con l'altro utente. In questo modo stanno modificando l'ultima versione come te. Fai attenzione a non lavorarci allo stesso tempo.


1
Aggiornamento della mia domanda originale per riflettere il fatto che la cartella contenente il file in questione è già di proprietà dell'altro utente. Non fa differenza, Dropbox ignora ancora la proprietà / le autorizzazioni correnti e le reimposta ogni volta che il file viene sincronizzato con la macchina.
Michael,

0

Se si copia un file tra due computer, il software che esegue la copia decide quali autorizzazioni sono sulla copia. Per quello che stai facendo, hai bisogno di una mappatura delle autorizzazioni abbastanza dettagliata. Le funzionalità di mappatura delle autorizzazioni di Dropbox sono limitate alla conservazione delle autorizzazioni se entrambi i sistemi eseguono lo stesso sistema operativo . Non sono garantiti risultati specifici per la copia tra due diversi sistemi operativi.

Anche se riuscissi a trovare un modo per usare Dropbox nel modo che preferisci, ti sconsiglio di fare affidamento su di esso. Le stranezze software non documentate hanno un modo di scomparire senza preavviso. È necessario esaminare gli strumenti di trasferimento dei file progettati tenendo presente il proprio caso d'uso. La mia prima scelta sarebbe rsync , che è standard nelle distribuzioni Linux, e facile da installare su Windows, specialmente se hai Cygwin . E Cygwin è generalmente utile per le persone che devono lavorare con Windows e Linux!

Ovviamente, rsync richiede una connessione diretta: non esiste un server centrale come quello fornito da Dropbox. Il modo in cui lo affronti dipende dai dettagli della configurazione della rete.


Sì, sono d'accordo con quello che stai dicendo su stranezze. Nella mia mente, questo è spesso un buon motivo per interrompere l'aggiornamento del software: se fa quello che vuoi, perché rischiare che le versioni più recenti lo rompano!
Michael,

rsync non è bidirezionale e non si aggiorna automaticamente ogni volta che viene apportata una modifica al file.
Michael,

@Michael Non hai sempre una scelta sull'aggiornamento del software; quando è basato su cloud (come Dropbox) non hai mai scelta. Ed è difficile capire perché la bidirezionalità o la copia automatica siano essenziali per quello che stai cercando di fare.
Isaac Rabinovitch,

Finché il servizio rimane retrocompatibile con il client precedente, è possibile scegliere. E a meno che Dropbox non possa costringere immediatamente tutti a eseguire l'aggiornamento, dubito che potrebbero fare qualcosa come apportare modifiche di basso livello al protocollo che spezzerebbe i vecchi client. L'unico modo in cui posso vedere che potrebbero farlo è attraverso una sorta di transizione.
Michael,

Per quanto riguarda ciò che sto cercando di fare, sto cercando di mantenere un set di file su due macchine diverse ed essere in grado di modificarne uno in qualsiasi momento, quindi passare all'altro poco dopo e riprendere da dove avevo interrotto, senza dover fare nulla manualmente come avviare un rsync. Ciò principalmente perché potrei apportare la modifica in remoto (ad esempio tramite un'interfaccia Web) e ci sono problemi come i firewall e la latenza che rendono scomodo mantenere un'unica copia centralizzata dei dati.
Michael,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.