gpt4 book ai didi

linux - SO_PEERCRED 与 SCM_CREDENTIALS - 为什么两者都有?

转载 作者:IT王子 更新时间:2023-10-29 00:20:09 28 4
gpt4 key购买 nike

SO_PEERCRED 是获取连接的 AF_UNIX 流套接字的 pid/uid/gid 的简单方法,SCM_CREDENTIALS 或多或少相同,但更复杂(各种辅助消息)。 Links to example showing both ways .

  1. 为什么有两种方法可以获取或多或少相同的信息?
  2. 为什么更舒服的 SO_PEERCRED 没有列在 unix(7) 联机帮助页中?
  3. 哪个在实际应用中使用较多?

我应该使用什么?

最佳答案

  1. 如果我没理解错的话,两者之间有细微的差别。 SO_PEERCRED 检索对等进程的凭据,无需与对等进程进行任何交互。相反,SCM_CREDENTIALS 是一种发送/接收对等进程凭据的机制,然后由内核检查这些凭据。当进程以 UID 0 运行时,这种细微差别可能很重要。SCM_CREDENTIALS 允许以 UID 0 运行的进程声明自己的特权较低(例如,UID 50),而这对于 SO_PEERCRED

  2. 见上文。我猜想使用 SCM_CREDENTIALS 是被鼓励的,SO_PEERCRED 只是为了兼容性才被支持。

  3. dbus 守护进程似乎使用了 SO_PEERCREDgetpeereid()。我认为最好复制他们的代码以便可移植地获取凭据。

http://cgit.freedesktop.org/dbus/dbus/tree/dbus/dbus-sysdeps-unix.c?id=edaa6fe253782dda959d78396b43e9fd71ea77e3

关于linux - SO_PEERCRED 与 SCM_CREDENTIALS - 为什么两者都有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037086/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com