Запретить удаление или переименование файла, но разрешить доступ для чтения и выполнения
Попробуйте использовать icacls с приведенным ниже синтаксисом для файла, который вы хотите заблокировать, и с именем пользователя (или именем группы безопасности), для которого он будет применяться. В скрипте над каждой командой есть примечания к комментариям, в которых поясняется, :::
что каждая из них делает специально для ACL-прав.
Вы должны сбросить права доступа ACL обратно к первоначальным настройкам, прежде чем вносить какие-либо изменения, сделанные до этого. После этого убедитесь, что учетная запись может выполнить файл, а затем запустите приведенный ниже сценарий.
По сути, это отключает наследование ACL для папки, в которой находится исполняемый файл, и самого файла. Затем он предоставляет явное чтение и выполнение как для папки, так и для исполняемого файла. Чтобы предотвратить переименование файла, он запрещает создание файлов / запись данных в папку, в которой находится исполняемый файл. Наконец, он явно запрещает удаление доступа как к папке, так и к исполняемому файлу.
скрипт
@ECHO ON SETLOCAL ENABLEDELAYEDEXPANSION SET "Exe=C:\Folder\Path\file.exe" SET "uAccount=Username" FOR %%a in ("%Exe%") DO SET "eFolder=%%~DPa" ::: This strips the last "\" from the folder the exe resides so icacls can process SET "eFolder=!eFolder:~0,-1!" ::: Disables ACL inheritence on the folder the exe file resides but copies all ACLs as inherited before removing ICACLS "!eFolder!" /inheritance:d /grant:r "%uAccount%:(OI)(IO)" /C ::: Remove all granted permission ACLs on only the folder the exe file resides ICACLS "!eFolder!" /remove:g "%uAccount%" /C ::: Remove all denied permission ACLs on only the folder the exe file resides ICACLS "!eFolder!" /remove:g "%uAccount%" /C ::: Grants explicit read and execute ACL access on only the folder the exe file resides ICACLS "!eFolder!" /grant:r "%uAccount%:(RX)" /C ::: Denies delete ACL access on only the folder the exe file resides ICACLS "!eFolder!" /deny "%uAccount%":(DE) ::: Denies create files / write data ACL access on only the folder the exe file resides ICACLS "!eFolder!" /deny "%uAccount%":(WD) ::: Disables ACL inheritence on the exe file only but copies all ACLs as inherited before removing ICACLS "%Exe%" /inheritance:d /grant:r "%uAccount%:(OI)(IO)" /C ::: Remove all granted permission ACLs on only the exe file ICACLS "%Exe%" /remove:g "%uAccount%" /C ::: Remove all denied permission ACLs on only the exe file ICACLS "%Exe%" /remove:g "%uAccount%" /C ::: Grants explicit read and execute ACL access only to the exe file ICACLS "%Exe%" /grant:r "%uAccount%:(RX)" /C ::: Grants an explicit deny of delete ACL access only to the exe file ICACLS "%Exe%" /deny "%uAccount%":(DE) PAUSE EXIT
Примечание. Измените значение
Exe=
переменной, указав полный явный путь к исполняемому файлу, который вы хотите заблокировать, и значениеuAccount=
переменной, указав имя пользователя (или имена групп безопасности) учетной записи (или группы), которую вы хотите это должно быть выполнено.
Разъяснение разрешений ACL GUI
Папка, в которой находится exe