Jak zamienić uprawnienia i wszystko w środku na icacls w systemie Windows Server 2012?

15

Korzystanie z systemu Windows Server 2012 R2 i Windows Server 2008 R2.

Mam folder o nazwie C:\temp\testi chcę przyznać dostęp SYSTEMoraz użytkownikowi i wszystkie pliki i podkatalogi oraz usunąć wszystko inne. Próbowałem tego polecenia, ale wszystkie istniejące uprawnienia pozostają:

Istniejące uprawnienia to:

Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         BUILTIN\Users Allow  ReadAndExecute, Synchronize
         BUILTIN\Users Allow  AppendData
         BUILTIN\Users Allow  CreateFiles
         CREATOR OWNER Allow  268435456

Chcę usunąć wszystkie listy ACL oprócz SYSTEMi dodać<DOMAIN>\<USER>

Próbowałem tego polecenia:

icacls c:\temp\test /grant:r <DOMAIN>\<USER>:(OI)(CI)F /t

processed file: c:\temp\test
Successfully processed 1 files; Failed processing 0 files

Kiedy później patrzę na uprawnienia, <DOMAIN>\<USER>ma ono odpowiednie uprawnienia, ale wszystkie pozostałe pozostają. Myślałem, że /grant:rzastąpiłem wszystkie uprawnienia? Czy wiesz, jakie polecenie muszę uruchomić, aby usunąć wszystkie pozostałe uprawnienia?

Mark Allison
źródło
To polecenie robi dokładnie to, co chcę, cacls c:\temp\test /t /g <DOMAIN>\<USER>:Fale słyszałem, że icacls go zastąpił. Czy ktoś może pokazać mi równoważną wersję icacls, aby uzyskać takie samo zachowanie?
Mark Allison
3
/grant:rusuwa tylko istniejące wyraźne uprawnienia, nie odziedziczone z powyższego folderu. Trzeba też to uwzględnić /inheritance:r.
TheCleaner
1
Jeśli CACLS wykonuje to zadanie, nie ma powodu, dla którego nie można go użyć, bez względu na to, czy jest przestarzałe, czy nie.
joeqwerty
@joeqwerty prawda, ale jest tak brudna. cacls sam nawet zwraca komunikat, aby użyć icacls, więc musi być bardzo dobry powód. NOTE: Cacls is now deprecated, please use Icacls.
Mark Allison
2
@ joeqwerty cacls.exemoże ustawiać listy ACL w niewłaściwej kolejności, potencjalnie powodując problemy (pozostawię to jako ćwiczenie dla czytelnika).
Craig,

Odpowiedzi:

16

Jak wspomniano w komentarzach, musisz również użyć /inheritance:rprzełącznika, aby usunąć odziedziczone uprawnienia.

/grant:r usuwa tylko wyraźne uprawnienia.

icacls c:\temp\test /inheritance:r /grant:r <DOMAIN>\<USER>:(OI)(CI)F /T

Aby również przyznać SYSTEM:

icacls c:\temp\test /inheritance:r /grant:r <DOMAIN>\<USER>:(OI)(CI)F /grant:r SYSTEM:(OI)(CI)F /T
krisFR
źródło
7

Ten parametr /grant:rnie działał dla mnie. Musiałem użyć, /resetaby przywrócić uprawnienia tylko do dziedziczenia, a następnie usunąć odziedziczone uprawnienia. Nie zapomnij zmienić podkatalogów z /tflagą.

Jan Zahradník
źródło