1

我很好奇是否有办法阻止用户(包括属于管理员组的用户)获得文件的所有权?

我最初从在Local System帐户下运行的服务创建此类文件。然后我将该文件设置DACLD:(A;OICI;GA;;;SY)仅让SYSTEM帐户具有完全访问权限,并设置my service为所有者:

DWORD dwRes = ::SetNamedSecurityInfo(
    strDataFilePath,
    SE_FILE_OBJECT,
    OWNER_SECURITY_INFORMATION,  // change only the object's owner
    pMyServiceUserSid,           // User SID for my service
    NULL,
    NULL,
    NULL);

但完成这一切之后,我仍然可以通过 Windows 资源管理器以管理员身份获得该文件的所有权:

在此处输入图像描述

4

3 回答 3

7

不,这是不可能的。具有管理权限的帐户的本质是他们基本上可以做他们想做的事。管理员拥有系统。无论您如何设置权限,他们都可以始终拥有文件的所有权。

您所做的只是让管理员更难更改文件,因为他们必须首先获得所有权。这是有优点的;它甚至可以防止管理员进行无意的更改。没有人“意外”获得文件的所有权。

正常的解决方法是为每个人分配非管理帐户(这实际上是你应该做的),或者使用一些外部手段加密文件。

底线:不要让您不信任的人访问您的机器或文件。

于 2016-02-13T12:38:07.880 回答
4

无法阻止任何具有足够权限的用户获得文件的所有权。

管理帐户具有(或可以授予自己)任何特权 - 这意味着他们可以做任何他们需要做的事情,包括覆盖由其他帐户设置的访问控制,包括其他管理帐户。

使用具有管理访问权限的帐户的人通常有责任避免做损害系统完整性的事情。

于 2016-02-13T12:38:36.620 回答
0

免责声明:这不会太容易。

假设目标是防止管理员使用内置操作系统工具和常用的第 3 方工具获取所有权(并且您不关心管理员启动备用操作系统、删除驱动器以及需要物理访问的各种其他威胁),那么以下方法将是稳健的。

  1. 落实本文的4项应对措施。通过实施我的意思是与您的供应商合作以获得支持所描述技术的硬件和软件。
  2. 实施文件系统过滤器驱动程序,充当早期启动反恶意软件 (ELAM) 并根据需要停止获取所有权操作。我相信 ELAM API 不是公开可用的。如果这是真的,您必须直接使用 MS 才能获得访问权限。

如果没有物理访问,这种方法也将(至少在设计上)击败恶意软件,包括 root 工具包。请注意,“物理访问”包括锁定远程访问控制器(如 iDRAC 和 iLO),这些控制器允许远程访问传统上只能通过本地访问获得的功能,包括通过远程媒体启动备用操作系统。

如果您想要一个更简单但不太健壮的方法,您可以只实现文件系统过滤器驱动程序(而不是作为 ELAM)。

于 2016-02-17T18:45:47.363 回答