当前位置:  开发笔记 > 运维 > 正文

如何通过Mac OS X上的Unix域套接字传递用户凭据?

如何解决《如何通过MacOSX上的Unix域套接字传递用户凭据?》经验,为你挑选了2个好方法。

在许多操作系统下,Unix域套接字允许进程以不会被恶意破坏的方式可靠地将其凭据传递给另一个进程.例如,这是通过SO_PASSCRED和SO_PEERCRED选项在Linux上完成的,在FreeBSD上通过传递包含cmsgcred结构的消息,在NetBSD上通过设置LOCAL_CREDS选项完成.但是,我还没有找到在Mac OS X下执行此操作的方法.相应的标题(socket.h)似乎已禁用Apple的构建功能.

#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#ifndef __APPLE__
// ...
struct cmsgcred {

想到另一个可以实现相同结果的Mac OS X工具吗?



1> diciu..:

我从未使用过它,但我认为您正在寻找LOCAL_PEERCRED。(请参见man unix)

您可以使用Mac OS X 10.4中引入的LOCAL_PEERCRED套接字选项,在套接字的另一端确认程序的身份。

请参阅技术说明TN2083。守护程序和代理



2> Diomidis Spi..:

更好的是,由于接受了答案,我发现getpeereid()直接返回所需的数据.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有