Мне нужно (программно) предоставить разрешения на чтение для NETWORK SERVICE для файла глубоко внутри домашнего каталога пользователя. Я сделал это, запустив cacls.exe, и подумал, что все хорошо, но, проверив его, запустив командную строку как NETWORK SERVICE , обнаружил, что type <filename>
дает мне " Доступ запрещен."
Конечно, NETWORK SERVICE не имеет разрешений на чтение для каталога, но, насколько я понимаю, право пользователя «Обход обхода» должно в любом случае разрешать ему чтение файла. Это право предоставляется NETWORK SERVICE по умолчанию, и я подтвердил в локальной политике безопасности, что это не было изменено. Я проверил это, прочитав файл непосредственно в каталоге пользователя, и все еще получал «Доступ запрещен», пока я не предоставил СЕТЕВОЙ СЕРВИС «Список папок / чтение данных» прямо в каталоге.
Мои вопросы:
- Почему это происходит? Почему «обход обхода» не работает так, как мне кажется?
- Что мне с этим делать? Если мне действительно нужно предоставить разрешения на чтение для каждого каталога в пути, какой самый простой способ сделать это, из cacls или сценария PowerShell?
Я тестирую это на Windows 7 x64, но мне нужно, чтобы он работал на Windows XP и выше, как 32-разрядной, так и 64-разрядной.