有没有办法在覆盖时保留文件夹权限?

有没有办法在覆盖时保留文件夹权限?

我有一台 Windows Server 2008 R2,它托管一个具有以下文件夹结构的网站:

C:\
    网际网路
        wwwroot
            我的应用程序
                JS
                样式

应用程序池标识应该对 JS 和 Styles 文件夹具有写入权限,因为我们会动态生成这些文件夹。到目前为止没有问题。

但是,当部署应用程序的新版本时,这些文件夹会被替换,权限也会消失。有没有办法保留这些特定文件夹中的权限,以确保它们在被替换时不会丢失权限?

谢谢

答案1

创建新文件夹时,它将继承其父文件夹的权限。因此,如果您删除文件夹JSStyles重新创建它们,它们将默认具有与MyApp文件夹上设置的相同(继承)权限。

更改您的部署解决方案,要么保留这些文件夹并仅更改其内容,要么让部署解决方案重新创建它们并重新明确设置权限。一旦删除文件夹,就没有神奇的方法可以恢复相同的权限。

动态生成 JS 和 CSS 并将其写入磁盘是否是个好主意也值得怀疑。如果您要动态缩小,则只需将结果缓存在内存中,这样就不需要磁盘上的写入权限。

答案2

您可以使用 win7 和 windows 2008 附带的 icacls.exe 记录 ACL 和安全设置。这会将权限记录到纯文本文件中。然后,您可以再次使用 icacls.exe 重新导入文本文件,它会将安全性重置回原来的状态。

语法有点复杂,但确实有效。

ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
stores the DACLs for the files and folders that match the name
into aclfile for later use with /restore. Note that SACLs,
owner, or integrity labels are not saved.

相关内容