Запретить удаление или переименование файла, но разрешить доступ для чтения и выполнения
Попробуйте использовать 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
Сам файл exe
Дополнительные ресурсы