k8s文件掛載權(quán)限分析

本文章主要針對(duì)以下兩種場(chǎng)景進(jìn)行分析

  • 本地掛載
  • NFS掛載

本地掛載

結(jié)論:掛載的文件的用戶權(quán)限,在容器內(nèi)部看到的uid、gid及操作權(quán)限,與宿主機(jī)上看到的一致
宿主機(jī)新建掛載目錄:

宿主機(jī)查看權(quán)限

拉起docker鏡像,并把宿主機(jī)目錄掛載到容器中
docker run -d --rm --name busybox -v /root/test:/tmp/ busybox sleep infinity

查看容器內(nèi)文件目錄權(quán)限

一定要確保容器執(zhí)行者的權(quán)限和掛載數(shù)據(jù)卷對(duì)應(yīng),如果掛載了root的文件到容器內(nèi)部,而容器內(nèi)部執(zhí)行uid不是0,則報(bào)錯(cuò)沒(méi)有權(quán)限


NFS掛載

服務(wù)端:


NFS服務(wù)端共享文件權(quán)限
owner的uid及gid

容器內(nèi):

NFS掛載到tmp

結(jié)論:掛載的文件的用戶權(quán)限,在容器內(nèi)部看到的uid、gid及操作權(quán)限,與NFS服務(wù)端上看到的一致。

但是容器中的用戶身份對(duì)于NFS服務(wù)端來(lái)說(shuō),需要根據(jù)NFS的配置文件進(jìn)行判斷:

  • root_squash:默認(rèn)選項(xiàng),當(dāng)客戶端使用的是root用戶時(shí),則映射到NFS服務(wù)器的用戶為NFS的匿名用戶(nfsnobody)。
  • no_root_squash:當(dāng)客戶端使用的是root用戶時(shí),則映射到FNS服務(wù)器的用戶依然為root用戶。
  • all_squash:默認(rèn)選項(xiàng),將所有訪問(wèn)NFS服務(wù)器的客戶端的用戶都映射為匿名用戶,不管客戶端使用的是什么用戶。
  • no_all_squash:當(dāng)客戶端使用的用戶的uid和gid在服務(wù)器端中也存在一致uid和gid的用戶時(shí),則映射到NFS服務(wù)器的用戶為對(duì)應(yīng)用戶,其他用戶則映射為匿名用戶
  • anonuid:設(shè)置映射到本地的匿名用戶的UID
  • anongid:設(shè)置映射到本地的匿名用戶的GID

舉例:

假設(shè)服務(wù)器端共享文件夾的訪問(wèn)權(quán)限

服務(wù)端NFS配置:

  1. no_root_squash,no_all_squash

存在以下幾種情況:

  • 客戶端當(dāng)前用戶為root(uid=0,gid=0),正常讀寫(xiě);
  • 客戶端當(dāng)前用戶為test(uid=1001,gid=1001),映射成服務(wù)端的test,正常讀寫(xiě);
  • 客戶端當(dāng)前用戶為user1(uid=1001,gid=1001),映射成服務(wù)端的test,正常讀寫(xiě);
  • 客戶端當(dāng)前用戶為rancher(uid=1000,gid=1000),映射成服務(wù)端的rancher,只能讀不能寫(xiě);
  • 客戶端當(dāng)前用戶為user2(uid=2000,gid=2000),映射成服務(wù)端的nfsnobody,只能讀不能寫(xiě)
  1. no_root_squash,no_all_squash,anonuid=1001,anongid=1001
  • 客戶端當(dāng)前用戶為root(uid=0,gid=0),正常讀寫(xiě);
  • 客戶端當(dāng)前用戶為test(uid=1001,gid=1001),映射成服務(wù)端的test,正常讀寫(xiě);
  • 客戶端當(dāng)前用戶為user1(uid=1001,gid=1001),映射成服務(wù)端的test,正常讀寫(xiě);
  • 客戶端當(dāng)前用戶為rancher(uid=1000,gid=1000),映射成服務(wù)端的rancher,只能讀不能寫(xiě);
  • 客戶端當(dāng)前用戶為user2(uid=2000,gid=2000),映射成服務(wù)端的nfsnobody(uid=1001,gid=1001),正常讀寫(xiě)
  1. root_squash,all_squash

只有1種情況:不管客戶端當(dāng)前用戶是什么,均映射成服務(wù)端的nfsnobody,只能讀不能寫(xiě)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容