Nastavení oprávnění na logické svazky - command line
Zdravím,
existuje nějaký příkaz přes command line jak odebrat např. skupině users přístup na D$,E$ .... aby na tyto disky nemohli vůbec zapisovat.
Něco jako pomocí utilitky kde se dá zacyklit např. příkaz "SUBINACL /verbose=1 /subdirectories "D:\TEST" /revoke=Users
(odebere skupině users přístup do adresáře d:\TEST). Utilitka subinacl ale zdá se nejde použít na disk jako takový, pouze na adresáře ...
z příkazového řádku nepoužívám, ale šlo by začít tady:
vzhledem k tomu ze to pouziji na win7 a win2008 tak icacls je doporucovane reseni (a funguje)
dik
Ahoj,
tak pomocí ICACLS se to zvládlo
viz:
icacls C:\ /grant:r BUILTIN\Users:(CI)
icacls C:\ /grant BUILTIN\Users:(CI)(IO)(WD) atd atd..
Co teď zkoumám je deployment těchto nastavení na několik PC. Normálně bych použil příkaz
FOR /F "tokens=1 delims=," %%G IN (seznam.txt) DO icacls \\%%G\C$ /grant:r BUILTIN\Users:(CI),
což by mi na všech PC v seznam.txt provedlo nastavení icacls na C:\.
Problém je pokud těch ICACLS commandů mám několik (pár pro C:\, pár pro D:\) a tu proměnou %%G bych chtěl použít i v příkazu ICACLS, proměnná se na dalším řádku příkazu ztratí..
@echo off
FOR /F "tokens=1 delims=," %%G IN (seznam.txt) DO icacls \\%%G\C$ /grant testdomain\testuser%%G:F
icacls \\%%G\D$ /grant testdomain\testuser%%G:F
icacls \\%%G\E$ /grant testdomain\localuser%%G:F
První příkaz se provede ale u dalších už to pokud používám proměnné hodí chybu
testdomain\localuser%G: No mapping between account names and security IDs was do
ne. Musel bych natvrdo napsat testdomain\localuser01:F NEBO všechny příkazy dát do jedné řádky
icacls \\%%G\C$ /grant testdomain\testuser%%G:F & icacls \\%%G\D$ /grant testdomain\testuser%%G:F % ... což se obávám že jisté omezení v délce příkazu asi bude a mě se to nebude vejít.
Existuje na to nějaké řešení? Jak spustit batku na X PC o hodně řádcích kde se vyskytují proměnné?
Proměnnou %%G používám jak pro identifikaci PC na kterém to chci spustit tak pro identifikaci uzivatele (proměnná obsahuje nějaké číslo) .. tj pc bude např. 01,02,03 .. a uživatelé localuser01,localuser02 .. na pc 01 bude localuser01 - využití proměnných se zde tedy přímo vybízí.
interpret "dosu", který si přečte celý cyklus a pak ho najednou přeloží, nerozchodí různé hodnoty proměnné, dosadí jen jednu. metoda doporučovaná ms mi nefungovala, používám subrutinu, kde se proměnná předá korektně.
snad jsem smysl těch příkazů nezkomolil:
Skvělé, tento způsob zafungoval. Ušetřil jsi mi mnoho a mnoho minut!!! Když by mi nikdo nepomohl s řešením tak bych šel asi cestou vytvoření cca 20 BAT souborů, pro každou batku jeden icacls příkaz s proměnnými .. a pak už bych jen kliknul na batku, počkal bych až se provede, pak kliknul na další ..
Tohle je o moc lepší :) Díky moc
jen přidám odkazy:
funkce "setlocal EnableDelayedExpansion" dle setlocal.html ... nefungovalo mi
volání Subroutine je dle http://blog.vyvojar.cz/lazo/archive/2004/09/03/166 5.aspx ... ok