Problema de permissões no diretório virtual para o caminho UNC

13

Eu tenho um diretório virtual no meu site (ambiente de teste). É um compartilhamento UNC que também é usado como um FTP público.

Ele está configurado para se conectar como uma conta de administrador de domínio e "Configurações de teste" indica que tudo parece estar funcionando. No entanto, quando tento me conectar a ele, recebo:

500 - "Falha ao iniciar o monitoramento de alterações no \ INTRANET \ FTP \ test \ web.config porque o acesso foi negado"

Este é um ASP.NET YSOD. Não sei por que o ASP.NET está se envolvendo, pois é um arquivo .jpg estático que estou solicitando.

Tentei ativar o rastreamento de solicitação com falha e este é o erro específico:

  • ModuleName WindowsAuthentication
  • Notificação 2
  • HttpStatus 500
  • Erro interno do servidor HttpReason
  • HttpSubStatus 0
  • ErrorCode 0
  • ConfigExceptionInfo
  • Notificação AUTHENTICATE_REQUEST
  • ErrorCode A operação foi concluída com sucesso. (0x0)

Se eu alterar o "Tipo de logon do caminho físico" de ClearText para Rede. Eu recebo o seguinte erro do IIS:

Erro HTTP 500.19 - Servidor interno

Erro A página solicitada não pode ser acessada porque os dados de configuração relacionados para a página são inválidos.

Informações detalhadas sobre erros

  • Módulo IIS Web Core
  • Notificação BeginRequest
  • Manipulador Ainda não determinado
  • Erro de código 0x80070005
  • Erro de configuração Não é possível ler o arquivo de configuração devido a permissões insuficientes
  • Arquivo de configuração \\?\UNC\INTRANET\FTP\test\web.config
  • URL solicitado http://test.mydowmain.com:80/uploads/images/ca49acf6-6174-412e-8abd-59fab983e931.jpg

  • Caminho físico \\INTRANET\FTP\test\images\ca49acf6-6174-412e-8abd-59fab983e931.jpg

  • Método de logon ainda não determinado

  • Usuário de logon ainda não determinado
  • Diretório de Log de Rastreamento de Solicitação com Falha C:\inetpub\logs\FailedReqLogFiles

Isso não gera um log de solicitação com falha de maneira estranha - eu configurei o rastreamento de solicitação com falha para rastrear erros com os códigos de erro 400-999.

Também vale a pena notar que, se eu abrir o recurso de Configuração no IIS, vejo um erro de acesso negado.

Eu tenho exatamente a mesma configuração na minha máquina de desenvolvimento local para o mesmo caminho UNC e o mesmo usuário que ele trabalha. Apenas no servidor de teste, isso não acontece.

O que estou fazendo de errado?

Rob Stevenson-Leggett
fonte

Respostas:

10

O fato de ser um aplicativo ASP.net provavelmente é exatamente qual é o problema aqui. A identidade do pool de aplicativos precisa ter direitos (não necessariamente a identidade do IIS; por padrão, a identidade do pool de aplicativos é a conta local do Serviço de Rede.) Você provavelmente também precisará executar o caspol.exe na máquina do IIS.

http://msdn.microsoft.com/en-us/library/cb6t8dtz%28v=vs.80%29.aspx

http://learn.iis.net/page.aspx/50/aspnet-20-35-shared-hosting-configuration/

%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1.  -url "file://\\remotefileserver\content$\*" FullTrust
mfinni
fonte
7

Resolvi nosso problema criando contas correspondentes no servidor da web e no servidor unc. Modifiquei o pool de aplicativos para executar usando a conta correspondente, não o serviço de rede. Isso me deu a flexibilidade de sincronizar a senha nos dois servidores sem afetar outras funções dependentes do serviço de rede.

Ação de TI
fonte
3
Depois de passar 5 horas e procurar uma solução, finalmente a solução da IT Action funcionou para mim. Então, eu criei exatamente os mesmos usuários nas duas máquinas e configurei o pool de aplicativos para executar usando essa conta. Eu estava prestes a enlouquecer com isso. Finalmente resolvido. Espero que isso ajude a todos que tenham o mesmo problema
+1 maciço. Estou no mesmo barco que @ user249232 - criar uma conta espelho na máquina IIS instantaneamente resolveu o problema depois de muita pesquisa. No entanto, defino o usuário como 'Conectar como' nas configurações básicas do site, não alterando o ID do pool de aplicativos.
Scruffy
1
Muitos elogios para quem essa solução funciona, mas essa é uma solução terrível para mim, já que não quero imitar a configuração do nome de usuário do domínio corp na configuração pessoal do vbox linux, que uso uma convenção de nome de usuário diferente. A sincronização de senha é uma complexidade adicional, que é sobre o topo para mim, pois já estou usando servidores de divisão (IIS no meu host, e php56 no linux para ter acesso para o compositor)
Brian Thomas
depois de passar 2 dias. Isso funcionou para mim. Até eu tentei as mesmas credenciais e não estava funcionando. Finalmente ele funciona depois de se mudar esse usuário comum no grupo Administrador
Ketan Kotak
2

Se essa fonte compartilhada não for um aplicativo (eq uma pasta de imagem), tente configurar o diretório virtual para ser ignorado pelo aplicativo raiz que inclui o diretório virtual (no meu caso, concluí isso alterando o tipo de pool de aplicativos raiz como Clássico em vez do modo integrado). Mas se houver um aplicativo no ponto compartilhado, você poderá seguir o caminho indicado pelo @mfinni.

Emre Guldogan
fonte
1

Você pode verificar se a conta na qual o IIS está executando possui direitos adequados / necessários para o UNC problemático.

user48838
fonte
3
Se este não fosse um aplicativo ASP.net, você estaria economizando. Como está sendo executado em um pool de aplicativos, é a identidade do pool de aplicativos que precisa de acesso, não a conta de usuário do IIS.
mfinni
1

Eu tive o mesmo problema no IIS 7.5 e achei a solução:

  1. Crie um usuário local no servidor com o compartilhamento
  2. Crie o compartilhamento de rede, dando ao usuário criado na etapa 1 as permissões desejadas. O Windows configurará as permissões para o usuário que você especificou
  3. Vá para o diretório virtual no IIS e abra as "configurações avançadas"
  4. Digite o URL no caminho físico para o compartilhamento de rede como \\<servername>\<sharename>
  5. clique em Credenciais do caminho físico; adicione as credenciais para o usuário criado na etapa 1
Charles
fonte
0

Só tive o mesmo problema com um servidor da web que não é de domínio acessando alguns recursos do domínio usando uma conta de domínio. Estávamos tendo um comportamento estranho ("credenciais de teste" falhariam, mesmo sabendo que as credenciais estavam corretas, podíamos ver pastas e arquivos no modo de exibição de conteúdo, mas não conseguíamos "navegá-los"). A solução foi criar um usuário local na máquina com o mesmo nome que o usuário do domínio.

Eu estou pensando que isso é o que teria acontecido se o servidor web fosse um membro do domínio, e o usuário local fosse necessário obter alguns recursos locais (config?) Para mapear o virtual.

Espero que ajude alguém.

jprmsn
fonte