2011-12-07 16 views
6

Używam cp.exe z Cygwin do kopiowania plików w Windows 7. Niestety, gdy robię uprawnienia do zmiany pliku.Jak korzystać z cp.exe z Cygwin i zachować uprawnienia

Próbowałem przy użyciu:

cp --preserve=all 

Ale to nie działa albo i kiedy sprawdzić bezpieczeństwo oryginalnego pliku vs kopii, kopia ma różne uprawnienia.

Oczywiście musi istnieć sposób zachowania uprawnień podczas kopiowania za pomocą Cygwin, ale nie mogę go znaleźć.

+1

'cp --preserver = all' jest prawdopodobnie najlepszym, co możesz zrobić za pomocą polecenia' cp'. Dokładnie jakie uprawnienia są różne? Czy kopiujesz do systemu plików FAT32? Jeśli tak, może nie obsługiwać żądanych uprawnień. –

+0

Wygląda na to, że pierwotne uprawnienia są właściwie ignorowane. To NTFS - Win7. – mlissner

+0

@KeithThompson 'cp --preserve = all' nie działa na win7 co najmniej. Uprawnienia cygwin cp wciąż są nieskuteczne! – hawk

Odpowiedz

7

Zrobiłem więcej informacji na ten temat po zadaniu pytania powyżej.

Per this discussion z jednym z twórców Cygwin, wydaje się, że Cygwin nie dba o uprawnienia Windows i po prostu trzyma się tych z POSIX-ami.

Z tego, co mogę powiedzieć, uprawnienia POSIX są zupełnie oddzielną rzeczą od Windows, więc tak, to wspaniale, że są one obsługiwane, ale ostatecznie, Cygwin nie może kopiować plików i zachować normalne uprawnienia Windows. Dla mnie to bezużyteczne. Znacznie lepiej używać Pythona lub Ruby.

Chciałbym jednak, aby się udowodnić źle.

+3

To mnie dzisiaj spaliło, bardzo rozczarowało. Naprawiono: 'getfacl src-file.txt | setfacl -f - dest-file.txt' Dlaczego "Cpwin" Cygwina nie może tego zrobić ?! Inną opcją może być wyrównanie 'cp' do równoważnego polecenia' rsync', podobnie jak [ta odpowiedź] (http://unix.stackexchange.com/a/44400). – Dan

+0

Udało mi się skopiować pliki z 'cp' po ustawieniu" Total Control "Uprawnienia do pliku docelowego. –

9

Wierzę, że dodanie opcji noacl do punktu podłączenia/cygdrive w/etc/fstab zrobi to, co chcesz.

$ cat fstab 
# For a description of the file format, see the Users Guide 
# http://cygwin.com/cygwin-ug-net/using.html#mount-table 

# This is default anyway: 
# none /cygdrive cygdrive binary,posix=0,user 0 0 
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0 

Zobacz http://cygwin.com/cygwin-ug-net/using.html#mount-table i discussion z cygwin listy.

+1

Nie działa, proste 'mkdir' przerywa dziedziczenie ACL NTFS i tworzy kilka nowych uprawnień, które czasami powodują również, że katalogi są niedostępne dla użytkownika, który je pierwotnie utworzył (często dzieje się podczas operacji rsync). Montowanie za pomocą noacla jest tylko częściowym rozwiązaniem, ale nie powoduje to, że cygwin zachowuje się tak, jak się spodziewam. Jest wiele dyskusji na ten temat, dla mnie jest to wyraźna wada cygwin. – jdehaan

+0

@jdehaan Sprawdziłem z najnowszym Cygwin i CMD.exe 'mkdir' ustawić takie same uprawnienia jak Cygwin ze ścieżką w ramach efektu' noacl'. Sprawdź '/ etc/fstab'. – gavenkoa