ICACLS používání
V poslední době často používám pro nastavování práv ICACLS.EXE. Výhodou je dostupná historie spuštěných příkazů a hlavně snadný přenos do dokumentace. Měl jsem trochu chaos v definici rozsahu dědění mnou definovaných práv, dokud jsem nenašel tuhle stránku. Jelikož mají zrovna stránky, které obsahují velmi užitečné informace, tendenci jako na potvoru zmizet, tak si raději sem část informací přenesu.
Pokud chci přidat práva třeba aplikačnímu poolu, použiji konstrukci icacls c:\inetpub\webs\www.domena.cz /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX) . Definici práv (poslední závorka) najdu v icacls /?, ale co znamenají ty zmatky předtím?
Nápověda v ICACLS v tom moc nepomůže, ta vypíše toto:
(OI) - object inherit
(CI) - container inherit
(IO) - inherit only
(NP) - don't propagate inherit
(I) - permission inherited from parent container
Takže nezbývá, než si uložit “překlad” do rozumné podoby.
This folder only | |
This folder, subfolders and files | (OI)(CI) |
This folder and subfolders | (CI) |
This folder and files | (OI) |
Subfolders and files only | (OI)(CI)(NP)(IO) |
Subfolders only | (CI)(IO) |
Files only | (OI)(IO) |
A ještě dvě užitečné poznámky. Pokud bych chtěl odstranit veškerá dříve nadefinovaná práva na všech podřízených úrovních (adresáře i soubory), použiji přepínač /RESET.
Pokud je nutné nastavit (např. kvůli PHP, které potřebuje vidět nadřazeného adresáře webu) právo “List folder contents” pouze na jeden adresář, bez propagace dál, udělám to takto:
icacls c:\inetpub\webs /grant "IIS APPPOOL\PhpAppPool":(X,RD,RA,REA,RC)
Výborný obrázek – zde.