我有一个共享系统,运行 Windows7 X64,仅限于“标准用户”,没有密码。并非所有有权访问系统的人都有管理员密码。
这种方法效果很好,但有些应用程序除外 - 特别是用于加密硬盘/USB 闪存驱动器的解锁应用程序。某些特定的应用程序要么需要管理员访问权限(例如 Seagate Blackarmor),要么在没有管理员访问权限的情况下失败 - 因为这些程序正在向设备发送原始命令,所以这是可以预料到的。
我希望能够将这些特定程序的哈希值添加到白名单中,并让它们以管理员身份运行而无需任何提示。由于这些程序在定义上位于可移动媒体上,因此我不能简单地使用文件名甚至路径。共享系统的用户之一可以被视为“狡猾的”,因此任何暂时授予用户帐户管理员权限的行为肯定会导致问题。
我希望能够做到:1) 创建一个只能运行白名单中的程序的管理员帐户(如果失败,则从目录中运行)我找不到一个好方法来做到这一点:据我所知,SRP 是否同样适用于所有用户?即使我在系统上的所有目录上都放置了“拒绝”令牌,以便新目录可以继承它,它仍然可能从已安装的 USB 设备运行程序。我也不知道是否可以创建一个不从父级继承的新目录,这将删除拒绝令牌并提供管理员访问权限。
2)找到一个轻量级服务,在本地环境中运行这些程序。Windows7 似乎默认阻止跨权限级别通信,而我还没有在 Windows 7 中找到这样的服务。一个例子似乎是“sudo”(http://pages.cpsc.ucalgary.ca/~nfriess/sudo/)但由于它使用了 WLNOTIFY 钩子,因此在 Vista 和 Windows7 下都无法运行
非解决方案:
- RunAs:需要管理员密码!(但每个人都称其为“sudo”)
- RunAs /savecred:好主意,但似乎完全不安全。
- RUNASSPC - 与 RunAs 概念相同,使用带有凭据的“加密”文件,但检查用户空间。
- 计划任务 - “固定”权限使这变得困难,并且即使支持也不支持交互式进程。
- SuRun:来自 Google:“Surun 使用自己的 Windows 服务,在程序启动时将用户添加到管理员组,然后再次自动将其从该组中删除”
答案1
可以使用与管理员需要的应用程序位于同一目录中的清单文件,如果应用程序是 app.exe,则清单将是 app.exe.manifest
答案2
也许它可以解决问题:在本地 GPO 中或通过域 GPO,为标准用户提供“加载和卸载设备驱动程序”的功能。