Jak Windows nadaje uprawneinia ACL na NTFS?


(XOR) #1

Witam,

 

Mam nietypowe pytanie techniczne. Chodzi mi o sposób nadawnia przez system Windows uprawnień ACL.

 

Załóżmy, że chcę dodać jedną grupę dostępową na jakis folder. Sprawa jest prosta - dodajemy grupę w zakładce Zabezpieczenia i aplikuje się ona na folder + znajdującą sie w nim zawartość.

A teraz inna sytuacja, gdy jest kilka grup dostępowych dla jednego folderu (i jego zawartości). Dla przykładu:

 

  • Grupa_Do_Czytania

  • Grupa_Do_Modyfikacji

 

Obie grupy mogę tak samo dodać w zakładce Zabezpieczenia i zastosować zmiany. Pytanie brzmi:

 

Czy w takiej sytuacji obe grupy dodawane są jednocześnie (równolegle) czy może system nadaje najpierw jedną, a potem drugą? Gdy kilkamy na OK (lup Zastosuj) nie widać niestety jak wyglada w tle praca z nadawniem grup na ACL. Na pierwszy rzut oka wygląda to tak jakby Windows nadawał obie grupy równolegle w tym samym czasie. Jakby traktował nadawnia obu grup jako jedno zadanie. ale chcę sie upewnić.

 

Dlaczego o to pytam. Gdy piszę jakiś prosty skrypt do nadawnia uprawnień ACL w żaden sposób nie mogę obejść problemu, żeby nadać np. kilka grup na jeden folder jednocześnie. Tak jak być może się to dzieje, gdy nadaję uprawnienia w systemie okienkowym, poprzez zakładkę Zabezpieczenia. Jak można się domyslić skrypt nadaje najpeirw jedną grupę, potem drugą itd., co jak wiadomo wydłuża cały proces.


(system) #2

Tak, dzieje się to w jednym kroku. Jak spojrzysz na funkcje Windows API, która służy do aktualizacji DACL dla określonego obiektu to przyjmuje ona całą listę ACEl’ów na raz i aktualizuje DACL obiektu w jednym kroku. A z kolei DACL zawiera wszystkie ACE’lki dotyczące wszelkich uprawnień dla tego obiektu.

Można albo aktualizować obecną listę DACL, wtedy stare uprawnienia zostają tylko zaktualizowane nowymi, albo wprowadzić całą nową.

http://technet.microsoft.com/pl-pl/library/cc787853%28v=ws.10%29.aspx

 

Nie orientuję się jak to się odbywa w skryptach, ale jeśli chcesz wprowadzić uprawnienia na raz najpierw musiałbyś zbudować poprawny DACL składający się z odpowiednich ACE’lów i zastosować odpowiednią funkcję.


(XOR) #3

Właśnie takiej informacji potrzebowałem :slight_smile: Dzięki

 

Niestety typowy skrypt, np. w .bat, wykonuje zadania linia po lini. Nakłada grupy jedna po drugiej bez względu czy działa na tym samym folderze. Gdy wykona się jedno zadanie (czyli nałożenie na folder jednej grupy) to dopiero wtedy nakłada następną. Jak się można domyśleć jeśli skrypt ma na ten sam folder, o wielkości 100 GB nałożyć np. 5 grup to czas nakładania grup wydłuża się 5-krotnie niż jakby nadać te 5 grup przez “okienko” Zabezpieczeń. W takim razie muszę poszukać jak z poziomu skryptu można dobrać się do DACL.