Як замінити дозволи та все, що знаходиться всередині, icacls на Windows Server 2012?


15

Використання Windows Server 2012 R2 І Windows Server 2008 R2.

У мене є папка під назвою, C:\temp\testі я хочу надати доступ до SYSTEMкористувача та всіх файлів і підкаталогів, а також видалити все інше. Я спробував цю команду, але всі існуючі дозволи залишаються:

Існуючі дозволи:

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

Я хочу видалити всі ACL, крім SYSTEM, та додати<DOMAIN>\<USER>

Я спробував цю команду:

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

Коли я переглядаю дозволи, то вони <DOMAIN>\<USER>мають правильні, але всі інші залишаються. Я думав /grant:rзамінив усі дозволи? Чи знаєте ви, яку команду мені потрібно виконати, щоб видалити всі інші дозволи?


Ця команда робить саме те, що я хочу, cacls c:\temp\test /t /g <DOMAIN>\<USER>:Fале я чув, що icacls замінив її, чи може хтось показати мені еквівалентну версію icacls, щоб викликати таку саму поведінку?
Марк Еллісон

3
/grant:rвидаляє лише наявні явні дозволи, не успадковані з папки вище. Вам також потрібно буде включити /inheritance:r.
TheCleaner

1
Якщо CACLS виконує цю роботу, то немає ніяких причин, коли ви не можете її використовувати, незалежно від того, була вона застарілою чи ні.
joeqwerty

@joeqwerty правда, але вона відчувається такою брудною. cacls сам навіть повертає повідомлення про використання icacls, тому має бути дуже вагома причина. NOTE: Cacls is now deprecated, please use Icacls.
Марк Еллісон

2
@joeqwerty cacls.exeможе встановити ACL в неправильному порядку, що може спричинити проблеми (я залишаю це як вправу для читача).
Крейг

Відповіді:


16

Як згадуються коментарі, вам також потрібно використовувати /inheritance:rперемикач, щоб видалити успадковані дозволи.

/grant:r видаляє лише явні дозволи.

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

Також надавати SYSTEM:

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

7

Параметр /grant:rдля мене не працював. Мені довелося використовувати, /resetщоб повернути дозволи лише на спадщину, а потім видалити успадковані дозволи. Не забудьте змінити підкаталоги з /tпрапором.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.