Como preservar propriedade e permissões no Dropbox?

8

Eu tenho duas máquinas, um Mac e um PC rodando Linux, que estou tentando manter um certo arquivo sincronizado entre o uso do Dropbox.

Um dos arquivos que estou sincronizando precisa ser gravável por outro usuário (UID diferente na mesma máquina, não se referindo a outro usuário da caixa de depósito) além de mim mesmo. Para ser mais específico, esse outro UID é na verdade um daemon. Portanto, ou o arquivo precisa pertencer àquele outro usuário, ou então a permissão de gravação é necessária para "grupo" e / ou "outro". Inicialmente eu configurei isso em ambas as máquinas. Além disso, o diretório que contém o arquivo já é de propriedade (chmod 777) pelo usuário que precisa ter acesso de gravação ao arquivo.

No entanto, sempre que o arquivo é sincronizado de uma caixa para outra, parece que o Dropbox ignora completamente os dois conjuntos de permissões e altera as permissões no arquivo recém-atualizado a ser de propriedade de mim com permissões 0644 (rw para mim, r para todos os outros). Se o arquivo não é de minha propriedade, ele até mesmo muda a propriedade para mim! Como resultado, o outro usuário não tem mais permissões de gravação até que eu vá manualmente e refaça o chmod do arquivo.

Coisas adicionais que tentei e que não funcionaram:

  1. garantiu que a conta do usuário (para o "outro usuário") em ambas as máquinas tenha o mesmo UID. Não sei por que isso seria necessário, pois minha conta principal não tem o mesmo UID nas duas máquinas.

  2. chmod u+s <dir> e chmod g+s <dir> onde é o diretório que contém o arquivo em questão.

  3. alterando a propriedade do arquivo para o outro usuário e colocando-o fora do diretório do Dropbox, e criando um link simbólico para o arquivo no diretório do Dropbox. O Dropbox realmente exclui o link simbólico, deixa o arquivo original (fora do diretório do Dropbox) inalterado e cria uma nova cópia do arquivo onde o link simbólico costumava ser!

Como posso configurar as coisas para que minhas permissões e / ou propriedade sejam preservadas?

    
por Michael 11.02.2013 / 17:24

3 respostas

5

Ok, aqui está a solução que encontrei. Se isso vai ou não funcionar com versões futuras do Dropbox é incerto. Eu abri uma solicitação de serviço com o Dropbox para tentar resolver o problema ainda mais.

No geral, a solução é uma combinação de duas coisas:

  1. Definir o umask para o processo do Dropbox para que os arquivos recém-criados tenham permissões de 0660. Este é o usuário de leitura / gravação, grupo de leitura / gravação, nenhum outro.
  2. Definir o grupo de arquivos recém-criados para o grupo que precisa ter acesso de gravação aos arquivos em questão.

Esta solução será aplicada a todos os arquivos na pasta Dropbox, não apenas em um único arquivo. No meu caso, isso é aceitável.

No Linux, modifico o script de inicialização /etc/init.d/dropbox para que a linha que invoca o dropbox como um daemon leia:

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

Adicionando o --umask 0006 realiza a configuração do umask, e a porção :$dbgrp da opção -c realiza a configuração do grupo ao qual o daemon pertence.

No lado do Mac, eu corro os seguintes comandos:

ps aux | grep -i dropbox

A partir disso, vejo as opções de linha de comando que iniciaram o Dropbox e, a partir disso, extraio o $ mydropboxid usado posteriormente. Então eu saio do Dropbox, abro um prompt de comando e digito os seguintes comandos:

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

Eu planejo automatizar os comandos acima em algum momento, para que eu não tenha que reexecutá-los a qualquer momento em que minha máquina for reinicializada.

Isso lida com a configuração da máscara para arquivos recém-criados, para que o grupo de um arquivo tenha acesso de gravação. No entanto, a fim de obter o grupo definido corretamente, preciso definir o diretório de cache do Dropbox - isso até agora só precisava ser feito uma vez:

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

Parece que todos os novos arquivos são criados primeiro sob o diretório ~ / Dropbox / .dropbox.cache, então os comandos acima fornecem aos novos arquivos a propriedade e as permissões apropriadas que os novos arquivos criados pelo Dropbox possuem o grupo correto.

    
por 12.02.2013 / 05:45
0

Coloque esse arquivo em sua própria pasta e compartilhe essa pasta com o outro usuário. Dessa forma, eles estão editando a versão mais recente, assim como você. Tenha cuidado para não trabalhar ao mesmo tempo.

    
por 11.02.2013 / 17:35
0

Se você copiar um arquivo entre dois computadores, o software que faz a cópia decidirá quais são as permissões da cópia. Para o que você está fazendo, você precisa de um mapeamento de permissão bastante refinado. Os recursos de mapeamento de permissão do Dropbox estão limitados a preservar as permissões se ambos os sistemas executarem o mesmo SO . Nenhum resultado específico é garantido para copiar entre dois SOs diferentes.

Mesmo se você pudesse descobrir uma maneira de usar o Dropbox da maneira que preferir, aconselho não confiar nele. As peculiaridades do software não documentado desaparecem sem aviso prévio. Você precisa examinar as ferramentas de transferência de arquivos projetadas com o seu caso de uso em mente. Minha primeira escolha seria rsync , que é padrão nas distros do Linux e fácil de instalar no Windows, especialmente se você tiver Cygwin . E o Cygwin é geralmente útil para pessoas que precisam trabalhar com Windows e Linux!

Naturalmente, o rsync requer uma conexão direta - não há um servidor central como o fornecido pelo Dropbox. O modo como você lida com isso depende dos detalhes da sua configuração de rede.

    
por 12.02.2013 / 05:44