struct stat结构体中st_mode参数的含义
生活随笔
收集整理的這篇文章主要介紹了
struct stat结构体中st_mode参数的含义
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
stat 結(jié)構(gòu)體重 st_mode 參數(shù)的含義
關(guān)于st_mode參數(shù)的定義:
由于在文件系統(tǒng)編程中經(jīng)常會(huì)用到這個(gè)結(jié)構(gòu),網(wǎng)上很多含糊其辭,下面是我在網(wǎng)上搜索的,整理如下,如果可以的話,應(yīng)該去源碼下搜索一下 st_mode 應(yīng)該是一個(gè)32為的整形變量,現(xiàn)在的linux系統(tǒng)只用了其中的前16位(0-15) ? 第15位:其實(shí)這一位只用到了一次:
?????? ?0170000 (和12-14位合起來,是獲得文件類型的屏蔽信息) 12-14位:三位確定了文件的類型(linux文件的類型總共有7中,三位就夠了) 11-10位: 這2位分別是是文件用戶id和組id位 9位:這位是sticky位:關(guān)于sticky位的理解,我摘抄如下一篇文章的理解:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246111935b2e27f71415dd3c77e6246b21a1cbbaa6d36601e20b599c39549dea69122328e2d347518844b05d36efc8a046fd565cd1abfa058a1adf14284a9a6c4de240c9705526d8081ca1c5b459324&p=90769a439fdd1df807bd9b790855&user=baidu&fm=sc&query=st%5Fmode+sticky&qid=9168862f068b0ab4&p1=2 這個(gè)Sticky Bit當(dāng)前只針對(duì)目錄有效,對(duì)文件沒有效果。SBit對(duì)目錄的作用是:“在具有SBit的目錄下,用戶若在該目錄下具有w及x權(quán)限,則當(dāng)用戶在該目錄下建立文件或目錄時(shí),只有文件擁有者與root才有權(quán)力刪除”。換句話說:當(dāng)甲用戶在A目錄下?lián)碛術(shù)roup或other的項(xiàng)目,且擁有w權(quán)限,這表示甲用戶對(duì)該目錄內(nèi)任何人建立的目錄或文件均可進(jìn)行“刪除/重命名/移動(dòng)”等操作。不過,如果將A目錄加上了Sticky bit的權(quán)限,則甲只能夠針對(duì)自己建立的文件或目錄進(jìn)行刪除/重命名/移動(dòng)等操作。 ? 舉例來說,/tmp本身的權(quán)限是“drwxrwxrwt”,在這樣的權(quán)限內(nèi)容下,任何人都可以在 /tmp內(nèi)新增、修改文件,但僅有該文件/目錄的建立者與root能夠刪除自己的目錄或文件。這個(gè)特性也很重要。可以這樣做個(gè)簡(jiǎn)單測(cè)試: ?以root登入系統(tǒng),并且進(jìn)入 /tmp中。 ?touch test,并且更改test權(quán)限成為777。 ?以一般用戶登入,并進(jìn)入 /tmp。 ?嘗試刪除test文件。 發(fā)現(xiàn)刪除不了,說明這一問題。。。。 8-0位:這就是文件的訪問權(quán)限的集合了,我就比多說了,這個(gè)好理解(這些事linux的基本知識(shí)了) 為了操作其中的各個(gè)位,系統(tǒng)提夠了一些函數(shù)和宏,并且也有一些用戶可以用一些與操作來訪問,就不多說了。。。
由于在文件系統(tǒng)編程中經(jīng)常會(huì)用到這個(gè)結(jié)構(gòu),網(wǎng)上很多含糊其辭,下面是我在網(wǎng)上搜索的,整理如下,如果可以的話,應(yīng)該去源碼下搜索一下 st_mode 應(yīng)該是一個(gè)32為的整形變量,現(xiàn)在的linux系統(tǒng)只用了其中的前16位(0-15) ? 第15位:其實(shí)這一位只用到了一次:
?????? ?0170000 (和12-14位合起來,是獲得文件類型的屏蔽信息) 12-14位:三位確定了文件的類型(linux文件的類型總共有7中,三位就夠了) 11-10位: 這2位分別是是文件用戶id和組id位 9位:這位是sticky位:關(guān)于sticky位的理解,我摘抄如下一篇文章的理解:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246111935b2e27f71415dd3c77e6246b21a1cbbaa6d36601e20b599c39549dea69122328e2d347518844b05d36efc8a046fd565cd1abfa058a1adf14284a9a6c4de240c9705526d8081ca1c5b459324&p=90769a439fdd1df807bd9b790855&user=baidu&fm=sc&query=st%5Fmode+sticky&qid=9168862f068b0ab4&p1=2 這個(gè)Sticky Bit當(dāng)前只針對(duì)目錄有效,對(duì)文件沒有效果。SBit對(duì)目錄的作用是:“在具有SBit的目錄下,用戶若在該目錄下具有w及x權(quán)限,則當(dāng)用戶在該目錄下建立文件或目錄時(shí),只有文件擁有者與root才有權(quán)力刪除”。換句話說:當(dāng)甲用戶在A目錄下?lián)碛術(shù)roup或other的項(xiàng)目,且擁有w權(quán)限,這表示甲用戶對(duì)該目錄內(nèi)任何人建立的目錄或文件均可進(jìn)行“刪除/重命名/移動(dòng)”等操作。不過,如果將A目錄加上了Sticky bit的權(quán)限,則甲只能夠針對(duì)自己建立的文件或目錄進(jìn)行刪除/重命名/移動(dòng)等操作。 ? 舉例來說,/tmp本身的權(quán)限是“drwxrwxrwt”,在這樣的權(quán)限內(nèi)容下,任何人都可以在 /tmp內(nèi)新增、修改文件,但僅有該文件/目錄的建立者與root能夠刪除自己的目錄或文件。這個(gè)特性也很重要。可以這樣做個(gè)簡(jiǎn)單測(cè)試: ?以root登入系統(tǒng),并且進(jìn)入 /tmp中。 ?touch test,并且更改test權(quán)限成為777。 ?以一般用戶登入,并進(jìn)入 /tmp。 ?嘗試刪除test文件。 發(fā)現(xiàn)刪除不了,說明這一問題。。。。 8-0位:這就是文件的訪問權(quán)限的集合了,我就比多說了,這個(gè)好理解(這些事linux的基本知識(shí)了) 為了操作其中的各個(gè)位,系統(tǒng)提夠了一些函數(shù)和宏,并且也有一些用戶可以用一些與操作來訪問,就不多說了。。。
總結(jié)
以上是生活随笔為你收集整理的struct stat结构体中st_mode参数的含义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv自定义从一幅图片截取特定区域
- 下一篇: iOS客户端React-Native增量