Access Denied u síťové cesty

Diskuze k serverovým edicím Microsoft Windows

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Nargon 6. 5. 2016 11:34

Ahoj, řeším takový zvláštní problém a už mi hlava nebere proč to tak (ne)funguje. Doufám že mi do toho vnesete trochu světla.

Na windows serveru 2012 mám vlastní aplikaci, která čte nějaký soubor ze síťové cesty. Pokud aplikaci spustím ručně tak proběhne a vše funguje. Jenže aplikace by měla běžet automaticky, tak jsem k tomu použil Plánovač úloh (windows scheduler) a tady se to chová zvláštně.

Pokud mám na první záložce scheduleru nastaveno, aby se úloha spouštěla pouze pokud je přihlášený uživatel, tak to opět funguje a běží. Ale když úlohu přepnu, aby se spouštěla i bez přihlášení uživatele, tak se aplikace spustí, ale jen zaloguje chybu "Access Denied" při přístupu na síťovou cestu. Přitom ve všech případech používám stejný doménový účet. Ta síťová cesta vede na nějaký linuxový stroj, ale přistupuji tam normálně přes klasickou síťovou cestu, tj SAMBA protokol, a tomu by mělo být jedno zda je uživatel přihlášen nebo ne.

Vůbec mi hlava nebere jak je to možné. Tj, že když se aplikace spustí pod přihlášeným uživatelem tak práva jsou, ale když se to pod stejným účtem spustí na pozadí tak už práva nejsou. Jak je něco takového vlastně možné nastavit a kde? Kdybych například někdy chtěl podobného stavu docílit tak ani netuším jak.

Napadá vás něco?
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Milanr1 6. 5. 2016 14:34

Nesdělil jsi příslušný text hlášek v Aplikačním logu.
Nemáš ve skriptíku/jobu Plánovače nebo přímo v aplikaci absolutní cestu místo UNC?
Milan
Milanr1
Pokročilý
Uživatelský avatar

Odeslat příspěvekod vladimir 6. 5. 2016 14:45

Používáš UNC cesty, nebo napřed síťový disk připojuješ nebo máš disk trvale připojený přímo v uživateli a snažíš se ho používat??

Já používám přes plánovač nějaké zálohování. Aby mi to fungovalo i bez spuštěného uživatele, napřed si ten disk v dávkovém souboru připojím:
NET USE O: \\192.168.2.222\adresar heslo /user:uzivatel /persistent:NO
pak spustím zálohování a po skončení použiju
NET USE O: /DELETE
Funguje mi to s přihlášeným i bez přihlášeného uživatele.

Pokud jsi přihlášený a máš disk namapovaný přímo v uživateli, nefunguje to při nepřihlášeném uživateli, protože připojení síťových disků se provádí až po přihlášení uživatele.

Další možný rozdíl (nápad): Netuším, jak je to s automatickým použitím hesla z Windows daného uživatele pro přihlášení k síťovému disku při použití z dávkového souboru při přihlášeném/nepřihlášeném uživateli, nad tím jsem nebádal.
(Já tam to heslo v NET USE mám, protože se přihlašuji úplně jiným heslem, než Windowsovským).

Pokud používáš UNC cestu, tak je to samozřejmě jinak. Já UNC nepoužívám, tedy problémy s UNC neznám.
Naposledy upravil vladimir dne 6. 5. 2016 14:54, celkově upraveno 2
vladimir
Expert
Uživatelský avatar

Odeslat příspěvekod JirkaVejrazka 6. 5. 2016 14:51

Blba otazka - nemas v tom planovaci uloh preklep v hesle, nebo nejaky prapodivny specialni znak, ktery by mohl delat problemy?
JirkaVejrazka
Mírně pokročilý

Odeslat příspěvekod Nargon 6. 5. 2016 14:59

Hláška v logu je přesně:
Kód: Vybrat vše
Access to the path '\\HQS004\HQSDF\HQSDFTR\BU04.txt' is denied.

cestu mám zadanou v UNC formátu: \\HQS004\HQSDF\HQSDFTR\BU04.txt

Co se chyby týče tak to je celkem jasné že nemám práva na soubor. Jen je zvláštní že když to spustí ten stejný účet jen "manuálně" poklepáním na exe tak to funguje a práva mám.

Chybu v hesle vylučuji. Když zadám špatně heslo tak se ta naplánovaná úloha ani neuloží, dokud to heslo nezadám správně. A v heslu mám jen velká, malá písmena a čísla.

P.S. Neptejte se co znamenají ty zkratky v názvech složek. Nemám tušení...
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod hunter21 6. 5. 2016 15:13

Spravil by som skript, ktory by pred ostartovanim aplikacie najprv vypisal (alebo ulozil do nejakeho logu) kompletne nastavenie environmentu. Porovnanim zrejme dost rychlo prides na to, kde je problem.
hunter21
Pokročilý

Odeslat příspěvekod Abox 6. 5. 2016 15:29

A v tom planovaci ma ten uzivatel prava na ten adresar..?
Protoze kdyz si treba namapujes nejaky adresar pod uzivatelem, a pak spustis treba CMD jako spravce, tak to mapovani nevidis - protoze to je jiny uzivatel...
Abox
Pokročilý
Uživatelský avatar

Odeslat příspěvekod vladimir 6. 5. 2016 17:35

Koukám nejsi sám, obdobný problém vidím ve spojitosti se Serverem 2012 na dalších fórech (http://serverfault.com/questions/606891 ... ng-program , https://community.spiceworks.com/topic/ ... d-unc-path ) - s přihlášeným uživatelem UNC cesty fungují, bez něj ne - bohužel bez řešení. Tedy to asi bude obecný problém související nějak se zabezpečením.

Napadá mne možná blbost: DisableUNCCheck máš aktivované? Bez toho by UNC asi nešlo používat v dávkách vůbec, ale možná v 2012 změnili bezpečnostní politiku?
vladimir
Expert
Uživatelský avatar

Odeslat příspěvekod Nargon 8. 5. 2016 06:21

@vladimir: Mno jsem rád že nejsem sám. Alespoň vím že se to tak obecně chová a není to jen chyba u mě. Jedná se .NET aplikaci, takže žádná dávka a tam asi tyhle parametry nemají efekt. Jinak co se týče mapování disku, tak můžu vyzkoušet udělat si dávku, kde si disk namapuji, spustím mojí aplikaci na cestu s písmenem a pak zase mapovaní smažu, ale vím že to nebudu moci použít pro finální řešení. Mít heslo uložené jen tak v plaintextu z bezpečnostních důvodu nepůjde.

@Abox: Ano uživatel má práva na adresář.

@hunter21: Dobrý hint, to můžu vyzkoušet. Jen doufám že nezjistím například to, že ten plánovač ignoruje nastavený uživatelský účet a spouští aplikaci pod systémovým účtem. Protože ten opravdu na tu síťovou cestu práva nemá.

Mě zatím napadlo řešení, že bych v plánovači nechal spouštění jen když je uživatel přihlášený, současně nastavil automatické přihlášení uživatele do windows, a do logon skriptu (nebo možná další úlohy plánovače) bych zadal spuštění: "rundll32.exe user32.dll, LockWorkStation" což uživatele ihned uzamkne, aby někdo bez znalosti hesla tam nemohl něco dělat.
Sice mi to připadá jako drbání se za levým uchem způsobem, že řeknu kamarádovi vpravo, aby mě podrbal. Ale mohlo by to být dostatečně akceptovatelné řešení.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod vladimir 8. 5. 2016 08:54

Mít heslo uložené jen tak v plaintextu z bezpečnostních důvodu nepůjde:
pokud se přihlašuješ k tomu linuxu stejným heslem, jako má uživatel Windows, tak tam to heslo uložené mít (předpokládám) nemusíš.
vladimir
Expert
Uživatelský avatar

Odeslat příspěvekod Milanr1 8. 5. 2016 09:39

Hesla jsou uložená šifrovaně.
Viz Vault.
Milan
Milanr1
Pokročilý
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků