Permitir apenas um acesso de leitura / gravação de serviço específico para uma pasta

3

Existe uma maneira de impedir o acesso de leitura e / ou gravação a uma pasta específica no Windows e conceder somente acesso a um serviço / processo específico?

Parece que as permissões são baseadas no usuário e não baseadas no serviço, mas gostaria de saber se existe uma maneira de obter essa funcionalidade de qualquer maneira.

    
por galbarm 05.07.2012 / 15:25

2 respostas

6

Sim, existe uma maneira de fazer isso no Windows 7, embora possa ser necessário reconfigurar o serviço que apresenta um risco (provavelmente bastante pequeno) de introduzir um problema de compatibilidade.

O ID de segurança associado a um serviço pode ser referenciado como

NT SERVICE\SERVICENAME

em que servicename é substituído pelo nome real do serviço (mostrado como "Nome do serviço" na ferramenta administrativa Serviços e distinto do nome de exibição mostrado na lista principal de serviços). Se você estiver usando a GUI para alterar as configurações de segurança e a máquina ingressar em um domínio, será necessário alterar o escopo da pesquisa para o computador local. Observe também que isso funciona apenas para os serviços atualmente instalados.

Você pode determinar o SID associado a um nome de serviço específico, esteja ou não um serviço desse tipo instalado, usando o comando sc showsid :

C:\working>sc showsid wjkjk

NAME: wjkjk
SERVICE SID: S-1-5-80-492907775-8774055-3223757035-3566066944-1037782649

Se você estiver definindo a segurança em um arquivo ou pasta usando o comando icacls , poderá especificar um SID prefixando-o com * , por exemplo, *S-1-5-80-492907775-8774055-3223757035-3566066944-1037782649 .

Para que o serviço acesse arquivos usando este ID de segurança, ele deve ser configurado com um tipo de SID de serviço "irrestrito" ou "restrito". Se estiver configurado com um tipo SID de serviço "none", o SID de serviço não funcionará. Você pode verificar o tipo de SID de serviço de um serviço instalado com o comando sc qsidtype :

C:\working>sc qsidtype wuauserv
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: wuauserv
SERVICE_SID_TYPE:  UNRESTRICTED

Se o tipo de serviço for "nenhum", você poderá alterá-lo para "irrestrito" usando o comando sc sidtype :

C:\working>sc qsidtype psexesvc
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: psexesvc
SERVICE_SID_TYPE:  NONE

C:\working>sc sidtype psexesvc unrestricted
[SC] ChangeServiceConfig2 SUCCESS

C:\working>sc qsidtype psexesvc
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: psexesvc
SERVICE_SID_TYPE:  UNRESTRICTED

Isso não terá efeito até que o serviço seja reiniciado.

Observação: você deve não alterar o tipo de SID de um serviço de "none" para "restricted". Fazer isso quase certamente causará o mau funcionamento do serviço. Alterar o tipo de "nenhum" para "irrestrito" é muito menos provável de causar problemas. Se o tipo de serviço SID já estiver "restrito" ou "irrestrito", você não deve alterá-lo.

    
por 06.07.2012 / 00:26
1

Existe um pseudo "usuário" chamado SERVICE que todos os serviços usam para que você possa simplesmente restringir o acesso, permitindo apenas esse acesso de "usuário".

No entanto, isso não é exatamente o que você pediu, já que este não é um único serviço específico, mas todos os serviços. Não há nenhum mecanismo padrão para restringir a um único serviço, embora possa ser possível com algumas consideráveis tentativas de forçar um serviço a usar um ID diferente na inicialização - eu não recomendaria isso.

    
por 05.07.2012 / 18:01