Запретить удаление доступа для пользователя к файлу, но разрешить ему выполнять доступ
Я хочу установить разрешения, чтобы исполняемый файл нельзя было удалить или переименовать, но можно было выполнить.
Когда я отрицаю его удаление, оно также не может быть выполнено. Зачем?
Есть ли способ сделать его неустранимым, но исполняемым? (Я использую расширенные разрешения, чтобы установить его для выполнения и чтения файла).
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