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

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

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

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

Responder1

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

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

NT SERVICE\SERVICENAME

onde servicenameé substituído pelo nome real do serviço (mostrado como "Nome do serviço" na ferramenta administrativa de 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 estiver associada a um domínio, será necessário alterar o escopo da pesquisa para o computador local. Observe também que isso funciona apenas para serviços atualmente instalados.

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

C:\working>sc showsid wjkjk

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

Se você estiver configurando a segurança em um arquivo ou pasta usando o icaclscomando, 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 esse 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 de SID de serviço "nenhum", 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 sc qsidtypecomando:

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 sc sidtypecomando:

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ê devenãoaltere o tipo de SID de um serviço de "nenhum" para "restrito". Fazer isso quase certamente causará o mau funcionamento do serviço. Alterar o tipo de "nenhum" para "irrestrito" tem muito menos probabilidade de causar problemas. Se o tipo de SID do serviço já for "restrito" ou "irrestrito", você não deverá alterá-lo.

Responder2

Existe um pseudo "usuário" chamado SERVICEque todos os serviços usam, então você pode simplesmente restringir o acesso permitindo apenas o acesso desse "usuário".

No entanto, não foi bem isso que você perguntou, pois não se trata de um único serviço específico, são todos os serviços. Não existe um mecanismo padrão para restringir a um único serviço, emborapoderiaseria possível com algumas dificuldades consideráveis ​​ao tentar forçar um serviço a usar um ID diferente na inicialização - eu não recomendaria isso.

informação relacionada