代码之家  ›  专栏  ›  技术社区  ›  Brendan Long

更改正在运行的程序的有效用户id的方法?

  •  4
  • Brendan Long  · 技术社区  · 16 年前

    seteuid ,看起来这正是我需要的,但我没有运行它的权限。到目前为止,我所能想到的是一个BASH脚本,以检查他们到达实际二进制,但我想做这一切都作为C++,如果可能的话。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    正如巴古利斯在书中所说 his answer ,你 如果您的二进制文件归root所有并且设置了setuid位,那么您就需要自己实现身份验证部分(检查是否允许用户成为root用户)。

    你基本上是在重写 sudo 在您的应用程序中—处理此问题的最佳方法是按照您自己的建议执行,并使用使用 /usr/bin/id 苏多 (或 su

        2
  •  4
  •   bmargulies    16 年前

    下面是这些函数的工作原理。

    原则是最小特权原则。如果我编写一个需要特殊访问权限的程序,我希望使用该访问权限运行的代码尽可能少。所以,我安装了setuid,但它做的第一件事就是在需要特权的狭窄代码窗口出现之前,它会返回特权。

    您不能调用sudo(当然,除了通过fork/exec)。你可以 是 一个像sudo这样的程序,它安装了setuid并决定何时适当地使用这种强大的功能。