Jak obejść usterkę projektu przenoszenia / kopiowania NTFS?

31

Jak każdy, kto miał do czynienia z uprawnieniami serwera plików, jest świadomy, NTFS ma interesującą funkcję / wadę projektową zwaną problemem przenoszenia / kopiowania.

Jak wyjaśniono w tym artykule MS KB , uprawnienia do folderu lub pliku nie dziedziczą automatycznie po rodzicu, jeśli folder zostanie przeniesiony, a źródło i miejsce docelowe znajdują się na tym samym woluminie NTFS. Uprawnienia są dziedziczone, jeśli folder jest kopiowany lub jeśli źródło i miejsce docelowe znajdują się na różnych woluminach.

Oto szybki przykład:

Masz dwa foldery współdzielone na tym samym woluminie NTFS o nazwie „Technicy” i „Menedżerowie”. Grupa Techników ma dostęp RW do folderu Techników, a grupa Menedżerów ma dostęp RW do folderu „Menedżerowie”. Jeśli ktoś ma dostęp do obu i przenosi podfolder z folderu „Menedżerowie” do folderu „Technicy”, przeniesiony folder jest nadal dostępny tylko dla użytkowników z grupy „Menedżerowie”. Grupa „Techników” nie może uzyskać dostępu do podfolderu, nawet jeśli znajduje się on w folderze „Techników” i powinna dziedziczyć uprawnienia z góry.

Jak możesz sobie wyobrazić, powoduje to połączenia z pomocą techniczną, bilety i zmarnowane cykle przy rozwiązywaniu tych problemów użytkowników końcowych, nie wspominając o gnieździe szczurów uprawnień, które możesz uzyskać, jeśli użytkownicy często przenoszą foldery między różnymi zabezpieczonymi folderami / obszarem na ten sam wolumen.

Pytania są następujące:

Jaki jest najlepszy sposób obejścia tej wady projektu NTFS i jak sobie z nią radzisz w swoim środowisku?

Wiem, że połączony artykuł KB mówi o niektórych kluczach rejestru w celu zmiany domyślnego zachowania Eksploratora Windows, ale są one po stronie klienta i wymaga od użytkowników możliwości zmiany uprawnień, które moim zdaniem w większości środowisk nie są uruchamiane, jeśli chcesz zachować kontrolę nad uprawnieniami serwera plików (i rozsądkiem jako administrator systemu).

David Archer
źródło
2
Wiem, że przykład menedżerów / techników ma tylko zilustrować wadę, ale w niektórych przypadkach takie zachowanie jest pożądane: jeśli ktoś przypadkowo przeniesie folder z menedżerów do techników, prawdopodobnie nie chcesz, aby technicy mieli dostęp to.
Totem - Przywróć Monikę
2
To naprawdę nie jest wada, tak działają uprawnienia do plików. Zostało to udokumentowane od czasu wydania NTFS. Nie mogę uwierzyć, że niektórzy ludzie zalecają nieużywanie uprawnień do plików i używanie uprawnień do udostępniania tylko do kontroli dostępu. Jest to sprzeczne z podstawami bezpieczeństwa serwera plików Microsoft. Powodem, dla którego przenoszenie folderu / pliku na ten sam wolumin nie jest dziedziczone, jest to, że folder / plik tak naprawdę nie przenosi się na dysk, tylko wskaźnik, który widzimy, zmienia się.
Michael Brown

Odpowiedzi:

12

Moje podejście polega na tym, aby nie używać uprawnień do plików na poziomie plików / katalogów; użyj uprawnień na poziomie udziału plików i ustaw dysk danych całego systemu plików serwera na Wszyscy w pełnej kontroli (który staje się dyskusyjny).

Przez lata (10+) odkryłem, że uprawnienia NTFS są bardziej złożone i prowadzą do większej liczby błędów. Jeśli uprawnienia są ustawione nieprawidłowo lub dziedziczenie zostanie zerwane, narażasz dane i trudno je znaleźć i zobaczyć. Ponadto jesteś narażony na problem z przenoszeniem / kopiowaniem, jak mówisz.

Miejsca, w których należy używać list ACL na poziomie katalogu / pliku; Nie znam innego rozwiązania niż regularne sprawdzanie stanu zdrowia.

James Risto
źródło
10

To nie jest wada. Ta reguła obsługi uprawnień podczas przenoszenia plików obowiązuje od co najmniej wersji beta 2 NT3.1 (choć oczywiście nie jest to dziedziczenie, ponieważ dodano ją tylko w systemie Windows 2000). Jest to tak dobrze znana jak każda funkcja systemu Windows. Mam wiele współczucia dla twojego poglądu, ponieważ może być niewielu z nas, którzy nie zostali spaleni przez to na jednym etapie. Ale sysadmin szybko się tego uczy.

JR

John Rennie
źródło
6
Kłóciłem się o to z Raymondem Chenem na jego blogu. Microsoft „sprzedaje” NTFS jako „dziedziczenie” uprawnień, a następnie wycofuje się, gdy pojawia się ten konkretny otwór w zbroi. NTFS ma dziedziczenie uprawnień w momencie tworzenia pliku, umieszczając jawne wpisy ACE na plikach podczas ich tworzenia. Twierdziłbym, że tak długo, jak dokumentacja i literatura marketingowa mówi o ich systemie dziedziczenia, tak jakby dokumentacja lub kod działał w czasie rzeczywistym. Powinni wybrać jeden i go naprawić.
Evan Anderson
1
To jest kompromis. Gdyby dziedziczenie odbywało się w czasie rzeczywistym, za każdym razem, gdy otwierasz plik na dole głębokiego drzewa, system operacyjny musiałby uruchomić drzewo, aby dowiedzieć się, jakie są efektywne uprawnienia. Oczywiście kompromis polega na tym, że jeśli zmienisz uprawnienia na szczycie głębokiego drzewa, będziesz musiał długo czekać! Czy usługa Active Directory nie używa tego samego modelu?
John Rennie,
Obiekty AD poprawnie dziedziczą uprawnienia nowego rodzica, gdy są przenoszone między kontenerami, i argumentowałbym, że jest to oczekiwane „poprawne” zachowanie podczas przenoszenia plików / folderów w systemie plików NTFS.
David Archer
3
@renniej: AD korzysta z prawdziwego dziedziczenia w czasie rzeczywistym. System plików Netware robił to przed wiekami. NTFS też by to zrobił, gdyby Microsoft go zaimplementował. To „droga nie zajęta”. Denerwuje mnie to, że dokumentacja Microsoftu dotycząca: NTFS i Explorer „grają” tak, jak dziedziczenie odbywa się w czasie rzeczywistym (tj. Kłamstwa). Powiedz nam, jak to jest, lub napraw zachowanie przy użyciu dokumentacji!
Evan Anderson
@renniej Jak powiedział Evan Anderson, Netware zrobił to w 1990 roku, kiedy byli królem. Problem można rozwiązać, tworząc inny indeks systemu plików, który śledzi „listę widoczności”. Microsoft nie zdecydował się tego zrobić, ale można sobie wyobrazić, że w przyszłości pojawi się wersja Windows Server.
sysadmin1138
6

Używamy NTFS od NT 3.51 i chociaż widzieliśmy ten „problem” (jak prawie wszyscy), nie przysporzyło nam to większych problemów:

  • Zawsze mówimy ludziom, aby kopiowali pliki, jeśli muszą przenieść je z jednego katalogu współdzielonego do innego. „Przytrzymaj klawisz CTRL podczas przeciągania i upewnij się, że mały znak + jest wyświetlany” - to powszechne zdanie.
  • Nasze foldery współdzielone mają dość prostą strukturę, a tworzone przez nas foldery współdzielone nie przechodzą zbyt często między grupami, więc ludzie są bardziej skłonni do kopiowania plików.
  • Widzimy problem głównie w naszej „wspólnej” przestrzeni - folderach, w których każdy może czytać / pisać, ale te katalogi są przeważnie krótkotrwałe, więc problem znika, gdy zostaną usunięte.
Totem - Przywróć Monikę
źródło
4

Obejścia, o których mogę myśleć:

  • znaleźć sposób, aby foldery z różnymi uprawnieniami znajdowały się na różnych woluminach NTFS
  • Wykonaj zaplanowane zadanie (raz na godzinę lub raz dziennie, w zależności od częstotliwości żądań pomocy technicznej), które przebiega przez foldery i resetuje wszystkie uprawnienia, aby były takie same jak uprawnienia z najwyższego poziomu. Jest to mniej niż idealne, zwłaszcza jeśli foldery zawierają wiele plików, ale jest to coś, co rozwiązałoby problem, jeśli nie ma dobrego rozwiązania, takiego jak poprawka rejestru po stronie serwera. Polecenie, które chcesz obejrzeć, nazywa się „cacls”, które możesz następnie dodać do pliku wsadowego.

Zastrzeżenie - pochodzę z uniksowego środowiska (i zaimplementowałem ten ostatni, aby naprawić różne błędy uprawnień - wydaje się to trudne, ale spełnia swoje zadanie), więc może być znacznie lepsza poprawka.

znak
źródło
+1 - pierwsza odpowiedź udzielona przez Marka jest najlepszym wyborem. To bolesne, ale to najlepszy sposób na obejście tej głupiej decyzji projektowej w NTFS 5.
Evan Anderson
Aby rozwinąć: To miejsce, w którym moi znajomi korzystający z SharePoint powiedzieliby „używaj SharePoint”! Podobnie, moi znajomi używający kontroli wersji i znajomi systemu sterowania dokumentami wskazywali na Subversion, Documentum itp. I mówili „użyj tego”. Ten wybór projektu w systemie plików NTFS to duża, ogromna brodawka, i prawie zastanawiasz się, czy Microsoft faktycznie używa własnego oprogramowania, gdy musisz z nim walczyć we własnej sieci. (Krzyczy mi, że Microsoft nie używa ich oprogramowania w taki sam sposób, jak my robimy to z naszymi użytkownikami. Musi być miło mieć firmę wypełnioną w / „pracownikami wiedzy”.)
Evan Anderson
1
Zgadzam się, że idealnie moglibyśmy rozdzielić wszystkie udostępnione foldery na ich własne woluminy, w praktyce jest to niewykonalne w dużym środowisku (tysiące udostępnionych folderów). Ponadto, bez jakiegoś funky punktu połączenia lub voodoo dowiązania symbolicznego, oznacza to utratę możliwości zagnieżdżania podfolderów z różnymi uprawnieniami do nich.
David Archer,
1
@David: Przeniesienie danych między udziałami spowoduje skopiowanie i usunięcie. Przeniesienie danych w ramach udziału spowoduje przeniesienie. Jeśli uczynisz każdy folder współdzielony głównym katalogiem hierarchii uprawnień, a żadne podfoldery nie będą miały bardziej restrykcyjnych uprawnień, rozwiążesz problem. Ale wciąż brzydka. (Mam na nim serwer W2K3 z ponad 2200 pojedynczymi folderami współdzielonymi i nie widzę problemów z wydajnością ...)
Evan Anderson
3

Przenosząc się jako administrator korzystam z xcopy / s / e / c / h / r / k / y - wszystko oprócz własności pliku i listy ACL, co oznacza, że ​​automatycznie rozpoczyna się dziedziczenie listy ACL. Nigdy tak naprawdę nie miałem do czynienia z sytuacją, w której użytkownik przeniesione rzeczy.

Maximus Minimus
źródło
2
Czy Twoi użytkownicy żyją?
Evan Anderson
4
Czasami zastanawiam się ...
Maximus Minimus
@Even: Może żadna z nich nie jest w dwóch grupach!
SamB,
+1 dla osób prowadzących do narzędzia, które rozwiązuje ten problem podczas przechowywania plików (wraz z wieloma innymi); jednak XCOPY został zdeprecjonowany: ROBOCOPY.EXE jest jego bardzo dobrym następcą.
jnaab
2
Przepraszam za nitpicking, ale nie kopiuje _copy_ plików (zamiast _move__ plików?) - wygląda na to, że autor nie ma problemów z kopiowaniem, ma tylko problemy z _moving_. Mogę się mylić z tym brakiem doświadczenia, więc popraw mnie, jeśli się mylę (tj. Czy używasz polecenia „del” po użyciu „xcopy”, więc pliki są w rzeczywistości „kopiowane i usuwane”! = przeniesiony?)
kolemik
3

Korzystam z zasad grupy / zasad bezpieczeństwa / systemu plików, aby śledzić skomplikowane uprawnienia. (NIGDY nie używaj „zastępuj uprawnienia” w polityce).

Zaplanuj CACLS, aby zresetował wszystkie uprawnienia w nocy, a następnie gpupdate / force, aby ponownie zastosować pozwolenie z zasad. Działa jak marzenie.

Alexandru Nica
źródło
Przypuszczalnie dotyczy to tylko serwerów Windows? Ponieważ zasady grupy muszą być stosowane do obiektów domeny, nie można tego zastosować do udziałów pamięci masowej innych niż Windows.
Rich M
2

Od Windows 7 (a może Windows Vista) uprawnienia do folderu lub pliku dziedziczą od rodzica, jeśli folder zostanie przeniesiony, a źródło i miejsce docelowe znajdują się na tym samym woluminie NTFS - jeśli plik lub folder jest kopiowany za pomocą Eksploratora. We wcześniejszym systemie operacyjnym możesz używać Far managera - pozwala włączyć dziedziczenie uprawnień z miejsca docelowego (wraz z mnóstwem innych funkcji). Chociaż Far może wydawać się nieprzyjazny dla ogólnego użytkownika.

GCRaistlin
źródło
0

Bardzo prostym obejściem jest po prostu skompresowanie plików i rozpakowanie ich do katalogu docelowego.

Kok
źródło
Właśnie tego spróbowałem i niestety nie zadziałało. Uprawnienia do archiwum zip są inne, zanim cokolwiek z tym zrobię. Uprawnienia odziedziczone pozostają, ale uprawnienia jawne nie są tworzone.
Rich M