Löschzugriff für Benutzer auf Datei verweigern, jedoch den Zugriff ausführen lassen

724
I am not Here

Ich möchte Berechtigungen festlegen, damit eine ausführbare Datei nicht gelöscht oder umbenannt, sondern ausgeführt werden kann.

Wenn ich das Löschen ablehne, kann es auch nicht ausgeführt werden. Warum?

Gibt es eine Möglichkeit, es rückgängig zu machen, aber ausführbar? (Ich verwende erweiterte Berechtigungen, um die Ausführung und das Lesen der Datei zuzulassen).

1
Wie genau haben Sie das Löschen abgelehnt? Moab vor 6 Jahren 0
Jus hat das Löschen in den erweiterten Berechtigungen verweigert. Außerdem wurde festgelegt, dass die Datei ausgeführt und erneut angezeigt werden kann. I am not Here vor 6 Jahren 0

1 Antwort auf die Frage

1
Pimp Juice IT

Löschen oder Umbenennen von Dateien verhindern, jedoch Lese- und Ausführungszugriff zulassen

Versuchen Sie, icacls mit der folgenden Syntax mit der Datei zu vergleichen, die Sie sperren möchten, und mit dem Benutzernamen (oder dem Namen der Sicherheitsgruppe), für den sie gelten soll. Es gibt Kommentarnotizen in dem Skript über jedem angehängten Befehl, in dem :::erläutert wird, was die ACL speziell für die Berechtigungen tut.

Sie sollten die ACL-Berechtigungen auf die ursprüngliche Einstellung zurücksetzen, bevor Sie Änderungen vornehmen, die Sie vor dem Ausführen vorgenommen haben. Vergewissern Sie sich anschließend, dass das Konto die Datei ausführen kann, und führen Sie anschließend das unten stehende Skript aus.

Im Wesentlichen wird dadurch die ACL-Vererbung an den Ordner, in dem sich die ausführbare Datei befindet, und die Datei selbst deaktiviert . Es gewährt dann dem Ordner und der ausführbaren Datei ein explizites Lesen und Ausführen . Um die Umbenennung der Datei zu verhindern, wird die Erstellung von Dateien / Schreibdaten in den Ordner, in dem sich die ausführbare Datei befindet, verhindert. Schließlich wird der Löschzugriff auf den Ordner und die ausführbare Datei explizit verweigert .


Skript

@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 

Hinweis: Ändern Sie den Wert der Exe=Variablen in den vollständigen expliziten Pfad zu der ausführbaren Datei, die Sie sperren möchten, und den Wert der uAccount=Variablen in den Benutzernamen (oder die Namen der Sicherheitsgruppen) des Kontos (oder der Gruppe), das Sie möchten dies muss durchgeführt werden.


GUI-ACL-Berechtigungsklärung

Ordner, in dem sich das Exe befindet

Die Exe-Datei selbst


Weitere Ressourcen

Gute Arbeit, die du gemacht hast! Es gibt jedoch einige Probleme: * Ich brauche nur den Ordner und die ".exe" -Datei kann nicht umbenannt und gelöscht werden. Ich muss noch Dateien in diesen Ordner legen und diese dann löschen. Nur die `.exe`-Datei wird nicht gelöscht. I am not Here vor 6 Jahren 0
Ich habe auch ein Problem mit dem Namen meines Ordners "Pay & Go". Versuchte das "&" mit "^" zu überspringen, aber es funktionierte nur für einige Zeilen, andere Zeilen (ich weiß nicht warum) haben den Ordner nicht erkannt. I am not Here vor 6 Jahren 0
Du hilfst viel! Dafür danke ich dir wirklich! Nun, das Problem des `&` ist noch nicht gelöst, der erste Schritt des Skripts erkennt den Namen nicht, aber der letzte Teil erkennt. Es ist seltsam ... Ich warte, du denkst in einer Weise, um das Umbenennen des Namens zu verweigern, aber das Einfügen von Dateien zu erlauben; I am not Here vor 6 Jahren 0
@IamnotHere Aber wie gesagt, wir müssen dein Exe in `C: \ Folder \ Path \\ file.exe` und sperren Sie die exe-Dateien in ihren eigenen Unterordnern, so dass der Ordner `~ \`Ordner-Resides können immer noch Dateien fallen gelassen werden usw. Das Umbenennen verhindern und die Notwendigkeit, Dateien an den gleichen Speicherort zu schreiben, ist das Problem, sodass Sie die ausführbaren Dateien einfach in einen zusätzlichen Unterordner legen können, und alles wäre Gold wert, denke ich. Lesen Sie meine beiden anderen Kommentare, da beide hilfreich sein können, um genau zu wissen, was Sie verwenden ** und ** bei der `&` - Charakterausgabe. Pimp Juice IT vor 6 Jahren 0
Habe gerade dein neues Skript ausprobiert und das Problem mit dem `&` ist gelöst. Funktionierte gut! Ich werde es morgen beim Erstellen eines Unterordners versuchen. Ich erzähle dir wie es war. Danke für die Weile! Ich habe mein Skript trotzdem hochgeladen. Https://pastebin.com/CTgZF17K Meine Systemsprache ist Portugiesisch - Brasilianisch. Ich verwende Windows 10 Home Single Leanguage. I am not Here vor 6 Jahren 0
Funktionierte einfach gut! Ich habe einen Unterordner erstellt und einige Einstellungen vorgenommen und alles ist gut passiert. Es gibt nur eine letzte Sache, wenn Sie mir helfen können, was ich nicht tun kann. Es gibt eine Möglichkeit, Ordner vom Lesen zu blockieren, aber sie können Dateien einfügen. Verwenden Sie auch crtl + c und löschen Sie mit crtl + v. I am not Here vor 6 Jahren 0
@IamnotHere Hier ist ein Screenshot zur Verdeutlichung: https://i.imgur.com/TXGMDtN.png, aber es scheint, als würde ein explizites "Ablehnen" der Berechtigung `read` only 'nur für den Ordner'` only` 'das Lesen verhindern Daten aus dem Ordner können Sie jedoch noch einfügen oder eine Datei in den Ordner ziehen. Ich persönlich würde mit einer Lösung gehen, in der sie schreiben dürfen, dann sollte das Lesen kein Problem sein, aber diejenigen, die ich nicht schreiben möchte, lesen auch nicht daraus und verwenden eine andere Gruppe oder einen Administrator Konto für diejenigen, die schreiben. Das scheint zwar zu funktionieren, könnte aber ein paar Gotchas sein Pimp Juice IT vor 6 Jahren 0