Come sostituire le autorizzazioni e tutto ciò che contiene con icacls su Windows Server 2012?


15

Utilizzo di Windows Server 2012 R2 E Windows Server 2008 R2.

Ho una cartella chiamata C:\temp\teste voglio concedere l'accesso a SYSTEMun utente e tutti i file e le sottodirectory e rimuovere tutto il resto. Ho provato questo comando ma rimangono tutte le autorizzazioni esistenti:

Le autorizzazioni esistenti sono:

Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         BUILTIN\Users Allow  ReadAndExecute, Synchronize
         BUILTIN\Users Allow  AppendData
         BUILTIN\Users Allow  CreateFiles
         CREATOR OWNER Allow  268435456

Voglio rimuovere tutti gli ACL tranne SYSTEM, e aggiungere<DOMAIN>\<USER>

Ho provato questo comando:

icacls c:\temp\test /grant:r <DOMAIN>\<USER>:(OI)(CI)F /t

processed file: c:\temp\test
Successfully processed 1 files; Failed processing 0 files

Quando guardo le autorizzazioni in seguito, <DOMAIN>\<USER>ha le autorizzazioni corrette ma rimangono tutte le altre. Ho pensato di aver /grant:rsostituito tutte le autorizzazioni? Sai quale comando devo eseguire per rimuovere tutte le altre autorizzazioni?


Questo comando fa esattamente quello che voglio cacls c:\temp\test /t /g <DOMAIN>\<USER>:Fma ho sentito che icacls lo ha sostituito, qualcuno può mostrarmi la versione equivalente di icacls per produrre lo stesso comportamento?
Mark Allison,

3
/grant:rrimuove solo le autorizzazioni esplicite esistenti, non quelle ereditate dalla cartella sopra. Dovresti anche includere /inheritance:r.
TheCleaner,

1
Se CACLS fa il lavoro, non c'è motivo per cui non puoi usarlo, sia che sia stato deprecato o meno.
joeqwerty,

@joeqwerty vero ma sembra così sporco. cacls stesso restituisce anche un messaggio per usare icacls, quindi ci deve essere un ottimo motivo. NOTE: Cacls is now deprecated, please use Icacls.
Mark Allison,

2
@joeqwerty cacls.exepuò impostare gli ACL nell'ordine sbagliato, causando potenzialmente problemi (lascerò questo come esercizio per il lettore).
Craig,

Risposte:


16

Come accennato sono i commenti, è necessario utilizzare anche l' /inheritance:ropzione per rimuovere le autorizzazioni ereditate.

/grant:r rimuove solo autorizzazioni esplicite.

icacls c:\temp\test /inheritance:r /grant:r <DOMAIN>\<USER>:(OI)(CI)F /T

Per concedere anche SYSTEM:

icacls c:\temp\test /inheritance:r /grant:r <DOMAIN>\<USER>:(OI)(CI)F /grant:r SYSTEM:(OI)(CI)F /T

7

Il parametro /grant:rnon ha funzionato per me. Ho dovuto usare /resetper ripristinare le autorizzazioni solo per l'ereditarietà e quindi rimuovere le autorizzazioni ereditate. Non dimenticare di cambiare le sottodirectory con /tflag.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.