1

Я хочу установить разрешения, чтобы исполняемый файл нельзя было удалить или переименовать, но можно было выполнить.

Когда я отрицаю его удаление, оно также не может быть выполнено. Зачем?

Есть ли способ сделать его неразборчивым, но исполняемым? (Я использую расширенные разрешения, чтобы установить его для выполнения и чтения файла).

1 ответ1

1

Запретить удаление или переименование файла, но разрешить доступ для чтения и выполнения

Попробуйте использовать 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


Дополнительные ресурсы

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