即使通过 ICACLS 设置“只读”权限,文件仍然可以被修改。为什么它不起作用?

即使通过 ICACLS 设置“只读”权限,文件仍然可以被修改。为什么它不起作用?

我是我电脑的管理员,电脑上还有一些其他用户。我通过命令提示符使用 ICACLS 将文件夹 (Gabi) 设置为特定用户 (Alice) 的“只读”(我在 VirtualBox 中使用 Windows 7)。该文件夹有一些“.txt”文件。我使用了以下命令:

icacls "C:\ITSM Lab1\Administration\Gabi" /grant:r Alice:(OI)(CI)R /T

上述命令在命令提示符中成功运行。但文件夹中的文件仍然可以修改(Alice 可以更改文本文件,也可以保存文件。他也可以重命名。他甚至可以删除包含文件的整个文件夹)。

我也尝试过这个链接:在 Windows 7 上使用 icacls 将目录设为只读。我点击链接并尝试了以下命令:

C:\Windows\system32\Icacls "C:\ITSM Lab1\Administration\Gabi" /deny "Alice": (CI)(OI)(W,D)  /Grant:r "Alice":(CI)(OI)R /T

在上面的命令中,我拒绝 Alice 的“写入”和“删除”权限,并授予 Alice“只读”权限。此命令成功运行,但文件夹“Gabi”完全无法访问和删除,这不符合我的目的。

然后我将 Windows 7 恢复到运行上述代码之前的状态。

我不知道为什么这些命令不是实际上是在设置“只读”权限。实际上,我希望以这样的方式设置权限,即 Alice 能够读取 txt 文件,但不能更改/删除文件/文件夹,并且他不能在“Gabi”文件夹中创建任何新文件/文件夹。我刚刚通过 GUI(安全选项卡)检查了 Alice 的权限:在“允许”列中,只有“读取”被勾选(没有其他勾选标记)。因此,GUI 显示 Gabi 文件夹已应用“只读”权限。但是,Alice 可以仍然更改并删除这些文件和文件夹。我不知道为什么。

我究竟做错了什么?


在运行第一个命令之前icacls "C:\ITSM Lab1\Administration\Gabi" /grant:r Alice:(OI)(CI)R /T,我运行了以下命令:

icacls "C:\ITSM Lab1\Administration\Gabi" /grant Alice:R /T

当我运行命令时:icacls "C:\ITSM Lab1\Administration\Gabi我得到以下结果:

icacls "C:\ITSM Lab1\Administration\Gabi"
C:\ITSM Lab1\Administration\Gabi Tanvir-PC\Alice:(R)
                                 Tanvir-PC\Alice:(OI)(CI)(R)
                                 Tanvir-PC\Gabi:(OI)(CI)(F)
                                 Tanvir-PC\SysAdministrator:(OI)(CI)(F)
                                 Tanvir-PC\CEO:(OI)(CI)(F)
                                 Tanvir-PC\Managers:(I)(OI)(CI)(N)
                                 Tanvir-PC\SysAdministrator:(I)(OI)(CI)(F)
                                 Tanvir-PC\CEO:(I)(OI)(CI)(F)
                                 BUILTIN\Administrators:(I)(F)
                                 BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                                 NT AUTHORITY\SYSTEM:(I)(F)
                                 NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                                 BUILTIN\Users:(I)(OI)(CI)(RX)
                                 NT AUTHORITY\Authenticated Users:(I)(M)
                                 NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
Successfully processed 1 files; Failed processing 0 files

结果截图


更新:

在我的 Windows 7(在 VirtualBox 中)中,有 4 个本地组(我通过命令行创建的):

行政
首席执行官 经理 系统
管理员

每个本地组都有用户(我通过命令行创建):

用户在“行政“ :爱丽丝加比

用户在“CEO“:酋长

用户在“经理“:安东尼,伊莉莎

用户在“系统管理员“: 行政

群组 用户

答案1

问题:你这个用户被授予额外权利

我想以这样的方式设置权限,使 Alice 能够读取 txt 文件,但不能更改/删除文件/文件夹

为了实现此结果,你的用户应该仅有的被授予文件夹的 NTFS 读取权限。您的用户仍然可以修改此文件夹中的对象,这表明他被授予的不仅仅是读取权限。NTFS 权限是附加的。因此,授予用户的所有权限加在一起以确定用户最终可以执行的操作。

可以通过直接授予用户对象的权限或授予用户所属组的权限来向用户授予权限。

根据icacls "C:\ITSM Lab1\Administration\Gabi"命令的输出,以下身份对该文件夹具有(M)修改或(F)全部权限(我排除了 SYSTEM):

  • Tanvir-PC\Gabi:(OI)(CI)(F)
  • Tanvir-PC\SysAdministrator:(OI)(CI)(F)
  • Tanvir-PC\CEO:(OI)(CI)(F)
  • Tanvir-PC\SysAdministrator:(I)(OI)(CI)(F)
  • Tanvir-PC\CEO:(I)(OI)(CI)(F)
  • BUILTIN\管理员:(I)(F)
  • BUILTIN\管理员:(I)(OI)(CI)(IO)(F)
  • NT AUTHORITY\已认证用户:(I)(男)

最明显的问题是特殊身份 Authenticated Users 具有修改权限。此组自动拥有成员机器上所有拥有有效账户的用户,其中将包括您的用户。

此外,如果此列表中还有其他组,而您的用户是这些组的成员,那么他在这些组中的成员资格也将赋予他除读取之外的权限。

可用的解决方案

将用户从被授予超过文件夹读取权限的任何组中删除,或者撤销该组对该文件夹的权限。

如果以上方法不可行,您可以拒绝用户对该文件夹的以下权限。拒绝权限总是覆盖允许权限,因此这将抵消授予用户的任何允许权限,无论这些权限是如何授予的:

拒绝的权限:

  • WD--写入数据/添加文件
  • AD - 附加数据/添加子目录
  • WA——写入属性
  • DC--删除子项
  • DE-删除
  • WEA-- 写入扩展属性

笔记:使用拒绝权限通常是一个坏主意,应该只作为最后的手段。


管理权限的更好方法

通常需要向多个用户授予对文件夹的以下权限:

  • 调整

最大限度地减少授予/撤销用户权限所涉及的工作的最佳实践方法是使用资源组。资源组只是被授予了对象特定类型权限的组。例如,您的文件夹需要以下组:

  • r_Gabi-Read(授予读取权限)
  • r_Gabi-修改(授予修改权限)

要修改用户或组对对象的权限,只需在相应的资源组中添加或删除其成员身份即可。这比修改对象本身的权限要快。它还有一个明显的优势,就是可以在 Active Directory 用户和组 MMC 管理单元(或非域 PC 的本地帐户)中明确说明谁可以访问什么。

此策略要求除了授予资源组的权限之外,您还仅向SYSTEMAdministrators身份授予完全控制的附加权限。不应授予对象上的其他权限。

相关内容