web-dev-qa-db-ja.com

Windowsでのrsyncファイルの権限

リモートマシンのファイルをネットワークドライブにドロップするマシンに同期するrsyncサービスがあります。

コピー先のフォルダーのネイティブのアクセス許可を取得するには、コピーしたファイルが必要です。

同期プロセスは正常に実行されますが、完了後、一部のフォルダーにアクセスできません-アクセス許可が拒否されました。

ドメイン管理者としてログインしています。また、上記のフォルダに対するアクセス許可を変更することもできません。何ができますか?

コマンドを実行:

rsync.exe  -v -rlt -z --delete "src_path" "dst_path"
32
avguchenko

(- http://www.samba.org/ftp/rsync/rsync.html から)

要約すると、宛先ファイル(新旧両方)にソース権限を付与するには、--permsを使用します。

(既存のファイルを変更せずに)新しいファイルに宛先デフォルトの許可を与えるには、--permsオプションがオフであることを確認し、--chmod=ugo=rwXを使用します(これにより、すべての非マスクビットが確実に有効になります)。

この後者の動作を入力しやすくしたい場合は、この行をファイル〜/ .poptに入れるなど、poptエイリアスを定義できます(以下は-Zオプションを定義し、-no-を含めます) g宛先ディレクトリのデフォルトグループを使用するには):

    rsync alias -Z --no-p --no-g --chmod=ugo=rwX
25
avguchenko

Cygwinの「posix」セキュリティは、rsyncで--no-permsを使用する場合でも、Windows NTFSファイルのアクセス許可で多くの問題を引き起こしています。

新しく作成されたファイル/フォルダーはデフォルトのアクセス許可を適切に継承しないことがわかりましたが、すべてのファイル/フォルダーはWindowsファイル/フォルダーの[高度なセキュリティ]タブに多数の<not inherited>エントリを持っています。 (そして、この問題はrsync関連だけではありません)。

この 関連する投稿このリンク は、cygwinの/etc/fstabファイルのnoaclオプションを使用してこれらの問題を解決する方法に非常に役立ちました。このソリューションの欠点は、cygwinがファイル/フォルダーの権限を設定する機能を失うことですが、多くの場合、これは重要ではありません。

(このトピックをグーグルで検索すると、おそらくCYGWIN = NONTSEC環境変数の設定への参照が見つかりますが、これはcygwin v1.5用であり、cygwin v1.7以降では機能しません。)

18
miking

WindowsでDeltaCopyを使用すると、次のように機能させることができます。

rsync --perms --chmod=a=rw,Da+x ...

--recursiveでも機能しました

9
Wernight

最高評価の回答が機能するのは、WindowsでSSHを介してrsyncを使用している場合のみです。 cygwin rsyncデーモンを使用している場合、/ etc/fstabでnoaclを使用するだけでは効果がありません。何らかの理由で、ユーザーを削除してnoacl、overrideなどを試しても、継承を尊重しません。これは発生するようですトップレベルのドライブにrsyncしていて、/ etc/rsyncd.confでpath =/cygdrive/whateverを使用する場合。代わりに、別のマウントポイントを/ etc/fstabに作成し、代わりにrsyncd.confで使用する必要があります。

D:\     /d_drive  ntfs    binary,posix=0,noacl,user,override      0 0

/etc/rsyncd.confには、次のようなものがあります。

use chroot = yes

[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser

次に、Windowsシステムを再起動しなければなりませんでした。rsyncサービスを再起動するだけでは効果がないようで、chrootおよびchdirエラーがスローされ続けました(/ d_driveがマウントされ、chroot = falseを使用して、それに書き込むことができました)。次に、Windowsシステムにrsyncを使用するときに、次を使用します。

cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o  ./ rsync://someUser@localhost:remotePort/d_drive/
1
sabujp

rsync、少なくともCygwinでは次のスイッチがあります。

-A、-aclsはACLを保持します(--permsを意味します)

私のCygwinバージョンは次のとおりです。

CYGWIN_NT-6.3 1.7.29(0.272/5/3)2014-04-07 13:46 x86_64 Cygwin

お役に立てれば!

1
Vipul

過去に、昇格したコマンドでtakeownを使用して、Windowsのアクセス許可を現在のユーザーに再割り当てしました。

takeown /f <NameOfFolder> /r /d Y

もちろん、最初に正しいrsyncフラグを使用した場合は不要ですが、すでにコピーしたファイルに対してrsyncを再実行したくない場合は、これをお勧めします。

1
CodingLumis

バックアップにrsyncを使用するrsnapshotでこの問題が発生しました。 --relativeからrsync_long_argsを削除してオーバーライドしました。その後、奇妙な権限を持つディスク自体のフォルダcは作成されません。

0
user3132194