国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(5)unix套接字sendmsg消息返回權(quán)限錯(cuò)誤(EPERM)

這篇具有很好參考價(jià)值的文章主要介紹了(5)unix套接字sendmsg消息返回權(quán)限錯(cuò)誤(EPERM)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Unix套接字sendmsg消息返回權(quán)限錯(cuò)誤

Author:onceday date:2023年8月16日

解決linux設(shè)備上unix套接字sendmsg的一種錯(cuò)誤情景。

1. 問題

unix套接字有一種udp類傳輸,即數(shù)據(jù)報(bào)服務(wù)。這個(gè)套接字可以設(shè)置對(duì)端,也可以不設(shè)置對(duì)端。如下:

  • socket(),創(chuàng)建套接字,這是所有套接字操作的基礎(chǔ)。
  • bind(),對(duì)于unix套接字,這會(huì)綁定一個(gè)字符串地址。
  • connect(),對(duì)于unix數(shù)據(jù)報(bào)套接字,也可以綁定對(duì)端。

一般對(duì)于數(shù)據(jù)報(bào)類的套接字,只需要前兩步就行了, 因?yàn)閿?shù)據(jù)報(bào)是無狀態(tài)連接,各報(bào)文之間獨(dú)立,沒有額外的狀態(tài)維護(hù)過程。

如果此時(shí)我們用sendmsg發(fā)送一個(gè)消息,但返回權(quán)限不允許錯(cuò)誤(1),而且收到的消息是正確的,即對(duì)端可以給本套接字發(fā)送消息,但我們沒辦法回復(fù)消息,那么有很大可能是對(duì)端套接字進(jìn)行了connect操作。

下面是af_unix.c源碼中unix_dgram_sendmsg函數(shù)中的部分代碼,即sendmsg函數(shù)底層實(shí)際調(diào)用函數(shù)

err = -EPERM;
if (!unix_may_send(sk, other))
    goto out_unlock;

這里有一個(gè)判斷,如果不滿足,直接退出,很明顯,返回權(quán)限錯(cuò)誤和這個(gè)判斷有關(guān)系。

static inline int unix_our_peer(struct sock *sk, struct sock *osk)
{
	return unix_peer(osk) == sk;
}

static inline int unix_may_send(struct sock *sk, struct sock *osk)
{
	return unix_peer(osk) == NULL || unix_our_peer(sk, osk);
}

如上,從這個(gè)函數(shù)可以看出,其判斷發(fā)送的目的套接字是否具有對(duì)端,以及目的套接字的對(duì)端是否是本端套接字。只有目的套接字無對(duì)端地址(無connect操作)或者connect對(duì)象為本端才能驗(yàn)證通過,否則返回權(quán)限錯(cuò)誤。

2. 結(jié)論

以上分析表明,如果unix數(shù)據(jù)報(bào)套接字要實(shí)現(xiàn)多對(duì)多自由發(fā)送,就必須放棄connect操作,否則發(fā)送時(shí)會(huì)遇到EPERM錯(cuò)誤。文章來源地址http://www.zghlxwxcb.cn/news/detail-664681.html

到了這里,關(guān)于(5)unix套接字sendmsg消息返回權(quán)限錯(cuò)誤(EPERM)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包