anamet
Goto Top

Mit einer Batchdatei Sicherheitseigenschaften ändern

Hallo zusammen,

kann ich mit einer Batchdatei Sicherheitseigenschaften ändern?

ich habe es ausprobiert aber irgendwie funktioniert es nicht...

Beispiel:

@echo off

rem Pfad zur Zieldatei oder zum Zielordner
set "target=C:\Software\TeamViewer_Setup.exe"  

rem Vollzugriff für alle Benutzer gewähren
icacls "%target%" /grant Everyone:(OI)(CI)F /T  

echo Sicherheitseigenschaften wurden geändert.
pause

oder:

@echo off
set "target=C:\Software\TeamViewer_Setup.exe"  
cacls "%target%" /E /G Everyone:F  
echo Sicherheitseigenschaften wurden geändert.
pause

beides funktioniert nicht. hat jemand eine Idee wie ich es machen könnte?

Content-ID: 668553

Url: https://administrator.de/contentid/668553

Printed on: October 15, 2024 at 06:10 o'clock

kpunkt
kpunkt Oct 02, 2024 at 11:26:36 (UTC)
Goto Top
Muss man cacls nicht bestätigen?
Jupp...Seite hier sagt muss man pipen
https://ss64.com/nt/cacls.html

Aber...funktioniert nicht....Fehlermeldung oder dergleichen?
anamet
anamet Oct 02, 2024 at 11:32:04 (UTC)
Goto Top
TK1987
TK1987 Oct 02, 2024 at 11:36:17 (UTC)
Goto Top
Moin,

wenn du weder Besitzer bist, noch Schreibrechte hast, muss die Batch als Admin gestartet werden und zuerst die Besitzerrechte mit "takeown" übernommen werden. Darüber hinaus musst du in der deutschen Sprachversion "Jeder" statt "Everyone" verwenden.

Zudem: Du willst Rechte für eine Datei setzen, verwendest aber "/T" für Unterordner und willst Objekt- und Containervererbung setzen?!?

@echo off

set "target=C:\Software\TeamViewer_Setup.exe"  

REM Besitzerrechte übernehmen
takeown /f "%target%"  

REM Berechtigung setzen
icacls "%target%" /grant Jeder:F  

Gruß Thomas
kpunkt
kpunkt Oct 02, 2024 updated at 11:38:25 (UTC)
Goto Top
Ich denke, dass es bei dir den User Everyone nicht gibt
Und dann will er eine Bestätigung. Da wirst du pipen müssen.

Tipp: teste immer erst die einzelnen Codes, bevor du den Fehler in der Batch suchst.
Crusher79
Crusher79 Oct 02, 2024 at 11:38:25 (UTC)
Goto Top
 $set_iacl_scan = "icacls `"$($scan_path.Folder)`" /grant $username`:(OI)(CI)F /T"  
cmd /c $set_iacl_scan

So ginge es auch mit PowerShell.
Kraemer
Kraemer Oct 02, 2024 at 11:38:26 (UTC)
Goto Top
Moin,

als allererstes würde ich damit anfangen und dein Problem mit den Zeichensätzen zu lösen.
Ist dir in der Ausgabe das verkrüppelte "geändert" nicht aufgefallen?

Gruß
Crusher79
Crusher79 Oct 02, 2024 at 11:44:26 (UTC)
Goto Top
kpunkt
kpunkt Oct 02, 2024 at 11:56:32 (UTC)
Goto Top
Uhh....sehr guter Link.
anamet
anamet Oct 02, 2024 at 12:08:28 (UTC)
Goto Top
vielen Dank

der fügt jetzt eine neue Gruppe Jeder hinzu mit vollzugriff


und die anderen lässt es unberührt.

kann man die anderen auch ändern? oder wird es durch die neue Gruppe die anderen Gruppen ersetzt / ignoriert
screenshot 2024-10-02 140433
anamet
anamet Oct 02, 2024 at 12:10:56 (UTC)
Goto Top
Zitat von @Kraemer:

Moin,

als allererstes würde ich damit anfangen und dein Problem mit den Zeichensätzen zu lösen.
Ist dir in der Ausgabe das verkrüppelte "geändert" nicht aufgefallen?

Gruß

Das habe ich auf einem neuen PC ausprobiert vielleicht sind noch nicht alle updates durch...
kpunkt
kpunkt Oct 02, 2024 updated at 12:39:50 (UTC)
Goto Top
Naja> Zitat von @anamet:

und die anderen lässt es unberührt.
Du haste es ja auch nur auf "Jeder" angewendet.

Nutze Powershell und nimm da die gewünschten User oder pack die in eine Sicherheitsgruppe und wende das dann an.
https://blog.netwrix.de/2020/01/31/verwalten-von-dateisystem-acls-mit-po ...
simu88
simu88 Oct 02, 2024 at 16:53:08 (UTC)
Goto Top
Hallo kpunkt,

Das Problem, das du beschreibst, liegt wahrscheinlich daran, dass du entweder nicht die nötigen Administratorrechte hast oder die Syntax der Befehle nicht ganz passt. Hier sind einige Punkte und ein optimierter Ansatz, wie du die Sicherheitseigenschaften mit einer Batchdatei ändern kannst.

1. Administratorrechte prüfen
Um Sicherheitseinstellungen (wie Zugriffsrechte) mit icacls oder cacls zu ändern, musst du die Batchdatei als Administrator ausführen. Ohne Administratorrechte schlägt die Änderung der Sicherheitseigenschaften fehl.

2. Verwendung von icacls
Der Befehl icacls ist die modernere und bevorzugte Methode, um Berechtigungen zu ändern. cacls ist veraltet und wird nicht mehr empfohlen. Hier ist eine überarbeitete Version deines Skripts:

batch
@echo off
rem Sicherstellen, dass die Batchdatei mit Administratorrechten ausgeführt wird
net session >nul 2>&1
if %errorlevel% neq 0 (
echo Bitte die Batchdatei als Administrator ausfuehren.
pause
exit /b
)

rem Pfad zur Zieldatei oder zum Zielordner
set "target=C:\Software\TeamViewer_Setup.exe"

rem Vollzugriff für alle Benutzer gewähren
icacls "%target%" /grant Everyone:F /T /C

echo Sicherheitseigenschaften wurden erfolgreich geändert.
pause
Erläuterung der Optionen:
Everyone:F: Dies gewährt allen Benutzern ("Everyone") Vollzugriff ("F") auf die Datei oder den Ordner.
/T: Diese Option sorgt dafür, dass die Berechtigungen rekursiv auf alle Unterverzeichnisse und Dateien angewendet werden (nur relevant für Ordner).
/C: Erzwingt die Fortsetzung, auch wenn bei bestimmten Dateien ein Fehler auftritt.

3. Problembehandlung:
Adminrechte erforderlich: Ohne Administratorrechte können die Befehle nicht korrekt ausgeführt werden. Stelle sicher, dass die Batchdatei mit Administratorrechten gestartet wird (Rechtsklick → "Als Administrator ausführen").
Fehlende Berechtigungen: In einigen Fällen könnte es erforderlich sein, zuerst das Besitzrecht (Ownership) einer Datei oder eines Ordners zu ändern, bevor du die Berechtigungen setzen kannst. Dies kannst du mit takeown tun:
batch
takeown /F "%target%"

4. Weitere Tests
Falls das immer noch nicht funktioniert, kannst du testen, ob die Batchdatei korrekt arbeitet, indem du die Berechtigungen mit icacls manuell im CMD überprüfst. Beispiel:

cmd
icacls "C:\Software\TeamViewer_Setup.exe"
So kannst du die aktuellen Berechtigungen einsehen und sicherstellen, dass sie tatsächlich geändert werden.

Fazit:
Nutze den icacls-Befehl mit den richtigen Administratorrechten und stelle sicher, dass der Batchprozess als Administrator gestartet wird. Dann sollten die Berechtigungen wie gewünscht geändert werden können.

Beste Grüße, Simon