icacls Запретить всем Справочник Удалить разрешение
Я пытаюсь запретить всем пользователям возможность удалять папку (а также ее содержимое, если это возможно).
То, что у меня сейчас есть, не работает.
icacls pics /deny Everyone:(OI)(CI)(DE)
Использование вышеприведенной строки не защищает папку и ее содержимое, так как я все еще могу удалить папку и все файлы в ней.
2 ответа
Я думаю, что нашел решение:
icacls pics /deny Everyone:(OI)(CI)(DE,DC)
который отрицает конкретные права на удаление (DE)
и удалить детей (DC)
,
- Чтобы получить этот язык независимое использование
*S-1-1-0
вместоEveryone
, (см. общеизвестные SID) - Возможно, вы все равно сможете удалить папку, если она окажется пустой. Если это проблема, рассмотрите возможность установки флага только для чтения, например,
attrib +r pics
и затем отрицая(WA)
так что это не может быть изменено (кредит Harry Johnston)
Чтобы предотвратить удаление файла, вам необходимо отказать в разрешении на удаление файла и запретить удаление дочернего элемента (он же "Удаление подпапок и файлов") в содержащей папке. Оба не должны быть разрешены, чтобы действительно предотвратить удаление.
Другими словами, Windows позволяет удалить файл, если предоставлено одно или оба разрешения.
Вышеприведенной части ответа должно быть достаточно, если вам разрешено изменять права доступа к папке, в противном случае существуют хитрости, которые могут помешать удалению вашей папки (все я экспериментировал).
- Вы можете создать (скрытый) фиктивный файл в папке и предотвратить удаление этого файла (снова используя контроль доступа).
- Все действия по удалению, будь то через Windows Explorer GUI или
DEL
или жеRMDIR
команда, не может удалить доступный только для чтения файл или папку напрямую, что вышеупомянутые команды делают, чтобы попытаться удалить атрибут "только для чтения" в файле перед выполнением операции удаления. Таким образом, установка атрибута "только чтение" для папки при отказе в разрешении записи атрибутов (WA) будет эффективно предотвращать удаление папки.
Вот пример пакетного сценария объединения двух трюков:
ECHO.>"myfolder\dummy"
REM Technically R is sufficient to prevent deletion,
REM but it wouldn't hurt to add H and S attributes.
attrib +R +H +S "myfolder\dummy"
REM Deny permissions on dummy file.
REM Hint: S-1-1-0 means Everyone; S-1-5-7 means Anonymous Logon group
icacls "myfolder\dummy" /deny *S-1-1-0:^(DE,WA^) *S-1-5-7:^(DE,WA^)
REM Make folder read-only and deny permissions on it.
attrib +R "myfolder"
icacls "myfolder" /deny *S-1-1-0:^(DE,DC,WA^) *S-1-5-7:^(DE,DC,WA^)