在Windows XP上:如何创建仅对一个特定目录具有读取权限的用户?

在Windows XP上:如何创建仅对一个特定目录具有读取权限的用户?,windows,windows-xp,privileges,Windows,Windows Xp,Privileges,首先让我声明:我知道任何想要运行程序(甚至登录)的用户都必须访问(可能至少)Windows系统目录和%ProgramFiles%中的共享库,但我希望能够访问Skype,例如,通过使用非特权用户运行它,并确保它不能访问任何不必要的文件 我担心这样做的唯一方法是识别我存储不希望该用户访问的文件的所有数以百万计的目录,然后创建一个可以访问这些目录的新用户组,或者在VM中运行Skype和Azureus 除了使用虚拟机,还有更好的方法吗?您可以研究使用沙箱。以福克斯为例。也许是一个解决方案。这是一种类似于

首先让我声明:我知道任何想要运行程序(甚至登录)的用户都必须访问(可能至少)Windows系统目录和
%ProgramFiles%
中的共享库,但我希望能够访问Skype,例如,通过使用非特权用户运行它,并确保它不能访问任何不必要的文件

我担心这样做的唯一方法是识别我存储不希望该用户访问的文件的所有数以百万计的目录,然后创建一个可以访问这些目录的新用户组,或者在VM中运行Skype和Azureus


除了使用虚拟机,还有更好的方法吗?

您可以研究使用沙箱。以福克斯为例。

也许是一个解决方案。这是一种类似于sudo(从Linux中可以知道)的方法,以非特权用户的身份运行,但在需要时可以升级到管理帐户(使用密码)


我想你可以锁定机器,这样用户就可以单独登录,甚至不能使用他的权限启动skype,而是通过使用sudown的“run as”启动skype。

通常,帐户至少是用户组的成员,用户组确实可以访问很多东西。您可以将该帐户设置为非组的成员,也可以设置为限制性很强的来宾组

真正的问题是程序的令牌(一个跟踪正在运行的进程的安全身份的内部安全对象)将包含Everyone和Authenticated Users组,这些组还具有对大量内容的读取权限。没有这些组,无法创建帐户。您可以删除每个人和经过身份验证的用户组对大部分内容的访问权限,但要追踪所有这些内容将需要大量的工作

我想说的是,为不受信任的程序创建一个标准的用户或来宾访问帐户就足够安全了。为了支持自我更新并将相关文件保存在同一位置,我建议您将这些程序直接安装在它们将作为用户帐户运行的配置文件中,例如
C:\Documents and Settings\skype\Program files\skype

如果您真的想玩得开心,可以使用受限令牌让Everyone、Authenticated Users等组仅拒绝(因此他们不能授予任何访问权限)或创建受限SID列表。这将很难实现,因为程序将期望访问Everyone组可以访问的全局对象,这通常是一个安全的选择


还有一个开源的命令行程序,我创建了一个用于动态创建受限令牌和作业对象的程序,用于此目的:

只需使用acl API(msdn中的示例)

我为此工作了一段时间。。。似乎不是“HOSTNAME\Users”组成员的用户创建的每个程序都会自动成为“内置\Users”组的成员,这似乎与普通用户组具有相同的访问权限。你能告诉我什么吗?BUILTIN是“用户”SID的类别。“HOSTNAME\Users”具有误导性,因为它意味着每个系统都有自己的用户组,但事实上,用户是在所有域中具有相同值的几个非唯一SID之一。我不知道如果不指定其他内容,帐户自动属于“用户”。我必须记住这一点。在这种情况下,请将该帐户添加到来宾组,该组实际上没有自己的访问权限。您的程序(UlimitNT)正是我正在寻找的,但该网站似乎不起作用,请您提供另一个链接,好吗?显然,康卡斯特决定停止向我发送未经请求的流量。我把这个项目上传到了谷歌代码上(这真的是一个更好的家)。