UNIX套接字:是否可以欺骗getsockopt()SO_PEERCRED?
是否有(兼容的)欺骗(作为root)unix套接字(文件系统套接字)对等凭证的方式,可以通过
getsockopt() 获得,选项SO_PEERCRED?
背景: UPDATE 澄清问题: 基本上,该解决方案应该在任何Linux(或一般的unix)服务器上运行时没有任何特殊要求.服务器进程可能已在运行. 解决方法
你说的是正确的.根进程具有欺骗这样的特权的权限,问题只是SO_PEERCRED没有为进程提供任何机制或API来指定应该向对等方呈现什么标识.
你可以做两件事: >进行连接呼叫时,暂时删除root(setreuid(期望,-1)). unix-domain连接在进程调用connect时标记了对等体的凭证(并以另一种方式监听). SO_PEERCRED在当前时刻不会告诉您对等方的凭据.然后你可以恢复root.>更好,使用另一个API.消息传递API允许进程选择要向对等方呈现的标识.使用包含要发送的凭据的struct cmsg调用sendmsg.内核将忽略非特权用户指定的凭据,并始终确保对方看到实际身份,但特权进程可以伪装成其他任何人.这可以更好地满足您的需求,因为丢弃和重新获得root是一项危险的活动,在这种情况下是不必要的.谷歌为“SCM_CREDENTIALS”(或系统上的“man -K”)获取代码示例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |