我们在 Windows 服务器上共享一个文件夹,以提供对重要应用程序的访问。更新应用程序时,我们 (DBA) 更改共享上的权限以拒绝对其进行所有访问,然后断开共享上打开的任何文件。在我们完成应用程序更新(对相同文件使用不同的共享)后,我们重新启用对共享的访问。
我们修改共享的方式是使用 MS 管理控制台远程连接到服务器。显然,此功能需要服务器上的管理员访问权限,或者至少需要基础架构团队想要取消的某种级别的权限。
问题是处理应用程序更新的 DBA 如何在服务器上以尽可能少的权限禁用和启用对共享的访问?
一种可能性,尽管需要编程,但可能是编写一个系统服务(因此以所有必需的权限运行,并设置为手动启动),并授予特定组启动和停止该服务的权限(这很简单,请参阅如何将服务的启动/停止/重新启动权限授予非域成员服务器上的任意用户或组?,您可以使用例如服务安全编辑器或进程黑客来编辑 ACL)。
用户根本不需要任何特权:服务将在启动时执行所需的断开/共享更改,并在停止时恢复到正常配置。当您的应用程序必须更新时,执行此操作的用户只需在更新之前启动服务,然后停止它。顺便说一下,这种解决方案被某些软件使用,例如,让每个人都可以更新它(例如,参见Mozilla 维护服务)。
您可以将共享权限设置为 Active Directory 组,然后让基础架构团队授予您对该组的委派权限。当您需要拒绝访问时,只需编辑组成员身份。完成后,恢复组成员身份。
此解决方案不需要任何管理访问权限,并且比每次编辑共享权限要快得多。
你可以:
D:\additionalFolder\yourfolder
,additionalFolder
为 DBA 团队共享,并yourfolder
作为当前共享。我们正在考虑的一个选项是让计划任务执行活动,然后使用某种事件来触发计划任务运行。此解决方案的问题在于,我们不知道有一种方法可以在不授予超出所需权限的情况下发送可能导致触发器触发的事件。