
¿Hay alguna manera de evitar el acceso de lectura y/o escritura a una carpeta específica en Windows y otorgar solo acceso a un servicio/proceso específico?
Parece que los permisos se basan en el usuario y no en el servicio, pero me gustaría saber si hay alguna manera de lograr esa funcionalidad de todos modos.
Respuesta1
Sí, hay una manera de hacer esto en Windows 7, aunque puede ser necesario reconfigurar el servicio, lo que presenta un riesgo (probablemente bastante pequeño) de introducir un problema de compatibilidad.
Se puede hacer referencia al ID de seguridad asociado con un servicio como
NT SERVICE\SERVICENAME
donde servicename
se reemplaza con el nombre real del servicio (que se muestra como "Nombre del servicio" en la herramienta administrativa de Servicios y es distinto del nombre para mostrar que se muestra en la lista principal de servicios). Si está utilizando la GUI para cambiar la configuración de seguridad y la máquina está unida a un dominio, deberá cambiar el alcance de la búsqueda a la computadora local. También tenga en cuenta que esto sólo funciona para los servicios que están actualmente instalados.
Puede determinar el SID asociado con un nombre de servicio en particular, ya sea que dicho servicio esté instalado o no, usando el sc showsid
comando:
C:\working>sc showsid wjkjk
NAME: wjkjk
SERVICE SID: S-1-5-80-492907775-8774055-3223757035-3566066944-1037782649
Si está configurando la seguridad en un archivo o carpeta usando el icacls
comando, puede especificar un SID anteponiendole el prefijo *
, por ejemplo, *S-1-5-80-492907775-8774055-3223757035-3566066944-1037782649
.
Para que el servicio pueda acceder a archivos utilizando este ID de seguridad, debe configurarse con un tipo de SID de servicio "sin restricciones" o "restringido". Si está configurado con un tipo de SID de servicio "ninguno", el SID de servicio no funcionará. Puede verificar el tipo de SID de servicio de un servicio instalado con el sc qsidtype
comando:
C:\working>sc qsidtype wuauserv
[SC] QueryServiceConfig2 SUCCESS
SERVICE_NAME: wuauserv
SERVICE_SID_TYPE: UNRESTRICTED
Si el tipo de servicio es "ninguno", puede cambiarlo a "sin restricciones" usando el sc sidtype
comando:
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
Esto no tendrá efecto hasta que se reinicie el servicio.
Nota:deberíanocambie el tipo de SID de un servicio de "ninguno" a "restringido". Es casi seguro que hacerlo provocará un mal funcionamiento del servicio. Es mucho menos probable que cambiar el tipo de "ninguno" a "sin restricciones" cause problemas. Si el tipo de SID del servicio ya está "restringido" o "sin restricciones", no debe cambiarlo.
Respuesta2
Hay un pseudo "usuario" llamado SERVICE
que utilizan todos los servicios, por lo que puede simplemente restringir el acceso permitiendo únicamente el acceso a este "usuario".
Sin embargo, esto no es exactamente lo que usted solicitó, ya que no se trata de un servicio específico, sino de todos los servicios. No existe ningún mecanismo predeterminado para restringir a un solo servicio, aunquepuedesería posible con algunas molestias considerables al intentar forzar a un servicio a utilizar una ID diferente al inicio; no lo recomendaría.