Windows services Windows服务和控制台应用程序之间共享的目录权限

Windows services Windows服务和控制台应用程序之间共享的目录权限,windows-services,file-permissions,user-accounts,Windows Services,File Permissions,User Accounts,我不确定这是否适合问这样的问题(也许应该放在超级用户身上?),但我会试试 我有一个C#控制台应用程序和一个Windows服务。两者的功能相同,但console应用程序是在之前创建的,并且是为了向后兼容而保留的。每一个都在运行WCF服务,其方法在C:\ProgramData\MyApp中的文件上运行。控制台应用程序以受限用户(非管理员)的身份运行,Windows服务以NT AUTHORITY\NETWORK service的身份运行。当应用程序创建一些目录/文件时,服务无法删除它,反之亦然 我想把

我不确定这是否适合问这样的问题(也许应该放在超级用户身上?),但我会试试

我有一个C#控制台应用程序和一个Windows服务。两者的功能相同,但console应用程序是在之前创建的,并且是为了向后兼容而保留的。每一个都在运行WCF服务,其方法在C:\ProgramData\MyApp中的文件上运行。控制台应用程序以受限用户(非管理员)的身份运行,Windows服务以NT AUTHORITY\NETWORK service的身份运行。当应用程序创建一些目录/文件时,服务无法删除它,反之亦然


我想把它固定好。我的问题是:我应该将C:\ProgramData\MyApp的完全权限授予网络服务和当前用户吗?或者我应该为运行服务/应用程序创建专用用户吗?

假设您的应用程序没有对新创建的文件设置明确的安全权限,授予文件夹上的网络服务帐户删除权限将解决您的直接问题

此命令将完成以下工作:

icacls c:\ProgramData\MyApp /t /grant "NETWORK SERVICE":(OI)(CI)(IO)D

对您的其他用户服务帐户重复此操作。

这比创建Windows用户“MyAppUser”更安全吗?授予他目录c:\ProgramData\MyApp的完整权限,并使用此用户的帐户(而不是网络服务)运行服务/应用程序?服务的最安全配置始终是创建一个特殊的用户帐户,并仅授予该帐户足够的工作权限,而不超过此权限。但是,您需要小心,不要授予他们所需的更多权限。例如,如果您使您的服务帐户成为administrators组的成员,这违反了特殊帐户的目的。在许多情况下,内置帐户(如LocalService或NetworkService)已经足够好了。