如何使用“icacls”命令拒绝用户对文件夹除读取和执行之外的所有权限?

如何使用“icacls”命令拒绝用户对文件夹除读取和执行之外的所有权限?

我们想将当前具有完全权限的文件夹的权限更改为具有完全权限的父级继承的用户。我想使用“icacls”命令对用户除读取和执行之外的所有操作应用“拒绝”权限。

当我们尝试应用拒绝权限时,操作显示成功,但用户无法打开文件夹本身。即,甚至读取权限也不适用。我们已尝试了本文中提到的所有命令问题,包括收到的回复,但没有一个起作用。我们也提到了这一点论坛问题但没有找到解决办法。

但是,当我们尝试使用文件夹属性 -> “安全”选项卡手动应用“拒绝”权限时,它会按预期工作,并且用户只获得读取和执行权限。我们还尝试从“管理员”组中删除用户,然后通过命令执行拒绝操作,但它仍然不起作用,甚至读取权限也被禁用。

我们正在尝试下面的一组命令:

takeown /f "E:\foldername" /r /d y

:: Reset inheritance on the directory and sub-directories
icacls "E:\foldername"  /reset /T

:: Set read-only permissions for user
icacls "E:\foldername" /grant "test1":(OI)(CI)(R,X)
icacls "E:\foldername" /deny "test1":(OI)(CI)(W,D)

使用上述命令,我们看到权限应用于文件夹的属性,但是一旦用户单击该文件夹,就会出现“请求权限”的提示,然后甚至无法获得读取权限。

手动授予权限的屏幕截图

我们使用的是 Windows 10 和 Windows Server 2012 R2 电脑。请协助我们解决该问题。

更新:

我们还尝试使用以下命令来包含读取属性、读取扩展属性、列出文件夹/读取和遍历/执行,但问题仍然存在。

icacls "E:\foldername" /grant "test1":(OI)(CI)(R,X,REA,RD,GR,RC,RA)  
icacls "E:\foldername" /deny "test1":(OI)(CI)(W,D)  

我们还尝试使用“e”/“r”选项添加/inheritance 键。

用户的“有效访问”看起来像这样,但是当用户点击该文件夹时,即使读取权限未被修改,他也无法读取内容本身。

查看有效访问

请协助解决该问题。

答案1

根据我的测试,以下命令序列将文件夹设置为只读并由用户执行:

icacls "C:\Test" /reset /T
icacls "C:\Test" /grant "User":(OI)(CI)RX
icacls "C:\Test" /inheritance:r

这是在拥有文件夹“C:\Test”的管理员帐户中执行的(CMD 未以管理员身份运行)。

可能是由于明确添加拒绝条件而导致问题,因为拒绝太多。

答案2

这个答案 (正如@user1686 在对此问题的评论中所告知的)在我们的案例中起作用。

我们试图拒绝写入 (W) 权限,该权限显然也包括“同步”(S) 属性,这是所有读取操作所必需的。我们尝试通过指定要拒绝的写入 (W) 中的各个属性来避免这种情况,如下所示:

icacls "E:\foldername" /deny "test1":(OI)(CI)(WD,AD,WEA,WA) /inheritance:r

相关内容