Ersetzen Sie die Ordnerberechtigungen durch icacls

2329
liamZ

Ich möchte die Berechtigungen eines Ordners ersetzen. Zuerst habe ich das gemacht:

icacls folder /grant user:(oi)(ci)f 

Dann möchte ich die Berechtigungen und die Vererbung ändern in:

icacls folder /grant:r user:(oi)(io)rx 

Danach sind die Berechtigungen für den Benutzer noch vorhanden (oi)(ci)f.

Warum werden die Berechtigungen nicht ersetzt?

Das Ersetzen von Berechtigungen und Vererbung durch setacl funktioniert wie erwartet:

setacl -on folder -ot file -actn ace -ace "n:user;p:read_ex;i:io,so;m:set;w:dacl" 

Danke für deine Antwort. Aber das ist beabsichtigt? Oder ist das ein Fehler? Wozu dient der Schalter ": r", wenn Sie nur so sicher sind, Berechtigungen (und Vererbung) zu ersetzen?

icacls folder /remove user icacls folder /grant user:(oi)(io)rx 

Ich habe getestet, wie "icacls / grant" funktioniert, und ich habe festgestellt, dass icacls einen Eintrag für jede Art von Vererbung schreibt.

Versuche dies:

md test icacls test /inheritance:r icacls test /grant user:f icacls test /grant:r user:(oi)rx icacls test /grant:r user:(ci)rx icacls test /grant:r user:(oi)(ci)rx icacls test /grant:r user:(ci)(oi)(io)rx icacls test /grant:r user:(io)(oi)rx icacls test /grant:r user:(io)(ci)rx 

Dann sehen Sie die ACL:

icacls test 

Das Ergebnis ist:

test PC\user:(F) PC\user:(OI)(IO)(RX) PC\user:(OI)(RX) PC\user:(CI)(IO)(RX) PC\user:(CI)(RX) PC\user:(OI)(CI)(IO)(RX) PC\user:(OI)(CI)(RX) 

Ich habe also festgestellt, dass icacls /grant:rBerechtigungen nur für die gleiche Art der Vererbung ersetzt werden. In meiner ursprünglichen Frage:

md test icacls test /inheritance:r icacls test /grant user:(oi)(ci)f icacls test /grant:r user:(oi)(io)rx 

Der icacls-Test gibt die Ausgabe aus

test PC\user:(OI)(IO)(RX) PC\user:(OI)(CI)(F) 

Und ich denke, die GUI zeigt nur (OI) (CI) (F), da sie (OI) (IO) (RX) enthält.

Fehlt mir etwas? Ist das ein Fehler oder beabsichtigt?

1
Ich kann keine autorisierende Quelle finden, die erläutert, warum der Befehl "grant: r" nicht alle Berechtigungen für den angegebenen Benutzer ersetzt. Meine * Vermutung * ist, dass Admins eine Möglichkeit benötigen, um eine bestimmte Berechtigung + ACE für die Vererbung zu ersetzen (z. B. Nur Lesezugriff für Dateien gewähren), ohne andere Berechtigungen zu berühren (oder neu festzulegen). Es scheint, dass die Schalter '/ reset' oder `/ remove 'für den Fall vorgesehen sind, dass alle Berechtigungen für einen Benutzer ersetzt werden müssen. Ich stimme dem Hilfetext für `/ grant zu: r` ist in seiner Funktion nicht sehr erschöpfend. Twisty Impersonator vor 6 Jahren 0

1 Antwort auf die Frage

1
Twisty Impersonator

Ihr erster Befehl gewährt vollen Zugriff auf den Ordner "Diesen Ordner, Unterordner und Dateien".

Die Berechtigungen werden nicht durch den zweiten Befehl ersetzt, dem Lese- und Ausführungsberechtigungen für Dateien nur aufgrund der Objektvererbungskombination erteilt werden (OI)(IO). Anscheinend können Sie Berechtigungen, die für "Dieser Ordner, Unterordner und Dateien" gelten, nicht durch Berechtigungen ersetzen, die nur für Dateien gelten.

Um die Vollzugriffsberechtigung durch Lese- und Ausführungsberechtigungen für "Dieser Ordner, Unterordner und Dateien" zu ersetzen, verwenden Sie im zweiten Befehl dieselbe Objektvererbung:

icacls folder /grant:r user:(oi)(ci)rx