Access denied

Godzec

Membro
Boas ppl.
Preciso de uma grande ajuda. Tou a fazer uma pagina com uma lista de servers onde existirá um botão para fazer restart a esses servidores.
Agora, o codigo parece estar a funcionar bem porque ele executa o DOS. O problema é que ele dá sempre acess denied ao comando de shutdown. Ao que me parece (e sou bastante noob nestas coisas) ele esta a tentar executar o comando com o user IUSR_nome da maquina.
Alguém me pode dar uma dica sobre como fazer para que ele utilize o username que esta nesse momento a usar o site e não o IUSR_?
Obrigado
Código:
    url = Request.Form("host")
    
    
    
    Set objWShell = CreateObject("WScript.Shell") 
    Set objCmd = objWShell.Exec("shutdown -r -f -m\\"&url) 
    
    strPResult = objCmd.StdOut.Readall() 
    set objCmd = nothing: Set objWShell = nothing 
     
    'response.write strPResult 
    response.write ".<br>" & replace(strPResult,vbCrLf,"<br>")
 
necessitas de fazer impersonation antes...
http://support.microsoft.com/kb/248187/

necessitas de saber o username e password .
tens tmb que ter privilegios para usar o WScript.Shell....
/ing

Ok. fiz tal e qual como estava no site mas continua a não funcionar.

Código:
     url = Request.Form("host")
       
    Set objLogon = Server.CreateObject("LoginAdmin.ImpersonateUser")
    objLogon.Logon "Userid", "Password", "Domain"

    Set objWShell = CreateObject("WScript.Shell") 
    Set objCmd = objWShell.Exec("shutdown -r -f -m \\"&url) 
    
    strPResult = objCmd.StdOut.Readall() 
    set objCmd = nothing: Set objWShell = nothing 
     
    response.write ".<br>" & replace(strPResult,vbCrLf,"<br>") 
     
    objLogon.Logoff
    Set objLogon = Nothing
O que é que estou a fazer mal
 
Ok. fiz tal e qual como estava no site mas continua a não funcionar.

Código:
     url = Request.Form("host")
       
    Set objLogon = Server.CreateObject("LoginAdmin.ImpersonateUser")
    objLogon.Logon "Userid", "Password", "Domain"

    Set objWShell = CreateObject("WScript.Shell") 
    Set objCmd = objWShell.Exec("shutdown -r -f -m \\"&url) 
    
    strPResult = objCmd.StdOut.Readall() 
    set objCmd = nothing: Set objWShell = nothing 
     
    response.write ".<br>" & replace(strPResult,vbCrLf,"<br>") 
     
    objLogon.Logoff
    Set objLogon = Nothing
O que é que estou a fazer mal


Mais facil que fazer isso é configurares o web.config e o IIS para usares impersonation

primeiro no iis para a aplicação em causa desabilita o anonymous logon

o iis usa o user que está a aceder à pagiana e não o iusr_machine_name

depois no web.config da aplicação em causa adiciona uma entrada para a identity:

<identity impersonation=True />

na secção system.web

e assim o processo aspnet vai usar essa identidade no acesso aos recursos

se quiseres tomar a personalidade de um outro utilizador que nao o que está a aceder à maquina fazes

<identity impersonation=true username="xxx" password="xxxx" />

espero que ajude

Cumps

EDIT: vi agora que deves estar só a usar ASP e o que eu te disse foi para ASP.NET. Mesmo assim experimenta desabilitar o anonymous logon no iis para o processo ASP usar a indentidade do user que acede à página.
 
Última edição:
Back
Topo