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

612
I am not Here

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

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

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

1
Как именно вы отрицаете удаление? Moab 6 лет назад 0
Jus отказал ему в удалении в расширенных разрешениях, а также установил разрешение на выполнение и чтение файла. I am not Here 6 лет назад 0

1 ответ на вопрос

1
Pimp Juice IT

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

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

enter image description here

Сам файл exe enter image description here


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

Хорошая работа, которую вы сделали! Но есть некоторые проблемы: * Мне просто нужна папка, и файл .exe не может быть переименован и удален. Мне все еще нужно положить файлы в эту папку и удалить эти файлы. Только файл `.exe` не будет удален. I am not Here 6 лет назад 0
Также у меня возникла проблема с именем моей папки `Pay & Go`. Пытался пропустить `&` с `^`, но он работал только для некоторых строк, другие строки (я не знаю почему) не распознали папку. I am not Here 6 лет назад 0
Вы очень помогаете! Я действительно благодарю вас за это! Ну, проблема `&` все еще происходит, первый шаг сценария не распознает имя, но последняя часть распознает. Это странно ... Я жду, что вы думаете, что вы не можете переименовать имя, но разрешаете вставлять файлы;) I am not Here 6 лет назад 0
@IamnotHere Но, как я уже сказал, мы должны поместить ваш exe-файл в `C: \ Folder \ Path \\ file.exe` и заблокируйте исполняемые файлы в их собственных подпапках, таким образом папка `~ \`в папках постоянно могут быть пропущены файлы и т. д. Проблема с переименованием и необходимостью записи файлов в одно и то же место является проблемой, поэтому вы можете просто поместить исполняемые файлы в дополнительную подпапку, и я думаю, что все будет хорошо, как золото. Тем не менее, прочитайте мои два других комментария, так как оба из них могут быть полезны, чтобы понять, что вы используете ** точно **, и помочь с проблемой символа `&`. Pimp Juice IT 6 лет назад 0
Только что попробовал ваш новый скрипт и проблема с `&` решена. Работал нормально! Итак, часть создания подпапки я попробую завтра. Я расскажу вам, как это было. Спасибо за то время! Я все равно загрузил свой скрипт https://pastebin.com/CTgZF17K Язык моей системы - португальский - бразильский. Я использую Windows 10 Home Single Leanguage. I am not Here 6 лет назад 0
Просто работал нормально! Я сделал подпапку, некоторые настраиваются, и все произошло хорошо. Есть только одна последняя вещь, если вы можете мне помочь, что я не могу сделать. Есть способ заблокировать чтение папки, но может ли это поместить файлы в? Кроме того, используя crtl + c и отбрасывая с помощью crtl + v. I am not Here 6 лет назад 0
@IamnotHere Вот снимок экрана, чтобы уточнить: https://i.imgur.com/TXGMDtN.png, но, похоже, что явное «запрет» разрешения «только для чтения» на «только папку» делает его таким, что вы не можете читать данные из папки, но вы по-прежнему можете вставить в нее или перетащить в нее файл. Лично я бы пошел с решением, где им разрешено писать в него, тогда чтение с него не должно быть проблемой, но те, кому я не хочу писать, также не читают с него и используют другую группу или администратора учитывать тех, кто пишет в него. Это, кажется, работает, но, возможно, некоторые ошибки Pimp Juice IT 6 лет назад 0

Похожие вопросы