Permissões Issue com o aplicativo ASP.NET usando o compartilhamento de rede

1

Instalei um aplicativo ASP.NET no IIS 7 que armazena informações em um compartilhamento de rede do Windows. Ele foi instalado com sucesso e criou todas as pastas necessárias no compartilhamento. O aplicativo é executado na conta do Serviço de Rede. Normalmente, as permissões são definidas nessas pastas, mas elas não eram dessa vez, então eu atribuí a permissão a elas.

O problema é que estou recebendo um erro de acesso negado ao tentar navegar para a página, pois o aplicativo não pode acessar uma das pastas. Eu atribuí a permissão a todos para o compartilhamento, e isso agora corrigiu o problema, mas removê-lo e, em seguida, o problema retorna. Obviamente, não quero simplesmente deixar a permissão de todos nessa pasta.

Alguém sabe qual é o problema ou o que pode ser usado em vez da conta de todos?

Não sou especialista em IIS, portanto, peço desculpas se isso for vago ou ambíguo em alguns lugares!

    
por 5lovak 20.09.2011 / 17:31

1 resposta

1

Suponho que você esteja atribuindo Controle Total a Todos a todo o compartilhamento de rede, e não apenas a uma pasta específica dentro do compartilhamento.

Você provavelmente já sabe disso, mas o Windows gerencia duas permissões para compartilhamento - segurança de arquivos e configurações de compartilhamento. Ambos terão que ser configurados para acessar um compartilhamento de rede. Se você clicar com o botão direito do mouse em uma pasta compartilhada, precisará configurar a permissão nas guias Compartilhamento e Segurança.

Eu suspeito que o problema está relacionado ao uso da conta NETWORK SERVICE e não às suas permissões de compartilhamento. As contas de nível de serviço (SYSTEM e NETWORK SERVICE) são locais para a máquina em que você está, o que tem algumas conseqüências. Por exemplo, considere como suas permissões são configuradas usando nomes totalmente qualificados:

No seu servidor de aplicativos, a conta que está executando o aplicativo ASP.NET é "5ghan's Server \ NETWORK SERVICE". No compartilhamento de rede, que está em outra máquina, a conta local é, na verdade, "Servidor de compartilhamento de rede 5lovak \ SERVIÇO DE REDE".

Apesar de ter o mesmo nome de conta, eles são contas diferentes, então você não poderá acessar o compartilhamento dessa maneira.

Acho que a maneira apropriada de configurar isso é criar uma nova conta de usuário do Windows e usá-la exclusivamente para essa finalidade. O Windows tradicionalmente tem uma maneira "barata" de falsificar um usuário de domínio: basta criar um usuário local em ambas as máquinas e garantir que elas tenham a mesma senha. Não sei por que isso não se aplica ao NETWORK SERVICE e SYSTEM, mas suspeito que existam boas razões.

Então, tente isto:

  1. Na sua máquina do IIS, crie um usuário chamado IUSR_SHARE (ou qualquer outro). Defina uma senha!
  2. Na sua máquina de compartilhamento de rede, crie um usuário chamado IUSR_SHARE e defina a mesma senha.
  3. No Gerenciador do IIS, selecione o pool de aplicativos que seu aplicativo da Web está usando (crie um novo se você estiver usando os aplicativos padrão). Clique em Configurações avançadas na barra Ações direita. Em Modelo de processo, altere o usuário para IUSR_SHARE.

Eu não tenho uma configuração aqui onde possa testar facilmente isso, mas suspeito que funcionará.

    
por 20.09.2011 / 18:09