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

1

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

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

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

Меня здесь нет
источник
Как именно вы отрицаете удаление?
Моав
Jus отказал ему в удалении в расширенных разрешениях, а также установил разрешение на выполнение и чтение файла.
Я не здесь

Ответы:

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 введите описание изображения здесь


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

Сок Pimp IT
источник
Хорошая работа, которую вы сделали! Но есть некоторые проблемы: * Мне просто нужна папка, и файл .exe не может быть переименован и удален. Мне нужно еще положить файлы в эту папку и удалить эти файлы. Только .exeфайл не будет удален.
Я не здесь
Также у меня возникла проблема с именем моей папки Pay&Go. Пытался пропустить &с, ^но он работал только для некоторых строк, другие строки (я не знаю почему) не распознали папку.
Я не здесь
Вы очень помогаете! Я действительно благодарю вас за это! Ну, проблема &все еще происходит, первый шаг сценария не распознает имя, но последняя часть распознает. Это странно ... Я жду, что вы думаете, что вы не можете переименовать имя, но разрешаете вставлять файлы;)
Я не здесь
@IamnotHere Но, как я уже сказал, нам нужно поместить ваш exe-файл C:\Folder\Path\<Apps>\file.exeи заблокировать exe-файлы в их собственных подпапках таким образом, чтобы папка, в которой ~\<Apps>находится папка, могла по-прежнему удалять файлы и т. Д. Во избежание переименования и необходимости записи файлов в одно и то же проблема в расположении, поэтому вы можете просто поместить исполняемые файлы в дополнительную подпапку, и я думаю, что все будет хорошо, как золото. Тем не менее, прочитайте мои два других комментария, так как оба из них могут быть полезны, чтобы понять, что именно вы используете , и помочь с &проблемой персонажа.
Сок Pimp IT
Только что попробовал ваш новый скрипт и проблема с &ним решена. Сработало нормально! Итак, часть создания подпапки я попробую завтра. Я расскажу вам, как это было. Спасибо за то время! Я все равно загрузил свой скрипт pastebin.com/CTgZF17K Язык моей системы португальский - бразильский. Я использую Windows 10 Home Single Leanguage.
Я не здесь