0

我试图拒绝所有用户删除文件。我希望任何用户都能够读取或执行该文件,但不能修改或删除它。但是,在我通过命令提示符使用以下代码后,甚至没有人可以首先访问该文件!

icacls pic.jpg /deny Everyone:(D)

我尝试了授予某些权限并拒绝其他权限的变体,但均无济于事。我怎样才能做到这一点(在 Windows 7/8 上)?

4

2 回答 2

3

要防止删除文件,您需要拒绝该文件的Delete权限拒绝包含文件夹的Delete Child权限(又名“删除子文件夹和文件”)。为了真正防止删除,两者都不能被允许。

换句话说,如果授予其中一个或两个权限,Windows 允许删除文件。

因此,假设您正在保护 foo\bar.txt 不被删除,您至少应该:

icacls foo\bar.txt /deny Everyone:(DE) *S-1-5-7:(DC)
icacls foo /deny Everyone:(DC) *S-1-5-7:(DC)

请注意,我将 S-1-5-7 (ANONYMOUS LOGON) 包含在拒绝列表中,因为自 Windows XP 以来,Everyone 组中不包含匿名登录,因此最好还是明确拒绝匿名登录。

编辑:请注意,icacls(D)权限与(DE)不同。前者包括同步权限,而后者是单独的删除权限。如果您拒绝同步权限,您可能无法访问(浏览或CD访问或DIR打开)该文件夹。

警告:icacls有一个错误,即单独拒绝 (DE) 的文件将显示为(DENY)(D)而不是(DENY)(DE)在查询时显示。报告于2 3。如上所述(D)和(DE)是不同的。

于 2017-08-05T19:04:34.393 回答
2

要保护文件,您必须使用:

icacls pic.jpg /deny Everyone:(DE)

使用内容保护文件夹:

icacls pics /deny Everyone:(OI)(CI)(DE,DC)

D 是不同访问权限的组合,如果要授予删除文件的权限。

为了让这种语言独立使用*S-1-1-0而不是Everyone.


(OI)= 对象继承 (CI)= 容器继承

于 2014-09-09T13:18:06.903 回答