Запазване и възстановяване на NTFS разрешения с помощта на ICACLS

Управлението на разрешенията за NTFS за папки на файлов сървър понякога може да бъде досадна задача. Небрежните промени в горното (коренното) ниво на директорията могат да доведат до неочаквани резултати, когато индивидуалните разрешения за файлове и директории от по-ниско ниво се променят насилствено. Преди значителна промяна в разрешенията (пренасяне, актуализиране на ACL, миграция на ресурси) в папка NTFS (мрежов дял) е препоръчително да имате под ръка резервно копие на старите разрешения, което ще ви позволи да се върнете към първоначалните настройки или поне да изясните старите права за достъп до конкретен файл или директория.

За да експортирате / импортирате текущите разрешения на директория NTFS, можете да използвате помощната програма icacls, която е включена в Windows. Помощната програма се използва за получаване и промяна на списъци за контрол на достъпа (ACL) за файлови системни обекти.

За да получите всички ACL за конкретна папка и поддиректории и файлове и да ги запишете в текстов файл, трябва да стартирате командата

icacls g: \ veteran / save veteran_ntfs_perms.txt / t / c
Файлът с разрешения по подразбиране се запазва в текущата потребителска папка.

забележка. Превключвателят / t показва, че трябва да получите ACL за всички детски поддиректории и файлове, ключът / c ви позволява да игнорирате грешки в достъпа. Чрез добавяне на превключвателя / q можете да деактивирате показването на информация за успешни действия при достъп до обекти на файловата система.

В зависимост от броя на файловете и папките процесът на експортиране на разрешения може да отнеме доста време. След завършването на командата ще се покажат статистически данни за броя на обработените и пропуснати файлове..

Успешно обработени 3001 файла; Неуспешна обработка на 0 файла

Отворете файла veteran_ntfs_perms.txt с помощта на всеки текстов редактор. Както можете да видите, той съдържа пълен списък на папки и файлове в директорията и за всяко текущо разрешение са посочени във формата SDDL (Език на дескриптора на сигурността).

Например, текущите разрешения за NTFS в корена на папката са както следва:

D: PAI (A; OICI; FA;; BA) (A; OICIIO; FA;;; CO) (A; OICI; 0x1200a9 ;;; S-1-5-21-2340243621-32346796122-2349433313-23777994) (A; OICI; 0x1301bf ;;; S-1-5-21-2340243621-32346796122-2349433313-23777993) (A; OICI; FA ;;; SY) (A; OICI; FA ;;; S-1-5 -21-2340243621-32346796122-2349433313-24109193) S: AI

Този ред описва достъп за няколко групи или потребители. Няма да задълбочаваме подробно синтаксиса на SDDL (ако желаете, помощ за него можете да намерите в MSDN). Например, ще анализираме малко парче SDDL, като изберем само един предмет:

(A; OICI; FA ;;; S-1-5-21-2340243621-32346796122-2349433313-24109193)

А - тип достъп (разрешен)

OICI - флаг за наследство (ОБЕКТ ИНЕРИТ + КОНТАЙНЕР ИНЕРИТ)

ФА - тип разрешение (SDDL_FILE_ALL - всичко е позволено)

S-1-5-21-2340243621-32346796122-2349433313-24109193 - SID на акаунта или групата в домейна, за който са зададени разрешения. За да преобразувате SID в името на акаунт или група, използвайте командата:

$ objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-2340243621-32346796122-2349433313-24109193")
$ objUser = $ objSID.Translate ([System.Security.Principal.NTAccount])
$ objUser.Value

Или команди Get-ADUser -Identity SID или Get-ADGroup -Identity SID

Така научихме, че потребителят corp \ dvivan има права за пълен контрол върху тази директория.

За да зададете автоматично NTFS решения на обекти в тази директория в съответствие със стойностите, съхранени в архивния файл, изпълнете командата:

icacls g: \ / възстанови veteran_ntfs_perms.txt / t / c

забележка. Моля, обърнете внимание, че при импортиране на разрешения от файл се посочва пътят към родителската папка, но не и името на самата директория.

В края на възстановяването на разрешения ще се показва и статистика за броя на обработените файлове..