NFS Client in Linux Kernel - cred

struct auth_cred

struct auth_cred記錄著uid,gid,是最基本的cred信息。
通過current_cred()得到當(dāng)前進(jìn)程的struct auth_cred

struct rpc_auth

用來描述RPC傳輸時(shí)候使用哪種方式鑒權(quán), Linux內(nèi)核提供了4個(gè)unix_auth经瓷,null_auth靡努,generic_auth假颇,gss_auth,其中unix_auth是默認(rèn)使用的次慢。

struct rpc_auth {
    unsigned int        au_cslack;  /* call cred size estimate */
                /* guess at number of u32's auth adds before
                 * reply data; normally the verifier size: */
    unsigned int        au_rslack;
                /* for gss, used to calculate au_rslack: */
    unsigned int        au_verfsize;
    unsigned int        au_flags;   /* various flags */
    const struct rpc_authops *au_ops;       /* operations */
    rpc_authflavor_t    au_flavor;  /* pseudoflavor (note may
                         * differ from the flavor in
                         * au_ops->au_flavor in gss
                         * case) */
    atomic_t        au_count;   /* Reference counter */
    struct rpc_cred_cache * au_credcache;
    /* per-flavor data */
};

rpc auth flavors

鑒權(quán)方式岩馍,mount時(shí)候參數(shù)sec=xx,默認(rèn)是sys倒淫,對(duì)應(yīng)RPC_AUTH_UNIX伙菊。還可以為krb5,krb5i敌土,krb5p等镜硕。

enum rpc_auth_flavors {
    RPC_AUTH_NULL  = 0,
    RPC_AUTH_UNIX  = 1,
    RPC_AUTH_SHORT = 2,
    RPC_AUTH_DES   = 3,
    RPC_AUTH_KRB   = 4,
    RPC_AUTH_GSS   = 6,
    RPC_AUTH_MAXFLAVOR = 8,
    /* pseudoflavors: */
    RPC_AUTH_GSS_KRB5  = 390003,
    RPC_AUTH_GSS_KRB5I = 390004,
    RPC_AUTH_GSS_KRB5P = 390005,
    RPC_AUTH_GSS_LKEY  = 390006,
    RPC_AUTH_GSS_LKEYI = 390007,
    RPC_AUTH_GSS_LKEYP = 390008,
    RPC_AUTH_GSS_SPKM  = 390009,
    RPC_AUTH_GSS_SPKMI = 390010,
    RPC_AUTH_GSS_SPKMP = 390011,
};

struct rpc_cred

struct rpc_cred {
    struct hlist_node   cr_hash;    /* hash chain */
    struct list_head    cr_lru;     /* lru garbage collection */
    struct rcu_head     cr_rcu;
    struct rpc_auth *   cr_auth;
    const struct rpc_credops *cr_ops;
    unsigned long       cr_expire;  /* when to gc */
    unsigned long       cr_flags;   /* various flags */
    atomic_t        cr_count;   /* ref count */
    kuid_t          cr_uid;
    /* per-flavor data */
};

設(shè)置rpc_cred

Linux Kernel每次通過RPC發(fā)送NFS數(shù)據(jù)的時(shí)候,都會(huì)走一個(gè)狀態(tài)機(jī)返干。當(dāng)走到call_refresh狀態(tài)時(shí)候兴枯,

每次發(fā)RPC命令時(shí)候,都會(huì)準(zhǔn)備類似的message,其中包括了設(shè)置cred

    struct rpc_message msg = {
        .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_OPEN],
        .rpc_argp = o_arg,
        .rpc_resp = o_res,
        .rpc_cred = data->owner->so_cred,
    };

不同的NFS請(qǐng)求犬金,cred來自不同的地方念恍。
exchange_id命令是來自

int nfs4_discover_server_trunking(struct nfs_client *clp,
                  struct nfs_client **result)
{
...
//來自于unix_auth
    cred = nfs4_get_clid_cred(clp);
...
}

open命令

struct nfs_open_context *alloc_nfs_open_context(struct dentry *dentry, fmode_t f_mode)
{
...
//來自于gss_auth
    struct rpc_cred *cred = rpc_lookup_cred();
...
}
``
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市晚顷,隨后出現(xiàn)的幾起案子峰伙,更是在濱河造成了極大的恐慌,老刑警劉巖该默,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞳氓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡栓袖,警方通過查閱死者的電腦和手機(jī)匣摘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裹刮,“玉大人音榜,你說我怎么就攤上這事∨跗” “怎么了赠叼?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)违霞。 經(jīng)常有香客問我嘴办,道長(zhǎng),這世上最難降的妖魔是什么买鸽? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任涧郊,我火速辦了婚禮,結(jié)果婚禮上眼五,老公的妹妹穿的比我還像新娘妆艘。我一直安慰自己彤灶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布双仍。 她就那樣靜靜地躺著枢希,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朱沃。 梳的紋絲不亂的頭發(fā)上苞轿,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音逗物,去河邊找鬼搬卒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛翎卓,可吹牛的內(nèi)容都是我干的契邀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼失暴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼坯门!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逗扒,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤古戴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后矩肩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體现恼,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年黍檩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叉袍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刽酱,死狀恐怖喳逛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棵里,我是刑警寧澤润文,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站衍慎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏皮钠。R本人自食惡果不足惜稳捆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麦轰。 院中可真熱鬧乔夯,春花似錦砖织、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至甲脏,卻和暖如春眶熬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背块请。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工娜氏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人墩新。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓贸弥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親海渊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绵疲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Linux Kernel Pwn 入門 ? kernel 也是一個(gè)程序,用來管理軟件發(fā)出的數(shù)據(jù) I/O 要求臣疑,...
    Nevv閱讀 1,792評(píng)論 0 0
  • 幾個(gè)基本概念 struct nfs_server NFS client parameters stored in ...
    帆子_8c3a閱讀 1,435評(píng)論 0 0
  • sqlmap用戶手冊(cè) 說明:本文為轉(zhuǎn)載盔憨,對(duì)原文中一些明顯的拼寫錯(cuò)誤進(jìn)行修正,并標(biāo)注對(duì)自己有用的信息朝捆。 ======...
    wind_飄閱讀 2,035評(píng)論 0 5
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當(dāng)給sq...
    xuningbo閱讀 10,279評(píng)論 2 22
  • 01 朋友十年前從海外留學(xué)回來芙盘,事業(yè)發(fā)展一直是不溫不火驯用。 每次遇到他,總是一臉愁容儒老。昨晚與他一起吃了頓飯蝴乔,席間他感...
    夏至星輝閱讀 787評(píng)論 2 12