让我先说明一点:我知道任何想要运行程序(甚至登录)的用户都必须访问(可能至少)Windows系统目录和%ProgramFiles%
中的共享库,但我希望能够访问Skype,例如,通过与非特权用户一起运行Skype,并确保它无法访问任何不必要的文件。
我担心这样做的唯一方法是识别我存储我不希望该用户访问的文件的所有gazillion目录,然后创建一个可以访问这些目录的新用户组,或者运行虚拟机中的Skype和Azureus。
有更好的方法吗?
答案 0 :(得分:3)
通常,帐户至少是Users组的成员,它们可以访问许多内容。您可以使该帐户成为没有组的成员,或者限制性很强的来宾组。
真正的问题是程序的令牌(跟踪正在运行的进程具有哪些安全身份的内部安全对象)将包含Everyone和Authenticated Users组,这些组还具有对大量内容的读访问权。没有这些组,无法创建帐户。您可以删除Everyone和Authenticated Users组对大多数所有内容的访问权限,但跟踪所有这些内容将会有很多工作。
我想说,为不受信任的程序创建标准用户或访客访问帐户将足够安全。为了支持自我更新并将相关文件保存在同一个位置,我建议您直接在他们将要运行的用户帐户的配置文件中安装这些程序,例如: C:\Documents and Settings\skype\Program Files\Skype
如果您想要真正感兴趣,可以使用受限制的令牌使Everyone,Authenticated Users等组仅拒绝(因此他们无法授予任何访问权限)或创建受限制的SID列表。这将难以实现,因为有一些全局对象,程序将期望访问Everyone组可以访问,这通常是一个安全的选择。
请参阅CreateRestrictedToken Function。
还有一个开源命令行程序我创建了一个程序,用于为此目的动态创建受限制的令牌和作业对象:UlimitNT
答案 1 :(得分:1)
也许sudown是一个解决方案。它是一种类似sudo的(从Linux中已知)以无特权用户身份运行的方法,但可以在需要时提升到管理帐户(带密码)。
我想你可以锁定机器,这样用户就可以单独登录,甚至不用自己的权利启动Skype,而是通过sudown以“run as”开始skype。
答案 2 :(得分:0)
除了使用VM之外,您还可以使用Sandbox。以Sandboxie狐狸为例。
答案 3 :(得分:-1)
只需使用acl apis(msdn中的样本)