Я работаю с автоматизированным набором тестов программного проекта. У меня есть автоматизированный тестовый случай, который должен проверить, что код работает правильно, когда найден определенный файл, но у программы нет надлежащих прав на чтение содержимого этого файла. Этот тестовый случай в настоящее время работает на Linux и macOS, но я пытаюсь заставить его работать и на Windows.
Файл создается процессом теста, изменяется так, чтобы удалить разрешение на чтение, а затем код пытается прочитать файл, и тест проверяет, что код дает сбой ожидаемым образом. После запуска теста разрешения восстанавливаются (при необходимости), а файл удаляется.
В Linux и macOS разрешение на чтение удаляется с помощью chmod 000 unreadable.txt
, что делает файл недоступным для чтения всем (кроме root). Я пытаюсь найти похожее решение в Windows, где я могу сделать этот тестовый файл недоступным для чтения текущим пользователем с помощью инструментов командной строки, поэтому тестируемая программа может потерпеть неудачу.
Насколько я понимаю, команда вроде этой icacls unreadable.txt /deny 'Everyone:(RC)'
должна была бы сработать. icacls
подтвердить правило запрета:
Everyone:(DENY)(Rc,S)
но тем не менее у меня есть полный доступ для чтения файла.
Я пробовал различные заклинания вызовов icacls
и cacls
, с различными комбинациями попыток явного запрета для моей конкретной учетной записи пользователя и т. д. Все безрезультатно.
Я начинаю задаваться вопросом: разве в Windows невозможно запретить владельцу файла читать его?
Или, если это возможно, какую командную строку мне нужно ввести, чтобы сделать файл недоступным для чтения владельцу?