uprawnienia do plików rsync w systemie Windows

32

Mam usługę rsync, która synchronizuje pliki ze zdalnego komputera na komputer, który upuszcza je na dysk sieciowy.

Potrzebuję skopiowanych plików, aby uzyskać natywne uprawnienia do folderu docelowego.

Proces synchronizacji działa poprawnie, ale po jego zakończeniu nie mogę uzyskać dostępu do niektórych folderów - Odmowa dostępu.

Jestem zalogowany jako administrator domeny; nie pozwoli mi to również modyfikować żadnych uprawnień do wspomnianych folderów. Co daje?

Uruchom polecenie:

rsync.exe  -v -rlt -z --delete "src_path" "dst_path"
avguchenko
źródło
jakiego polecenia używasz obecnie do synchronizacji?
John T

Odpowiedzi:

24

(z http://www.samba.org/ftp/rsync/rsync.html )

Podsumowując: aby nadać plikom docelowym (starym i nowym) uprawnienia źródłowe, użyj --perms.

Aby nadać nowym plikom domyślne uprawnienia miejsca docelowego (pozostawiając istniejące pliki bez zmian), upewnij się, że --permsopcja jest wyłączona i użyj --chmod=ugo=rwX(co zapewnia włączenie wszystkich niemaskowanych bitów).

Jeśli chcesz ułatwić to drugie zachowanie, możesz dla niego zdefiniować popt alias, na przykład umieszczając ten wiersz w pliku ~ / .popt (poniżej zdefiniowano opcję -Z i zawiera --no- g, aby użyć domyślnej grupy docelowego katalogu):

    rsync alias -Z --no-p --no-g --chmod=ugo=rwX
avguchenko
źródło
wielkie dzięki. Nie pamiętam odpowiednich flag ...
Vokuhila-Oliba
2
Dotyczy to rsync w Linuksie, ale nie zawsze rozwiązuje problem podczas rsync'owania na dysku Windows, o co pyta oryginalny post.
Simon East
18

Zabezpieczenia „posix” Cygwina sprawiły mi wiele problemów z uprawnieniami do plików Windows NTFS - nawet przy użyciu --no-permsrsync.

Odkryłem, że nowo utworzone pliki / foldery nie dziedziczą poprawnie domyślnych uprawnień, ale każdy plik / folder kończy się dużą <not inherited>liczbą pozycji na karcie Zabezpieczenia zaawansowane pliku / folderu systemu Windows. (I ten problem nie dotyczy tylko rsync).

Znalazłem ten pokrewny post i ten link, oba bardzo pomocne w rozwiązywaniu tych problemów za pomocą noaclopcji w /etc/fstabpliku cygwina . Minusem tego rozwiązania jest to, że cygwin traci możliwość ustawiania uprawnień do plików / folderów, ale w wielu przypadkach nie jest to ważne.

(Googling w tym temacie prawdopodobnie znajdziesz odniesienia do ustawiania zmiennej środowiskowej CYGWIN = NONTSEC, ale dotyczy to cygwin v1.5 i nie działa w wersji cygwin v1.7.)

miking
źródło
Edycja pliku / etc / fstab naprawiła go dla mnie. Aby to zrobić, musiałem użyć rsync w cygwin zamiast innego wdrożenia, takiego jak DeltaCopy.
Matt Connolly,
Jeśli używasz tylko pakietu cwrsync (a nie cygwin), gdzie umieścisz plik fstab?
Simon East
Nie używam cygwina. Biorę zwykły dysk NTFS, zamontowany na OS X i do niego pliki rsync. Następnie te pliki w systemie Windows mają całkowicie zepsute uprawnienia. Poszukuję rozwiązania.
Steven Lu,
wygląda na to, że korzystałem z „ryzykownej” metody montowania NTFS na macOS przy użyciu wbudowanego sterownika, który ma być znacznie mniej stabilny niż sterowniki Paragon / Tuxera i FUSE. Miej to na uwadze, jeśli jesteś na tej samej łodzi
Steven Lu,
8

W systemie Windows z DeltaCopy mogłem sprawić, aby działał z

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

Działa nawet z --recursive

Wernight
źródło
To w większości działało, jednak musiałem zmienić opcję --chmod, aby uwzględnić a = rwx, aby pliki wsadowe itp. Działały poprawnie.
Taylor Gerring
1
To jedyna opcja, która działała dla mnie. Próbowałem --no-perms sugerowanych powyżej i fstab bezskutecznie. Ta dała mi tylko niektóre uprawnienia <nie odziedziczone>, które były rodzajem uprawnień, których chciałem i nie zawierały uprawnień Odmów dla wykonującego użytkownika. Dzięki!
AronVanAmmers
DeltaCopy zawiera również plik wykonywalny chmod, który może później naprawić uprawnienia, np. Chmod -R 777 / cygdrive / g
jnnnnn
1
- Perms jest tym, czego mi brakowało, aby rozwiązać kopię jako problem tylko do odczytu.
Tyler S. Loeper
1

rsync, przynajmniej na Cygwin ma następujący przełącznik:

-A, --acls zachowują listy ACL (implikuje --perms)

Moja wersja Cygwin to:

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

Mam nadzieję że to pomoże!

Vipul
źródło
1
Witamy w Super User! Chociaż teoretycznie może to odpowiedzieć na pytanie, ze względu na usprawnienie lepiej byłoby podać szczegółowe informacje na temat tego, w jaki sposób odpowiada on na pytanie (powoływanie się na źródło uzasadnienia roszczenia jest zaletą).
G-Man mówi „Reinstate Monica”
1

Najwyżej oceniana odpowiedź działa tylko wtedy, gdy używasz rsync przez ssh w Windows. Jeśli używasz demona cygwin rsync, po prostu użycie noacl w / etc / fstab nie pomaga, z jakiegokolwiek powodu nie honoruje dziedziczenia, nawet jeśli pozbędziesz się użytkownika i wypróbujesz noacl, zastąpienie itp. Wydaje się, że tak się dzieje jeśli rsyncingujesz na dysk najwyższego poziomu i użyj path = / cygdrive / cokolwiek w /etc/rsyncd.conf. Zamiast tego musisz utworzyć osobny punkt montowania w / etc / fstab i użyć go w pliku rsyncd.conf:

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

w /etc/rsyncd.conf, masz coś takiego:

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

Potem musiałem zrestartować system Windows, po prostu zrestartowanie samej usługi rsync nie wydawało się pomocne, wciąż rzucało błędy chroot i chdir (mimo że / d_drive zostało zamontowane i używało chroot = false i mogłem do niego napisać). Następnie podczas rsync w systemie Windows użyj:

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

W przeszłości właśnie ponownie przypisywałem uprawnienia w systemie Windows mojemu bieżącemu użytkownikowi, korzystając takeownz wiersza polecenia z podwyższonym poziomem uprawnień:

takeown /f <NameOfFolder> /r /d Y

Oczywiście, jeśli użyłeś poprawnych rsyncflag w pierwszej kolejności, nie jest to konieczne, ale jeśli nie chcesz ponownie uruchamiać rsyncplików, które już skopiowałeś, polecam to.

CodingLumis
źródło
1
Witamy w Super User! Przeczytaj uważnie pytanie ponownie. Twoja odpowiedź nie odpowiada na pierwotne pytanie.
DavidPostill
Biorąc pod uwagę, że pytanie brzmi „co daje?” Powiedziałbym, że jego odpowiedź nie jest nawet rozwiązaniem, ale wyjaśnieniem, więc większość odpowiedzi tutaj nie odpowiada na pytanie. Jest to nadal przydatny i odpowiedni kontekstowo dodatek do problemu, ale w razie potrzeby mogę go przenieść do komentarza.
CodingLumis,
Och, czekaj, nie mogę dodawać komentarzy, ponieważ nie mam reputacji 50+, więc to musi zostać tutaj.
CodingLumis,
correct rsync flags> a co by to było?
oldmud0
@ oldmud0 widzi odpowiedzi poprzedzające moje dla odpowiednich kombinacji flag, które ustawiają uprawnienia podczas kopiowania. Moje rozwiązanie idealnie nadaje się dla tych, którzy już skopiowali pliki i nie chcieli ich usuwać ani kopiować ponownie, aby upewnić się, że uprawnienia są prawidłowe.
CodingLumis
0

Miałem ten problem rsnapshot, który używa rsync do tworzenia kopii zapasowych. Zastąpiłem go usuwając --relativez rsync_long_args. Po tym folder cna dysk z dziwnymi uprawnieniami nie tworzy się.

użytkownik3132194
źródło