st_mode屏蔽意義S_IRUSR用戶-讀S_IWUSR用戶-寫S_IXUSR用戶-執(zhí)行S_IRGRP組-讀S_IWGRP組-寫S_IXGRP組-執(zhí)行S_IROTH其他-讀S_IWOTH其他-寫S_IXOTH其他-" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

文件和目錄之文件訪問權(quán)限

系統(tǒng) 2212 0

st_mode值也包含了針對(duì)文件的訪問權(quán)限位。所有文件類型(目錄文件、字符特殊文件等)都有訪問權(quán)限(access permission)。

每個(gè) 文件 有9個(gè)訪問權(quán)限位,可將它們分成三類,見表4-5:

表4-5 9個(gè)訪問權(quán)限位,取自<sys/stat.h>

st_mode屏蔽 意義
S_IRUSR 用戶-讀
S_IWUSR 用戶-寫
S_IXUSR 用戶-執(zhí)行
S_IRGRP 組-讀
S_IWGRP 組-寫
S_IXGRP 組-執(zhí)行
S_IROTH 其他-讀
S_IWOTH 其他-寫
S_IXOTH 其他-執(zhí)行

在表4-5開頭三行中,術(shù)語用戶指的是文件所有者(owner)。chmod(1)命令用于修改這9個(gè)權(quán)限位。該命令允許我們用u表示用戶(所有者),用g表示組,用o表示其他。

表4-5中的三類訪問權(quán)限(即讀、寫及執(zhí)行)以各種方式由不同的函數(shù)使用。我們將這些不同的使用方式匯總?cè)缦拢?

  • 第一個(gè)規(guī)則是,我們用名字打開任一類型的文件時(shí),對(duì)該名字中包含的每一個(gè)目錄,包括它可能隱含的當(dāng)前工作目錄都應(yīng)具有執(zhí)行權(quán)限。這就是為什么對(duì)于目錄執(zhí)行權(quán)限位常被稱為搜索位的原因。

例如,為了打開文件/usr/include/stdio.h,需要對(duì)目錄/、/usr和/usr/include具有執(zhí)行權(quán)限。然后,需要具有對(duì)該文件本身的適當(dāng)權(quán)限,這取決于以何種模式打開它(只讀、讀-寫等)。

如果當(dāng)前目錄是/usr/include,那么為了打開文件stdio.h,需要有對(duì)該工作目錄的執(zhí)行權(quán)限。這是隱含當(dāng)前工作目錄的一個(gè)實(shí)例。打開stdio.h文件與打開./stdio.h作用相同。

注意,對(duì)于目錄的讀權(quán)限和執(zhí)行權(quán)限的意義是不相同的。讀權(quán)限允許我們讀目錄,獲得在該目錄中所有文件名的列表。當(dāng)一個(gè)目錄是我們要訪問文件的路徑名的一個(gè)組成部分時(shí),對(duì)該目錄的執(zhí)行權(quán)限使得我們可通過該目錄(也就是搜索該目錄,尋找一個(gè)特定的文件名)。

引用隱含目錄的另一個(gè)例子是,如果PATH環(huán)境變量指定了一個(gè)我們不具有執(zhí)行權(quán)限的目錄,那么shell絕不會(huì)在該目錄下找到可執(zhí)行文件。

  • 對(duì)于一個(gè)文件的讀權(quán)限決定了我們是否能夠打開文件進(jìn)行讀操作。這與open函數(shù)的O_RDONLY和O_RDWR標(biāo)志相關(guān)。
  • 對(duì)于一個(gè)文件的寫權(quán)限決定了我們是否能夠打開該文件進(jìn)行寫操作。這與open函數(shù)的O_WRONLY和O_RDWR標(biāo)志相關(guān)。
  • 為了在open函數(shù)中對(duì)一個(gè)文件指定O_TRUNC標(biāo)志,必須對(duì)該文件具有寫權(quán)限。
  • 為了在一個(gè)目錄中創(chuàng)建一個(gè)新文件,必須對(duì)該目錄具有寫權(quán)限和執(zhí)行權(quán)限。
  • 為了刪除一個(gè)現(xiàn)有文件,必須對(duì)包含該文件的目錄具有寫權(quán)限和執(zhí)行權(quán)限。對(duì)該文件本身則不需要有讀、寫權(quán)限。
  • 如果用6個(gè)exec函數(shù)中的任何一個(gè)執(zhí)行某個(gè)文件,都必須對(duì)該文件具有執(zhí)行權(quán)限。該文件還必須是一個(gè)普通文件。

進(jìn)程 每次打開、創(chuàng)建或刪除一個(gè) 文件 時(shí),內(nèi)核就進(jìn)行文件訪問權(quán)限測試 ,而這種測試可能涉及 文件的所有者(st_uid和st_gid)、進(jìn)程的有效ID(有效用戶ID和有效組ID)以及進(jìn)程的附加組ID (若支持的話)。 兩個(gè)所有者ID是文件的性質(zhì),而兩個(gè)有效ID和附加組ID則是進(jìn)程的性質(zhì)。 內(nèi)核進(jìn)行的測試是:

(1)若進(jìn)程的有效用戶ID是0(超級(jí)用戶),則允許訪問。這給予了超級(jí)用戶對(duì)整個(gè)文件系統(tǒng)進(jìn)行處理的最充分的自由。

(2) 若進(jìn)程的有效用戶ID等于文件的所有者ID(也就是該進(jìn)程擁有此文件), 那么:若所有者適當(dāng)?shù)脑L問權(quán)限位被設(shè)置,則允許訪問,否則拒絕訪問。適當(dāng)?shù)脑L問權(quán)限位指的是,若進(jìn)程為讀而打開該文件,則用戶讀位應(yīng)為1;若進(jìn)程為寫而打開該文件,則用戶寫位應(yīng)為1;若進(jìn)程將執(zhí)行該文件,則用戶執(zhí)行位應(yīng)為1.

(3)若進(jìn)程的有效組ID或進(jìn)程的附加組ID之一等于文件的組ID,那么:若組適當(dāng)?shù)脑L問權(quán)限位被設(shè)置,則允許訪問,否則拒絕訪問。

(4)若其他用戶適當(dāng)?shù)脑L問權(quán)限位被設(shè)置,則允許訪問,否則拒絕訪問。

按順序執(zhí)行這四步。注意,如若進(jìn)程擁有此文件(第2步),則按用戶訪問權(quán)限批準(zhǔn)或拒絕該進(jìn)程對(duì)文件的訪問——不查看組訪問權(quán)限。類似地,若進(jìn)程并不擁有該文件,但進(jìn)程屬于某個(gè)適當(dāng)?shù)慕M,則按組訪問權(quán)限批準(zhǔn)或拒絕該進(jìn)程對(duì)文件的訪問——不查看其他用戶的訪問權(quán)限。

?

?

本篇博文內(nèi)容摘自《UNIX環(huán)境高級(jí)編程》(第二版),僅作個(gè)人學(xué)習(xí)記錄所用。關(guān)于本書可參考: http://www.apuebook.com/

?

?

文件和目錄之文件訪問權(quán)限


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 青铜峡市| 洱源县| 阳东县| 安顺市| 东莞市| 贺兰县| 滦平县| 扬中市| 青神县| 宣城市| 鄂州市| 安乡县| 泌阳县| 博罗县| 甘孜| 定陶县| 深泽县| 平果县| 黄陵县| 宜兰县| 胶南市| 华蓥市| 桂平市| 阳新县| 宜城市| 武平县| 赤水市| 正宁县| 顺平县| 专栏| 买车| 邢台县| 徐水县| 达孜县| 内黄县| 三门县| 红桥区| 类乌齐县| 泸定县| 辉南县| 青铜峡市|