unix domain socket进程凭据

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

进程凭据是指unix domain socket(AF_UNIX)发送方的pid,uid,gid信息。

只能是AF_UNIX,不能是AF_INET的原因很简单,AF_INET可能都不在同一台机器上,pid,uid,gid没有意义。

在以下的内容中,socket server作为接收方,socket client作为发送方,当然反过来也没有问题,不过本文以这个为例。

有两种方法传递进程凭据:

1、SO_PEERCRED

man pages中的解释:

SO_PEERCRED
              Return the credentials of the foreign process connected to
              this socket.  This is possible only for connected AF_UNIX
              stream sockets and AF_UNIX stream and datagram socket pairs
              created using socketpair(2); see unix(7).  The returned
              credentials are those that were in effect at the time of the
              call to connect(2) or socketpair(2).  The argument is a ucred
              structure; define the _GNU_SOURCE feature test macro to obtain
              the definition of that structure from <sys/socket.h>.  This
              socket option is read-only.

在socket server端调用如下代码:

struct ucred cred;
socklen_t len;
len = sizeof(struct ucred);
// ......, after accept
getsockopt(client_fd, SOL_SOCKET, SO_PEERCRED, &cred, &len);
printf("Credentials from SO_PEERCRED: pid=%d, uid=%d, gid=%d\n", cred.pid, cred.uid, cred.gid);
注意编译时先#define _GNU_SOURCE,再#include <sys/socket.h>,否则struct ucred的定义找不到的;

需要对client_fd调用getsockopt,如果对listen_fd调用的话,每

关于UNIXDOMAIN协议的接收发送者验证 <br />在Linux上, <br />1) receiver 要 setsockopt SO_PASSCRED <br />2) sender 要显式的调用 sendmsg [cmsg_type SCM_CRENDENTIALS, cmsg_data 为 ucred 并由 sender 填充 (kernel会作检验,如果pid/uid/gid不正确, 则会报错 "Operation not permitted" )] <br />3) receiver 用 recvmsg 接收。 <br /><br / 阅读详情

相关推荐

AI Agent安全密码管理:构建“使用而不看见”的代理网关架构

在自动化运维和AI Agent开发中,凭据安全管理是核心挑战。传统方案将密码硬编码或存储在环境变量中,存在泄露风险且难以满足合规要求。基于最小权限和零信任原则,通过构建隔离的安全代理层实现凭据的“间接调用”与“最小化暴露”。这种架构借鉴了系统工具的安全范式,将密码存储与使用分离:代理网关负责安全存储和凭据使用,AI Agent仅通过安全通道(如Unix Domain Socket)发起认证请求,全程不接触密码明文。该方案特别适用于需要自动化登录数据库、API等服务的场景,能有效防止凭据在日志、内存中泄露,同

weixin_30932215的博客 373

(转)Linux内核分析与编程__第14章_Linux网络系统分层结构

《Linux内核分析与编程》的第14章_Linux网络系统分层结构。

Aegis:轻量级应用层密钥管理守护进程的设计与实践

在现代软件工程中,密钥管理与配置安全是保障系统安全性的基础环节。其核心原理在于将敏感信息(如数据库密码、API令牌)与应用程序代码及环境解耦,通过可信进程进行集中管控。这一技术价值在于显著缩小攻击面,防止密钥通过环境变量、配置文件或日志意外泄露,同时支持动态轮换与访问审计。典型的应用场景包括微服务架构、容器化部署以及GitOps实践中的敏感配置注入。本文聚焦于Aegis这一轻量级安全工具,它采用守护进程(Daemon)模式,通过进程间通信(IPC)实现密钥的安全分发,并结合主密钥加密机制,为开发团队提供了一

weixin_30530939的博客 148

详谈:socket套接字

socket.setsockopt(level, optname, value) ①level:在套接字级别上(SOL_SOCKET),socket代表了一个协议栈的不同层,level参数指定了选项应用于哪一层。 level的取值以SOL_开头(SOL_SOCKET,SOL_TCP等等),它还可以通过设置一个特殊协议号码来设置协议选项, 然而对于一个给定的操作系统,大多数协议选项都是明确的,所以为...

weixin_42752248的博客 1785

setsockopt 函数功能及参数详解

setsockopt() 函数用于任意类型、任意状态套接口的设置选项值

Jaylen.sun的嵌入式之旅 1万+

getsockopt SO_PEERCRED

SO_PEERCRED only works on AF_UNIX stream socket or AF_UNIX stream/datagram socket created by sockpair   sockpair   #define _GNU_SOURCE #include &lt;sys/socket.h&gt; #include &lt;sys/un.h&gt; #inc...

happykillerxxx的专栏 1881

socket套接字选项

本文写作背景基于对多网卡的配置,要求实现多个网卡同时上网,并且能指定 仅针对linux下的socket选项进行整理分析。 /* For setsockopt(2) */ define SOL_SOCKET 1 define SO_DEBUG 1 define SO_REUSEADDR 2 define SO_TYPE 3 define SO_

俗科技的博客 2032

Linux下IPC实现——Unix domain socket

IPC实现主要有两种方式 共享内存 消息传递 概念介绍 Unix domain socket 又叫 IPC(inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信。socket 原本是为网络通讯设计的,但后来在 socket 的框架上发展出一种 IPC 机制,就是 UNIX domain socket。虽然网络 socket 也可用于同一台主机的进程间通讯(通过 loopback 地址 127.0.0.1),但是 UNIX domain socke

小小鱼的博客 2250

Debian 9 LEMP部署深度指南:从Socket路径到生产就绪校验

LEMP(Linux + Nginx + MySQL/MariaDB + PHP)是Web服务的基础技术栈,其核心在于组件间稳定、低延迟的进程通信。理解Nginx与PHP-FPM通过Unix Socket或TCP进行FastCGI交互的原理,是解决502/504错误的关键;而MariaDB的socket路径、权限模型与debian-sys-maint机制,则直接决定数据库连接可靠性。在Debian 9这类强调ABI稳定性的LTS系统中,包管理策略(如mysql命令实为MariaDB软链接)、PHP扩展启用机

weixin_30383279的博客 490

【kubevirt】(virt-launcher Part 1)virt-launcher 入口与外壳层 — 超深度逐行专业分析

Part 1: virt-launcher 入口与外壳层 — 超深度逐行专业分析

zhonglinzhang 467

Agent开发中的IPC:进程间通信与稳定消息传递实践

在多进程协作的软件系统中,进程间通信(IPC)是连接各模块的底层基础设施。无论是Agent核心与工具服务之间的方法调用,还是异步事件通知与状态同步,都依赖于可靠的IPC机制。常见的实现包括管道、Socket、RPC和消息队列,它们分别适用于不同边界与业务场景。选择合适的IPC方案,并定义统一的消息协议,能够显著提升系统的可维护性与扩展性。在Agent工程化实践中,工具调用需要关注超时、幂等、全链路追踪和安全边界等核心问题;引入事件流还可以支持中间过程展示与行为回放。本文从基础概念出发,梳理Agent场景下的

weixin_34302798的博客 526

从容器逃逸到域控提权:vulnstack4靶场实战与内网渗透技术解析

容器技术通过资源隔离与命名空间实现应用沙箱化,其安全机制依赖于内核特性与配置策略。然而,当宿主机关键资源(如Docker Socket)不当暴露时,攻击者可利用容器逃逸技术突破边界,获取宿主机控制权。这一突破在红队实战中具有极高价值,为内网横向移动建立初始据点。在Windows域环境中,攻击者依托凭证窃取、哈希传递与Kerberos票据攻击等技术,可沿信任链横向移动,最终通过DCSync、黄金票据等手段实现域控提权。本文以vulnstack4靶场为例,系统演示了从Web漏洞利用、容器逃逸到内网渗透的完整攻击

weixin_33860528的博客 356

数据从业者必配:Docker用户组配置原理与全平台实操指南

Docker用户组(docker group)是Linux系统中控制Docker守护进程访问权限的核心机制,其本质是通过Unix socket文件(/var/run/docker.sock)的属组读写权限,实现非root用户安全调用Docker API。该机制避免了sudo提权风险和chmod 666带来的高危攻击面,在保障容器操作效率的同时,将权限严格限定在Docker上下文内。广泛应用于JupyterLab本地开发、MLflow模型服务化、Airflow DockerOperator编排及CI/CD流水

weixin_34367257的博客 456

Linux下Samba4搭建AD域控实战指南

活动目录(Active Directory)是企业IT基础设施中的核心身份认证服务,传统依赖Windows Server实现。随着开源技术的发展,基于Linux系统通过Samba4搭建AD域控的方案日趋成熟,特别适合预算有限的中小企业环境。该方案不仅实现了零授权成本,还充分发挥了Linux系统的高稳定性优势,并能与现有Linux服务深度集成。从技术原理看,Samba4完整实现了AD域控的核心功能,包括Kerberos认证、LDAP目录服务和DNS解析等关键组件。在实际部署中,需要特别注意时间同步、网络配置和

weixin_34210740的博客 345

Arch Linux邮件服务器搭建:Exim+SpamAssassin+Clamd+Dovecot实战

邮件服务器是现代运维基础设施的核心组件之一,其核心能力涵盖SMTP收发、垃圾邮件识别、病毒扫描与安全投递。基于Linux系统的邮件服务通常依赖MTA(邮件传输代理)、内容过滤引擎、反病毒守护进程及IMAP/POP3服务协同工作。其中,Exim凭借原生ACL编程能力实现细粒度控制,SpamAssassin提供可定制的贝叶斯与规则匹配反垃圾机制,Clamd通过内存驻留式扫描保障实时性,而Dovecot以模块化配置和LMTP协议支撑高可靠本地投递。该技术栈特别适合资源受限的VPS环境,兼顾轻量部署、日志可溯与升级

weixin_30430169的博客 414

DOKS日志可观测性实战:AxoSyslog+Managed OpenSearch全链路方案

Kubernetes日志可观测性是保障生产稳定的核心能力,其本质是将分散在Pod stdout/stderr、节点系统日志、API Server审计日志等多源异构日志统一采集、结构化解析、持久化存储与语义化查询。传统kubectl logs仅提供瞬时快照,缺乏长期归档、跨组件关联与实时分析能力;而托管K8s服务(如DOKS)更因控制平面不可见,加剧日志断层风险。AxoSyslog凭借低开销Socket直连采集与轻量级流式处理,成为DOKS官方推荐的日志采集器;结合DigitalOcean Managed O

dianjiaxian1205的博客 330

Ubuntu 18.04 部署 OpenLiteSpeed:高性能 Web 服务器实战指南

Web 服务器是现代应用交付的基石,其架构设计直接影响并发处理能力、资源效率与运维复杂度。OpenLiteSpeed 采用单进程多线程+LSAPI 深度集成 PHP 的独特模型,规避了 Nginx+PHP-FPM 的进程切换开销和 Apache 的内存冗余,在 Ubuntu 18.04 这一稳定 LTS 环境中可充分发挥内核 4.15 对 TCP Fast Open、eBPF 和 systemd socket 激活的支持。它不仅提供 HTTP/2、Brotli、OCSP Stapling 等现代协议能力,更

weixin_34033624的博客 453

Ubuntu 14.04下PowerDNS+MariaDB高可用DNS部署实战

DNS权威服务器是网络基础设施的核心组件,其稳定性依赖于后端存储的可靠性与查询性能。PowerDNS作为模块化设计的开源DNS服务器,通过SQL backend(如gmysql)实现动态数据管理;MariaDB则凭借事务支持、复制能力和InnoDB引擎,成为生产环境中首选的关系型后端。在长期支持系统如Ubuntu 14.04上,版本锁定带来兼容性挑战,但也保障了审计合规与升级可控性。本文聚焦PowerDNS 3.4.7与MariaDB 10.0的深度协同——涵盖APT源适配、gmysql连接池调优、sche

culi4814的博客 553
上一篇: 获取urllib2.urlopen失败时的错误页面
下一篇: android emulator虚拟设备分析第一篇之battery
ayu_ag
博客等级 码龄16年 45粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值