Windows Server 19 上的 icacls 似乎不起作用

Windows Server 19 上的 icacls 似乎不起作用

首先,我不是 Windows 专家。此外,我交谈过的 Windows 用户似乎不熟悉“icacls”,我觉得这很奇怪。我通过搜索找到了它。我看到有人问过类似的问题,但从未得到答案。我希望通过提供一个具体的例子,它可能对某些人有意义。尝试在不使用 GUI 的情况下删除权限,为什么这似乎没有效果?(出于安全考虑,特定名称已更改):

domain\testsftp@SERVER1 C:\Users\testsftp\.ssh>icacls authorized_keys
authorized_keys NT AUTHORITY\SYSTEM:(I)(F)
                BUILTIN\Administrators:(I)(F)
                DOMAIN\TESTSFTP:(I)(F)
                DOMAIN\dal123:(I)(F)
                DOMAIN\adm_j123:(I)(F)

Successfully processed 1 files; Failed processing 0 files
domain\testsftp@SERVER1 C:\Users\testsftp\.ssh>icacls authorized_keys /remove "DOMAIN\dal123"
processed file: authorized_keys
Successfully processed 1 files; Failed processing 0 files
domain\testsftp@SERVER1 C:\Users\testsftp\.ssh>icacls authorized_keys
authorized_keys NT AUTHORITY\SYSTEM:(I)(F)
                BUILTIN\Administrators:(I)(F)
                DOMAIN\TESTSFTP:(I)(F)
                DOMAIN\dal123:(I)(F)
                DOMAIN\adm_j123:(I)(F)

Successfully processed 1 files; Failed processing 0 files

domain\testsftp@SERVER1 C:\Users\testsftp\.ssh>

它显示成功了,但什么都没变。有人能帮忙吗?谢谢!

答案1

无法删除 ACL 条目,因为它遗传 (I)从父目录中删除,而不是直接添加到文件中。 删除它的唯一方法是:

  • 删除用户父目录,它最初被定义在那里(如果你在目录上运行 icacls,它应该显示该条目为可继承的(OI)(CI),但是不是作为继承(I)– 如果仍然显示为继承,请再试一级);
  • 或禁用/inheritance文件(或父 .ssh 目录),将所有继承的 ACE 转换为可直接编辑的 ACE,并且然后 /remove文件中不需要的 ACL 条目;
  • 或者在文件(或父目录)上添加显式/denyACE。这不会消除不需要的“允许”ACE,但会使其无效,因为直接拒绝的优先级始终高于继承的允许。(但它可能不会满足 OpenSSH。)

这并非 icacls 所特有的——GUI 具有相同的限制,并且不会允许您删除继承的访问条目,除非您先单击“禁用继承”。

在您的特定情况下,听起来这两个用户应该有权访问整个 C:\Users\testsftp,所以如果您不想删除它们,您可以禁用 .ssh 子目录上的继承(或者如果您愿意,仅在 authorized_keys 文件上)。

相关内容