Security 如何通过Mac OS X上的Unix域套接字传递用户凭据?
在许多操作系统中,Unix域套接字允许进程以一种不会被恶意破坏的方式可靠地将其凭据传递给另一个进程。例如,这是在Linux上通过、FreeBSD和NetBSD完成的。然而,我还没有找到在Mac OS X下执行此操作的方法。相应的头文件(socket.h)似乎在Apple的构建中禁用了此功能Security 如何通过Mac OS X上的Unix域套接字传递用户凭据?,security,macos,sockets,Security,Macos,Sockets,在许多操作系统中,Unix域套接字允许进程以一种不会被恶意破坏的方式可靠地将其凭据传递给另一个进程。例如,这是在Linux上通过、FreeBSD和NetBSD完成的。然而,我还没有找到在Mac OS X下执行此操作的方法。相应的头文件(socket.h)似乎在Apple的构建中禁用了此功能 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) #ifndef __APPLE__ // ... struct cmsgcred { 有
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#ifndef __APPLE__
// ...
struct cmsgcred {
有没有想到另一个Mac OS X设备可以达到同样的效果?我从未使用过,但我想你正在寻找本地的PEERCRED。(见man unix) 您可以使用Mac OS X 10.4中引入的本地\u对等套接字选项确认套接字另一端的程序标识
请参见更好的一点,多亏了公认的答案,我发现getpeereid()直接返回所需的数据。事实上,在您的指针之后,我找到了unix(4)中记录的选项。谢谢