• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            T9的空間

            You will never walk alone!

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              69 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks

            這里要稍微寫一些linux下復雜的權限管理,應該只是一小部分知識,還有一些關于cap的東西以后再看。

            與process關聯的ID
            誰execute這個process的人稱為real user id,應該就是登陸時使用的user
            real group id也一樣.
            一般在一個登陸Session中,這兩個值都不會改變,但是超級用戶進程可以改變
            像Android中每個APK有獨自的User id,然后類似rild之類的native deamon process就會嘗試改變自己的user id為類似radio之類的東西。

            在運行中檢查權限所使用的id稱為有效用戶id,effective user id
            然后還有有效組ID
            附加組ID

            一般有效用戶ID == 真實用戶ID, 有效組ID == 真實組ID
            但是如果在可執行文件的st_mode中有設置 set-user-ID/set-group-ID
            那在執行這個文件的時候 有效用戶ID和有效組ID會變成文件的owner

            一般有設置set-user-ID/set-group-ID的程序都會獲得額外的權限

            關于文件權限,有一些容易引起誤解的,也還有一些我自己也沒有理解清楚的

            文件權限比較好理解,O_TRUNC需要文件具有寫權限。

            文件夾的寫權限,應該就是類似能不能在其中create/update/delete文件和文件夾
            文件夾的讀權限,應該就是讀文件夾里面的文件/文件夾列表,通常我們 ls 當前文件夾就必須具有讀權限
            文件夾的執行權限,這個東西聽說又叫搜索位,通常我們cd XXX,就必須在當前文件夾下搜索XXX是否存在,然后就是當我們訪問類似這種很長路徑的文件/aaa/bbb/ccc/dd.txt
            對aaa,bbb,ccc必須具有執行權限,就是搜索

            一般如果具有讀權限就應該就可以搜索,如果這之前有區別,就是應該是搜索的范圍大于能讀到的內容。
            也就是之后需要知道一個Folder本身里面有寫什么內容,我目前知道的是一定有當前的文件列表--> TODO: 看情景分析 or 去看下 ls 的實現,ls里面有比較多參數有些是需要x的有些是需要r的,例如 ls -l如果沒有執行權限就只能拿到 name ,能知道是folder還是file,除此之外其他的東西都拿不到,文件本身的權限,user,group

            -->linux目錄中記錄的應該是只有兩個東西 inode & name.這與文件系統的實現有關。

            另外增刪文件都需要WX權限

            另外內核對文件操作權限的判斷順序...如果是owner就會看owner權限,group權限就不會看了,如果在group中則others也就不看了,這個邏輯上正常,而且可以想一下kernel的實現,一定是if-else的判斷出結果后直接返回。


            這里就要提如果新建文件/文件夾的時候文件夾的owner user id和group id是誰
            user id會是process 有效用戶ID
            group id可以有兩種選擇父folder的group id;or process有效組ID
            linux中根據文件系統的不同有的可以在mount fs的時候選擇

            文件長度: st_size
            lseek到文件末尾之后的空間,會照成文件空洞
            文件長度會+空洞的大小,但是這些空洞未必會占用磁盤空間。
            du 命令可以看磁盤空間大小

            符號鏈接和所謂的硬鏈接完全是兩回事,建議細讀4.14,不要去上網search類似我這種自己記錄給自己看的blog...:(

            這章內容比較多而且雜,主要是stat中的每個參數的意義,需要思考想清楚的東西也比較多,有比較多關于文件操作的System Call

            作業開始:
            之后只寫有點意義的題目,無意義的也沒什么可以寫的pass
            4.1 stat和lstat的區別,stat基本不會關心是否是S_IFLNK(符號鏈接),應該是看到S_IFLNK會往下去找真正的File,然后拿到屬性值
            而lstat旁道S_IFLNK則會直接返回。第一次看到這樣的函數設計怪怪的,我的初始感覺是反的。我覺得stat是一個common的設計,不會針對不同的File類型來做一些區別。Orz...最后不是。

            4.2 umask 777意味著rwxrwxrwx全部變沒掉,但是這也沒關系,不知道出題人的意思

            4.5 目錄和符號鏈接的長度不可能為0,目錄創建出來就會包含. 和 ..而且 . 的inode指向自己本身會占磁盤空間,符號鏈接肯定也是不能為0的,其中有存指向的鏈接path

            4.6 這個有點意思,后面貼代碼

            4.7 這個看了下答案,沒看懂>為什么kernel默認的創建文件賦予的權限“可能會,也可能不會”受unmask的值的影響?

            4.8 du df的區別...

            4.9 ~ 后面的題大概看了下,不想寫了,好多細節...

             


             

            posted on 2013-05-27 16:42 Torres 閱讀(261) 評論(0)  編輯 收藏 引用 所屬分類: APUE
            国产精品美女久久福利网站| 久久这里都是精品| 国产精品久久国产精品99盘| 热re99久久6国产精品免费| 久久九九亚洲精品| 亚洲人成无码网站久久99热国产| 亚洲午夜久久久影院| 91精品久久久久久无码| 免费无码国产欧美久久18| 久久综合久久自在自线精品自 | 久久福利青草精品资源站免费| 天天久久狠狠色综合| 欧美日韩中文字幕久久久不卡 | 国产精品一久久香蕉产线看| 久久久精品久久久久久| 久久精品国产99久久无毒不卡| 亚洲国产成人久久精品99| 久久天天躁狠狠躁夜夜96流白浆 | 色诱久久久久综合网ywww| 色偷偷88欧美精品久久久| 久久综合丁香激情久久| 无码精品久久久久久人妻中字| 久久亚洲AV成人无码| 久久99精品久久久久久9蜜桃| 国产91色综合久久免费分享| 久久久午夜精品| 亚洲第一永久AV网站久久精品男人的天堂AV| 婷婷综合久久中文字幕蜜桃三电影| 久久无码AV中文出轨人妻 | 久久婷婷五月综合97色一本一本| 久久综合色老色| 久久伊人五月丁香狠狠色| 亚洲精品国产综合久久一线| 人人狠狠综合久久亚洲| 青青草国产97免久久费观看| 久久国产三级无码一区二区| 久久精品一区二区三区中文字幕| 999久久久国产精品| 久久久久亚洲AV成人网| 日本亚洲色大成网站WWW久久| 色偷偷91久久综合噜噜噜噜|