Antworten:
Ab Vista cacls
ist veraltet. Hier sind die ersten paar Hotlines:
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
Sie sollten icacls
stattdessen verwenden. So gewähren Sie John die volle Kontrolle über den D:\test
Ordner und alle seine Unterordner:
C:\>icacls "D:\test" /grant John:(OI)(CI)F /T
Laut MS-Dokumentation:
F
= Volle KontrolleCI
= Container Inherit - Dieses Flag gibt an, dass untergeordnete Container diesen ACE erben.OI
= Object Inherit - Dieses Flag gibt an, dass untergeordnete Dateien den ACE erben./T
= Rekursiv auf vorhandene Dateien und Unterordner anwenden. ( OI
und CI
gelten nur für neue Dateien und Unterordner). Bildnachweis: Kommentar von @AlexSpence.Für eine vollständige Dokumentation können Sie " icacls
" ohne Argumente ausführen oder die Microsoft-Dokumentation hier und hier lesen
C:\>icacls "D:\test" /grant "John:(OI)(CI)F" /T
Sie können auch ICACLS verwenden.
Um die gewähren Benutzergruppe Vollzugriff auf einen Ordner:
>icacls "C:\MyFolder" /grant Users:F
So erteilen Ändern Erlaubnis IIS Benutzer für C:\MyFolder
(wenn Sie benötigen , um Ihre IIS Fähigkeit zu R / W - Dateien in bestimmten Ordner hat):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
Wenn Sie tun ICACLS /? Sie können alle verfügbaren Optionen anzeigen.
cacls
weg ist, ist es noch mehr Grund, icacls zu verwenden .
/grant Users:(OI)(CI)F
verwendet
Users
etwas anderes ersetzen oder NEIN? Lauticacls "C:\MyFolder" /grant Users:F
Öffnen Sie eine Eingabeaufforderung und führen Sie diesen Befehl aus:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F
gibt vollen Zugriff.
/q /c /t
wendet die Berechtigungen auf Unterordner an.
Hinweis: Manchmal hilft "Als Administrator ausführen".
Verwenden cacls
Befehl. Informationen finden Sie hier .
CACLS-Dateien / e / p {USERNAME}: {PERMISSION}
Wo,
/ p: Neue Berechtigung festlegen
/ e: Berechtigung bearbeiten und alte Berechtigung beibehalten, dh ACL bearbeiten, anstatt sie zu ersetzen.
{USERNAME}: Name des Benutzers
{ERLAUBNIS}: Die Erlaubnis kann sein:
R - Lesen
W - Schreiben
C - Ändern (schreiben)
F - Volle Kontrolle
Gewähren Sie beispielsweise Rocky Full (F) die Steuerung mit folgendem Befehl (geben Sie an der Windows-Eingabeaufforderung ein):
C:> CACLS-Dateien / e / p rocky: f
Lesen Sie die vollständige Hilfe, indem Sie den folgenden Befehl eingeben:
C:> cacls /?
cacls
ist relevant; es ist noch verfügbar in Windows 10
; Microsoft würde auch cmd.exe
zugunsten von Powershell ablehnen.
cmd.exe
ist nicht veraltet und ist wahrscheinlich nicht, so dass das überhaupt kein Punkt für icacls
das Gegenteil ist.
cacls.exe
. Ich habe auch nicht erwähnt, dass dies cmd.exe
bereits veraltet ist. Ich denke, die Leute sollten sich zumindest der Verfügbarkeit in höheren Versionen bewusst sein, auch nur aus Gründen der Abwärtskompatibilität oder aus anderen Gründen.
Ich versuche den folgenden Weg und es funktioniert für mich:
1. Öffnen cmd.exe
2. takeown /R /F *.*
3. icacls * /T /grant [username]:(D)
4.del *.* /S /Q
Damit die Dateien zu meinem eigenen Zugriff werden und "Löschen" zugewiesen werden und ich dann die Dateien und Ordner löschen kann.
Beschädigte Berechtigungen: Wiedererlangung des Zugriffs auf einen Ordner und seine Unterobjekte
Obwohl die meisten Antworten auf die Frage einen gewissen Wert haben, bietet meiner Meinung nach keine vollständige Lösung. Die folgende (möglicherweise) perfekte Lösung für Windows 7, wenn Sie durch beschädigte Berechtigungseinstellungen aus einem Ordner ausgeschlossen werden:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
Für Windows 10 muss der Benutzer / die SID nach der /remove:d
Option angegeben werden:
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
.
Anmerkungen :
Der Befehl wird auf das angegebene Verzeichnis angewendet.
Wenn Sie den Benutzer "Jeder" angeben, wird die größtmögliche Berechtigung festgelegt, da jeder mögliche Benutzer eingeschlossen ist.
Die Option "/ remove: d" löscht alle möglicherweise vorhandenen expliziten DENY-Einstellungen, da diese explizite ALLOW-Einstellungen überschreiben: eine notwendige Voraussetzung für die Erstellung einer neuen ALLOW-Einstellung. Dies ist nur eine Vorsichtsmaßnahme, da häufig keine DENY-Einstellung vorhanden ist, aber besser sicher als leid.
Die Option "/ grant" erstellt eine neue ALLOW-Einstellung, eine explizite Berechtigung, die alle expliziten ALLOW-Einstellungen ersetzt (": r"), die möglicherweise vorhanden sind.
Der "F" -Parameter (dh die erstellte Berechtigung) gewährt eine vollständige Kontrolle.
Der Parameter "/ T" fügt eine Rekursion hinzu und wendet diese Änderungen auf alle aktuellen Unterobjekte im angegebenen Verzeichnis (dh Dateien und Unterordner) sowie auf den Ordner selbst an.
Die Parameter "(OI)" und "(CI)" fügen ebenfalls eine Rekursion hinzu und wenden diese Änderungen auf nachfolgend erstellte Unterobjekte an.
.
ADDENDUM (10.02.2019) -
Die obige Windows 10-Befehlszeile wurde mir heute freundlicherweise vorgeschlagen, also hier ist sie. Ich habe Windows 10 nicht zum Testen, aber probieren Sie es bitte aus, wenn Sie es haben (und dann werden Sie bitte unten einen Kommentar posten ).
Die Änderung betrifft nur das Entfernen der DENY-Einstellung als ersten Schritt. Möglicherweise ist keine DENY-Einstellung vorhanden, sodass diese Option möglicherweise keinen Unterschied macht. Mein Verständnis ist, dass Sie unter Windows 7 keinen Benutzer nach / remove angeben müssen : d, aber ich könnte mich darin irren!
.
ADDENDUM (21.11.2019) -
Benutzer astark empfiehlt, Jeder durch den Begriff * S-1-1-0 zu ersetzen, damit der Befehl sprachunabhängig ist. Ich habe nur eine englische Installation von Windows, daher kann ich diesen Vorschlag nicht testen, aber es scheint vernünftig.
Invalid parameter "/remove:d"
Ich kämpfte mit diesem für eine Weile , und nur die Antworten in diesem Thread die Kombination funktionierte für mich (unter Windows 10):
1. Öffnen Sie cmd oder Powershell und mit Dateien in den Ordner
2. takeown / R / F .
3. icacls * / T / grant dan: F.
Viel Glück!
Nur für den Fall, dass jemand auf dieser Seite stolpert, wenn Sie verschiedene Berechtigungen in einem Befehl aneinanderreihen möchten, habe ich Folgendes verwendet:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
Beachten Sie die CSV-Zeichenfolge für die verschiedenen Berechtigungen.
Mit einem Excel-VBA-Skript zum Bereitstellen und Erstellen von Konten. Ich musste dem Ordner und den Unterordnern, die vom Tool mithilfe des x-Kontos unseres Administrators erstellt wurden, unserem neuen Benutzer die Berechtigungen für alle Rechte erteilen.
cacls sah ungefähr so aus: cacls \ FileServer \ Users \ Benutzername / e / g Domain \ Benutzername: C.
Ich musste diesen Code auf Windows 7 und höher migrieren. Meine Lösung stellte sich heraus:
icacls \ FileServer \ Users \ Benutzername / Grant: r Domäne \ Benutzername: (OI) (CI) F / t
/ grant: r - Gewährt bestimmte Benutzerzugriffsrechte. Berechtigungen ersetzen zuvor erteilte explizite Berechtigungen. Ohne: r werden Berechtigungen zu zuvor erteilten expliziten Berechtigungen hinzugefügt
(OI) (CI) - Dieser Ordner, Unterordner und Dateien.
F - Vollzugriff
/ t - Durchlaufe alle Unterordner, um Dateien / Verzeichnisse abzugleichen.
Dies gab mir einen Ordner auf diesem Server, in dem der Benutzer nur diesen Ordner sehen und Unterordner erstellen konnte, in dem er Dateien lesen und schreiben konnte. Sowie neue Ordner erstellen.
XCACLS.VBS ist ein sehr leistungsfähiges Skript, das ACL-Informationen ändert / bearbeitet. Die Hilfe c: \ windows \ system32 \ cscript.exe xcacls.vbs gibt alle Schalter und Optionen zurück.
Sie können die offizielle Verteilung von der Microsoft Support-Seite erhalten
XCACLS.VBS
sie zu finden ist?
Die Erstellung von Massenordnern und die Erteilung von Berechtigungen funktionieren mit dem folgenden Powershell-Skript.
Import-Csv "D:\Scripts\foldernames.csv" | foreach-object {
$username = $_.foldername
# foldername is the header of csv file
$domain = “example.com”
$folder= "D:\Users"
$domainusername = $domain+“\”+$username
New-Item $folder\$username –Type Directory
Get-Acl $folder\$username
$acl = Get-Acl $folder\$username
$acl.SetAccessRuleProtection($True, $False)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("SYSTEM","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$domain\Domain Admins","Read", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($domainusername,"Modify", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl $folder\$username $acl
}
Hinweis: Sie müssen denselben Domänenbenutzernamen in der CSV-Datei erstellen, da sonst Berechtigungsprobleme auftreten
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
ausgezeichneter Punkt Călin Darie
Ich hatte viele Skripte, um cacls zu verwenden. Ich verschiebe sie zu icacls, aber ich konnte kein Skript finden, um die Root-Mount-Volumes zu ändern. Beispiel: d: \ datafolder. Ich habe schließlich das folgende Skript erstellt, das das Volume als temporäres Laufwerk bereitstellt und dann sec anwendet. dann wird es abmontiert. Nur so habe ich festgestellt, dass Sie die Root-Mount-Sicherheit aktualisieren können.
1 ruft die Ordner-Mount-GUID in eine temporäre Datei ab und liest dann die GUID, um das Volume als temporäres Laufwerk zu mounten dann wird die angewendete sek.
Hier ist ein Beispiel meines Skripts:
**mountvol "d:\%1" /L >tempDrive.temp && FOR /f "tokens=*" %%I IN (tempDrive.temp) DO mountvol X: %%I
D:\tools\security\icacls.exe %~2 /grant domain\group:(OI)(CI)F /T /C >>%~1LUNsec-%TDWEEK%-%TMONTH%-%TDAY%-%TYEAR%-%THOUR%-%TMINUTE%-%TAM%.txt
if exist x:\*.* mountvol X: /d**
Ich bin Administrator und ein Skript hat meinem Namen die Berechtigung "Verweigern" für alle Dateien und Unterordner in einem Verzeichnis erteilt. Ausführen dericacls "D:\test" /grant John:(OI)(CI)F /T
Befehls hat nicht funktioniert, da das "Verweigern" anscheinend nicht direkt aus meinem Namen aus dieser Liste entfernt wurde.
Das einzige, was für mich funktioniert hat, ist das Zurücksetzen aller Berechtigungen mit dem icacls "D:\test" /reset /T
Befehl.
in Windows 10 ohne "c:>" und ">"
Beispielsweise:
F = Full Control
/e : Edit permission and kept old permission
/p : Set new permission
cacls "Datei- oder Ordnerpfad" / e / p Benutzername: F.
(Auch dies behebt die Fehler 2502 und 2503)
cacls "C: \ Windows \ Temp" / e / p Benutzername: F.
Das hat bei mir funktioniert:
Öffnen Sie manuell den Ordner, für den der Zugriff verweigert wird.
Wählen Sie die ausführbare Datei / Anwendungsdatei in diesem Ordner aus.
Klicken Sie mit der rechten Maustaste darauf und gehen Sie zu Properties->Compatibility
Jetzt sehen Sie das Privilege Levelund überprüfen Sie es fürRun As Administrator
Klicken Sie auf Change Settings for all users.
Das Problem ist jetzt gelöst.