我有一个守护进程,它生成子进程。有时,这些子进程需要与守护进程通信。我希望确保只授权这些子进程与守护进程通信。
我想在以下几个方面实施:
问题:
由于各种需求,我不能使用匿名管道来允许守护进程和子进程之间的通信。
发布于 2009-05-30 22:05:27
是的,/dev/urandom提供的安全性已经足够好了。很多软件都将其用于随机性( SSL、身份验证等)。当生成某种需要多年安全的令牌时(例如证书的私钥),几乎是唯一的时候/dev/随机是一个好主意。
有人提到,如果您具有相同的UID,则可以查看进程的内存。您可以通过让内核认为它是一个setuid进程来避免这种情况,也就是说,如果主进程作为根进程运行,您可以向非特权用户分叉、执行和使用setuid()。其他具有相同UID的进程将无法查看该进程的内存。
凭据查找方法也适用于命名的UNIX套接字,而不仅仅是套接字对。
发布于 2009-05-29 19:05:38
最简单的方法是为每个子进程在服务器中创建管道/套接字对。给出子进程的一端,并保留另一端。在该管道/套接字上出现的任何内容都必须来自该子进程。
另一种方法是要求操作系统从Unix套接字中获得凭据(pid、uid、gid)。在Linux上,您将使用getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) (man 7 socket)。Solaris有getpeerucred。不幸的是,这不是可移植的,但是许多系统对于Unix套接字具有类似的功能。虽然它很复杂,但D-总线包含在许多不同的系统上执行此操作的代码。。
发布于 2009-05-29 09:21:52
那么,如果您要将令牌放入环境变量中,那么任何具有与这些进程相同或更高权限(即UID)的人都将能够读取令牌,然后使用该令牌!这使得问题的其余部分变得毫无意义!?如果您担心同一框中进程之间的安全性(您提到的是本地IPC),那么不要使用环境变量来存储令牌--很容易检查这些令牌(EVs)。
https://stackoverflow.com/questions/925086
复制相似问题