当前位置:嗨网首页>书籍在线阅读

25-接收发送端的凭据

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

61.13.4 接收发送端的凭据

另一个使用辅助数据的例子是通过 UNIX域套接字接收发送端的凭证。这些凭证由发送端进程的用户ID、组ID以及进程ID组成。发送端可能会将自己的用户ID和组ID设置为相对应的实际用户ID、有效用户ID或者保存设置ID。这样使得接收端进程可以在同一台主机上验证发送端。要获得更多的细节,请参阅socket(7)和unix(7)用户手册页。

与传递文件凭证不同,有关发送端的凭证传递并没有在SUSv3中规定。除了Linux之外,一些现代的BSD系统中实现了这个特性(这里的凭证结构体中包含的信息比Linux上的多),但是很少有其他的UNIX实现带有这个特性。有关 FreeBSD 上的凭证传递的细节描述可在[Stevens et al., 2004]中找到。

在Linux上,一个特权级进程如果需要传递的凭证的话,可以将用户ID、组ID和进程ID分别伪造成CAP_SETUID、CAP_SETGID和CAP_SYS_ADMIN。

随本书发布的源码中,子目录sockets中的scm_cred_send.c和scm_cred_recv.c文件中给出了传递凭证的例子。