O serviço IIS está sendo executado como conta do Sistema Local, então como eu dou permissões de diretório compartilhado?

2

Minha página ASP lê um arquivo de um diretório compartilhado e o envia ao usuário.

        Response.Clear();
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Disposition:", string.Format("attachment; filename={0}", fileName));
        Response.WriteFile(filePath);
        Response.End();

Esse código ASP é executado no servidor da Web, suponho que ele esteja sendo executado como conta do Sistema Local porque o IIS é. O filePath aponta para um arquivo no servidor de arquivos \\ fileserver \ shared \ abc.pdf

Quando eu depurar o código na minha máquina local, o arquivo é lido corretamente na página ASP. No entanto, quando eu o executo no servidor web, ele não consegue ler o arquivo. Que permissão preciso dar \ fileserver \ shared para que a página ASP leia corretamente o arquivo? Obviamente, o Sistema Local não é um logon de usuário válido na página de permissão.

    
por yyyykk 30.07.2009 / 15:34

3 respostas

2

O processo do operador do ASP.NET é executado usando a identidade do pool de aplicativos configurado no IIS. No IIS 6 e acima, o padrão é Network Service (como o splattne aponta).

Se você precisar acessar arquivos remotos do seu aplicativo ASP.NET, recomendo criar uma conta de domínio específica e executar o pool de aplicativos como esse usuário, além de conceder acesso ao mesmo usuário para o compartilhamento. Dessa forma, você pode controlar quem obtém acesso aos arquivos. O Serviço de Rede é uma conta interna que existe em todas as máquinas WinXP (e acima), portanto, você não gostaria de abrir o compartilhamento até isso.

Outra solução seria simplesmente elevar o código que acessa o compartilhamento para usar o login de domínio, mas deixe o resto do código do ASP.NET ser executado como Serviço de Rede. Isso provavelmente é mais seguro, embora você precise descobrir como armazenar as credenciais com segurança.

-dave

    
por 30.07.2009 / 16:50
1

O serviço de rede e o sistema local aparecem na rede como a conta do computador (DOMAIN \ computer $). Portanto, você precisará conceder essa permissão de conta ao seu compartilhamento de arquivos, se não conseguir usar uma conta de usuário comum.

    
por 30.07.2009 / 18:19
0

No Windows Server 2003 (IIS 6.0), o código ASP.NET é executado como

Network Service

conta. Portanto, conceda a permissão de leitura da pasta para essa conta interna.

Artigo do Microsoft TechNet: IIS e contas internas (IIS 6.0)

The built-in Network Service user account has fewer access privileges on the system than the LocalSystem user account, but the Network Service user account is still able to interact throughout the network with the credentials of the computer account.

For IIS 6.0, it is recommended that the worker process identity that is defined for application pools run as the Network Service user account, which is the default setting. The following table shows the default user privileges for the Network Service account, along with how each privilege is derived.

    
por 30.07.2009 / 16:07

Tags