对 Windows 服务具有 WRITE 权限而对其他应用只有 READ 权限的文件夹

Folder with WRITE permission for a Windows Service and only READ permission for other apps

我想从 Windows 服务中写入一些文件,并能够从其他应用程序中读取它们。但我不希望其他应用能够写入此文件夹。

是否有一个标准的文件夹(比如有用于存储不必从其他应用程序读取的数据的应用程序数据)?

重要的是要考虑 Windows 根据用户(或他所属的组)和文件系统中的 ACL 条目设置读写文件的权限。所以 "preventing other apps to write to this folder" 实际上是 "other apps which are started under a normal user".

您可以将服务放在

下的目录中

C:\Program Files,

例如

C:\Program Files\CompanyName\ServiceInstallDir

如果服务运行在本地SYSTEM账户下,它有写入该文件夹的权限。普通用户只有读取权限。

但请注意,这不是万无一失的,您永远不知道是否有管理员权限的人在安装后更改了您文件夹的权限。

如果我可以控制系统和其他应用程序(例如,在具有 Active Directory 和域中所有计算机的公司基础架构中),我只会这样做。

另请注意,"other apps" 也可能是 Windows 服务 运行SYSTEM 或其他具有本地管理员权限的用户,因此他们也可以写入您的文件夹.

另一种解决方案是运行在专用用户帐户(本地或Active Directory)下使用该服务,并设置您的文件夹的权限,以便只有该用户具有修改权限。

请注意,您必须授予该用户帐户 "Log on as service" 权限(通过本地安全策略或 AD GPO)。

但即使在这种情况下:如果其他(管理员)用户拥有恢复权限,他也可以绕过 ACL。

另一个重要提示:

运行SYSTEM下的服务表示该服务是高权限的,可能存在安全风险。


eryksun 的重要提示(见评论)谢谢!

另见 https://blogs.technet.microsoft.com/voy/2007/03/22/per-service-sid/

因此您可以防止其他服务写入您的文件。