Ako ste pokušavali da na Windows 2003 serveru pokrenete batch fajl preko task schedulera, onda odlično znate da to nije baš jednostavno.
Prvo, za pokretanje batch procedura nije dobro koristiti nalog administratora (mada pod tim nalogom sve odmah proradi
), već se kreira običan korisnički nalog pod kojim će se izvršavati skript/skriptovi. Razlog za ovakav pristup problemu će biti objašnjen na kraju posta.
Drugo, sigurno ste primetili da task koji smo napravili, ne radi. U knjizi piše da je to zato što nismo dali pravo našem novokreiranom nalogu da se loguje kao batch job.
Rešenje je: Start -> Programs -> Administrative tools -> Local Security Policy (ili na DC-u -> Domain Controller Security Policy) -> Local Policies -> User Right Assignment -> Log on as a batch job, i ovde dodamo korisnički nalog.
Nakon podešavanja polise, sačekamo da se task ponovo pokrene preko schedulera i na kraju zaključimo da opet ne radi. U Task Schedulery piše da job nije nikada odrađen, u statusu stoji vrlo deskriptivan kod 0x0, dok u Event Vieweru ne postoji ni najmanja naznaka da ste uopšte pokušali da pokrenete neki job. Ponovo proverimo polisu i vidimo da smo sve podesili kako treba. U čemu je zapravo problem?
Problem je u ACLovima direktno na cmd.exe fajlu koji su prilično (a tako i treba) restriktivni.
Ukoliko pogledate dozvole na Windows -> System32 -> cmd.exe videćete da običan korisnik nema prava nad ovim fajlom. Dodajte sledeće dozvole: Read i Read and Execute za vašeg korisnika i sve će proraditi bez problema.
Napomena: Drugi skriptovi, npr. VBS, ne zavise od cmd.exe i dozvola nad njime!
Zašto nije dobro pokretati batch fajlove pod admin privilegijama?
Ukoliko neko maliciozan ima pristup batch skriptu koji radi pod administratorskim privilegijama, vrlo lako može sebe dodati u administrators grupu jednostavnim dodavanjem linije koda u skript (net group, dsmod i sl.).