Используйте icacls, чтобы сделать каталог доступным только для чтения в Windows 7
Я пытаюсь протестировать некоторые исключения файловой системы в приложении на основе Java.
Мне нужно найти способ создать каталог, который находится в%TMP%, который установлен только для чтения.
По сути, на платформах UNIX/POSIX я могу выполнить команду chmod -w и получить этот эффект. Под Windows 7/NTFS это, конечно, другая история.
Я сталкиваюсь с несколькими проблемами по этому вопросу. У моего пользователя есть "административное" право (хотя это не всегда так), и поэтому каталог создается с помощью ACL, в том числе:
- NT AUTHORITY \ SYSTEM
- BUILTIN \ Администраторы
- <мой текущий пользователь>
Есть ли способ использовать icacls, чтобы по существу перевести этот каталог в состояние, в котором он является PERIOD только для чтения, выполнить мой тест, а затем восстановить ACL для удаления?
РЕДАКТИРОВАТЬ С информацией, предоставленной @Ansgar Wiechers, я смог найти решение.
Я использовал следующее:
icacls dirname /deny %username%:(WD)
На странице, расположенной здесь, я нашел это в разделе замечаний:
icacls preserves the canonical order of ACE entries as:
* Explicit denials
* Explicit grants
* Inherited denials
* Inherited grants
Выполнив вышеупомянутую команду icalcs, я смог установить способность текущего пользователя записывать или добавлять файлы (WD) в каталог, чтобы запретить.
Тогда встал вопрос о возврате его на государственный почтовый тест:
icacls dirname /reset /t /c
Готово
1 ответ
Если у вашего пользователя есть права администратора, он всегда может восстановить любые разрешения, которые вы от него отозвали. В этом отношении учетные записи администраторов в Windows практически совпадают с учетными записями root в Linux.
Что вы можете сделать, хотя это создать ACL, который будет deny
доступ для записи в Everyone
, Это делает папку доступной только для чтения, как это может быть в Windows.
icacls DIRECTORY /deny Everyone:(CI)(OI)W
Остерегайтесь этого deny
ACL всегда переопределяют allow
ACL, поэтому даже если кому-то будет предоставлен явный доступ, его доступ по-прежнему будет отклонен.