是否可以禁止取得文件的所有权?

时间:2016-02-13 11:19:09

标签: c++ windows winapi windows-security dacl

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

我最初是从func currentresourcepath () -> String { return (NSBundle.mainBundle().bundlePath + "/Contents/Resources/") } 帐户下运行的服务创建此类文件。然后,我将该文件的Local System设置为D:(A;OICI;GA;;;SY),只允许DACL帐户拥有完全访问权限,并将SYSTEM设置为所有者:

my service

但是在完成所有操作后,我仍然可以通过Windows资源管理器作为管理员获取此文件的所有权:

enter image description here

3 个答案:

答案 0 :(得分:7)

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

您所做的一切就是让管理员更难以更改文件,因为他们必须先取得所有权。这是有益的;它甚至可以防止管理员进行无意的更改。没有人"意外地"取得文件的所有权。

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

结论:不要让那些您不相信管理员访问您的计算机或文件的人。

答案 1 :(得分:4)

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

管理帐户拥有(或可以授予自己)任何权限 - 这意味着他们可以执行任何他们需要的操作,包括覆盖其他帐户(包括其他管理帐户)设置的访问控制。

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

答案 2 :(得分:0)

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

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

  1. 在此article中实施4个反措施。通过实施,我的意思是与您的供应商合作,以获得支持所述技术的硬件和软件。
  2. 实施充当早期启动防恶意软件(ELAM)的文件系统过滤器驱动程序,并根据需要停止取得所有权操作。我相信ELAM API不公开。如果这是真的,你将不得不直接使用MS来获取访问权。
  3. 如果没有物理访问,这种方法也会(至少通过设计)击败恶意软件,包括root kit。请注意,“物理访问”包括锁定远程访问控制器(如iDRAC和iLO),允许远程访问传统上仅通过本地访问可用的功能,包括通过远程介质启动备用操作系统。

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