Я пытаюсь протестировать некоторые исключения файловой системы в приложении на основе 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 ответ1

1

Если у вашего пользователя есть права администратора, он всегда может восстановить любые разрешения, которые вы от него отозвали. В этом отношении учетные записи администраторов в Windows практически совпадают с учетными записями root в Linux.

Однако вы можете создать ACL, который deny доступ на запись Everyone . Это делает папку доступной только для чтения, как это может быть в Windows.

icacls DIRECTORY /deny Everyone:(CI)(OI)W

Помните, что deny списки ACL всегда переопределяют allow ACL, поэтому даже если кому-то предоставлен явный доступ, его доступ по-прежнему будет фактически запрещен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .