【问题标题】:Change thread permissions in Windows using C使用 C 在 Windows 中更改线程权限
【发布时间】:2013-03-19 07:58:34
【问题描述】:

我有一个服务器应用程序,它使用多客户端方法。当它检测到新请求时,首先为新客户端创建一个新套接字。然后为它创建一个新的线程,新线程将做它应该做的任何事情。

当我为我的客户创建一个新线程时,以管理员身份执行它是不安全的(我的应用程序本身以管理员身份运行)。我想将其权限更改为 Users group 权限。我的意思是 therad 应该作为受限用户执行,而不是管理员。

我的平台是Microsoft Windows,我的编程语言是C。我怎样才能做到这一点?我搜索了互联网,但我一无所获。

你能在这里给我发一个示例程序吗?

【问题讨论】:

  • 查找“模仿”。
  • 这取决于你的意思。一个线程可以模拟另一个安全上下文,但没有“trapdoor”支持;如果线程正在运行不受信任的代码,则无法阻止代码恢复为完全权限。

标签: c windows multithreading security permissions


【解决方案1】:

你不能那样做。一个进程中的所有线程都以相同的用户身份运行,具有相同的提升级别。

按照您的要求进行操作的唯一方法是启动一个新进程而不是一个新线程。这篇文章可能会有所帮助:Running as Limited User - the Easy Way

【讨论】:

  • 我们有 "setuid()" 函数在 Linux 中做同样的工作。创建线程时,您可以在线程本身中更改其权限。我的意思是,在线程执行的函数的第一行,你可以改变它的权限,然后你可以做任何你想做的事情。像这样的窗口中是否存在任何功能?
  • 你的意思是当我在一个线程中设置用户ID时,整个进程都会得到相同的用户ID?
  • 是的。用户/权限的东西是每个进程,而不是每个线程。线程共享相同的地址空间,因此允许它们具有不同的权限是没有意义的,因为它们只能操纵其他线程的执行。
  • 我不这么认为。因为我有一个代码,我自己写的。它有效。我的代码中的每个线程本身都有与其他线程不同的权限。如果你愿意,我可以在这里发布。
猜你喜欢
  • 2012-07-14
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
相关资源
最近更新 更多