Dropboxで所有権と権限を保持する方法は?


9

MacとLinuxを実行しているPCの2台のマシンを使用していて、Dropboxを使用して特定のファイルを同期させようとしています。

同期しているファイルの1つは、自分以外の別のユーザー(同じマシン上の別のUID、別のDropboxユーザーを参照していない)が書き込み可能である必要があります。具体的には、この他のUIDは実際にはデーモンです。そのため、ファイルは他のユーザーが所有する必要があるか、「グループ」や「その他」の書き込み権限が必要です。最初は両方のマシンでこのように設定しました。さらに、ファイルを含むディレクトリは、ファイルへの書き込みアクセスを必要とするユーザーによって既に所有されています(chmod 777)。

ただし、ファイルが1つのボックスから別のボックスに同期されると、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でサービスリクエストを開いて、問題をさらに解決しようとしました。

全体として、ソリューションは次の2つの組み合わせです。

  1. Dropboxプロセスのumaskを設定して、新しく作成されたファイルに0660の権限が付与されるようにします。これは、ユーザーの読み取り/書き込み、グループの読み取り/書き込み、その他です。
  2. 新しく作成されたファイルのグループを、問題のファイルへの書き込みアクセスが必要なグループに設定します。

このソリューションは、1つのファイルだけでなく、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キャッシュディレクトリをsetgidする必要があります。これまでのところ、これを実行する必要があるのは1回だけです。

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

すべての新しいファイルは最初に〜/ Dropbox / .dropbox.cacheディレクトリの下に作成されるようです。そのため、上記のコマンドは、これらの新しいファイルに、Dropboxによって作成された新しいファイルが適切なグループを持つ適切な所有権とアクセス許可を与えます。


面白い。この行と変更されたファイルの一般的な機能についてもう少し説明できますか?
nixda 2013

start-stop-daemonは、デーモンが実行されるさまざまな設定を制御できるLinuxユーティリティです。ほとんどのパラメーターはシェル変数で渡されます。重要な変更は、ユーザーとグループにはR / W権限を残し、他のユーザーには削除する「--umask 0006」の追加、および-cパラメーターへのグループパラメーター( ":$ dbgrp")の追加です。デーモンプロセスが実行される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

2台のコンピューター間でファイルをコピーする場合、コピーを実行するソフトウェアによって、コピーに対するアクセス許可が決定されます。あなたがやっていることのために、かなり細かい粒度のパーミッションマッピングが必要です。Dropboxの権限マッピング機能は、両方のシステムが同じOSを実行している場合、権限の保持に限定されます。2つの異なるOS間でのコピーについて、特定の結果が保証されることはありません。

Dropboxを思い通りに使用する方法を見つけられたとしても、それに依存しないことをお勧めします。文書化されていないソフトウェアの癖は、予告なく消える方法があります。ユースケースを考慮して設計されたファイル転送ツールを確認する必要があります。私の最初の選択はrsyncです。これはLinuxディストリビューションの標準であり、特にCygwinを使用している場合はWindowsに簡単にインストールできます。また、Cygwinは一般に、WindowsとLinuxの両方で作業する必要がある人にとって便利です。

もちろん、rsyncには直接接続が必要です— Dropboxが提供するような中央サーバーはありません。その対処方法は、ネットワーク設定の詳細によって異なります。


ええ、私はあなたが癖について言っていることに同意します。私の考えでは、これはソフトウェアのアップグレードを中止する良い理由です-それがあなたの望むことをするなら、なぜ新しいバージョンがそれを壊す危険があるのでしょう!
マイケル

rsyncは双方向ではなく、ファイルが変更されるたびに自動的に更新されるわけではありません。
マイケル

@Michaelソフトウェアのアップグレードについて常に選択できるわけではありません。それが(Dropboxのような)クラウドベースの場合、選択肢ありませ。また、双方向性または自動コピーが、何をしようとしているのに不可欠なのかを理解するのは困難です。
アイザックラビノビッチ2013

サービスが以前のクライアントとの下位互換性を維持している限り、選択できます。そして、Dropboxが全員にすぐにアップグレードを強制できない限り、古いクライアントを破壊するようなプロトコルに低レベルの変更を加えるようなことを彼らができるとは思えません。彼らがそれを行うことができると私が見ることができる唯一の方法は、ある種の移行を通してです。
マイケル

私がやろうとしていることに関して、私は2つの異なるマシンでファイルのセットを維持し、いつでもそれらの1つを変更できるようにして、しばらくしてからもう一方にジャンプしてピックアップできるようにしていますここでは、rsyncを開始するなど、手動で何もすることなく、中断しました。これは主に、リモートで(たとえば、Webインターフェースを介して)変更を行う可能性があり、ファイアウォールや遅延などの問題があるため、データの単一の集中コピーを維持するのが不便です。
マイケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.