1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Access denied

Discussão em 'Programação' iniciada por Godzec, 22 de Setembro de 2006. (Respostas: 5; Visualizações: 1220)

  1. 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>")
     
  2. inginheiiro

    inginheiiro Power Member

    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
     
  3. Obrigadão... ainda não sei como é que isso funciona mas pelo menos já tenho o que ler e o que testar.
     
  4. 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
     
  5. KiKas

    KiKas Power Member


    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: 25 de Setembro de 2006
  6. Kinkas, muitos thks... já funca na perfeição... Obrigadão.
     

Partilhar esta Página