首先,我不是 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 条目; - 或者在文件(或父目录)上添加显式
/deny
ACE。这不会消除不需要的“允许”ACE,但会使其无效,因为直接拒绝的优先级始终高于继承的允许。(但它可能不会满足 OpenSSH。)
这并非 icacls 所特有的——GUI 具有相同的限制,并且不会允许您删除继承的访问条目,除非您先单击“禁用继承”。
在您的特定情况下,听起来这两个用户应该有权访问整个 C:\Users\testsftp,所以如果您不想删除它们,您可以禁用 .ssh 子目录上的继承(或者如果您愿意,仅在 authorized_keys 文件上)。