Linux文件系統inode、block解釋權限(三)


  利用文件系統的inode和block來分析文件(目錄)的權限問題。

  1. 為什么讀取一個文件還要看該文件路徑所有目錄的權限?
  2. 為什么目錄的w權限具有刪除文件的能力,而文件w權限不行。

  inode:記錄文件的屬性,一個文件占用一個inode,同時記錄了文件數據所在的block號碼。Ext3文件系統inode大小為128B,Ext4文件系統inode大小為256B。

  block:記錄了文件的內容,若文件太大會占用多個bolck塊。一般大小為1k、2k、4k。

inode和block在文件系統里,均用號碼標示。

如下:

hang@hang:/home$ ll -i
總用量 20
#inode號 #文件大小,這里是一個4k的block塊的大小
24641537 drwxr-xr-x 5 root root 4096 11月 27 19:19 ./ 2 drwxr-xr-x 24 root root 4096 11月 26 19:55 ../ 24641538 drwxr-xr-x 23 hang hang 4096 11月 28 13:47 hang/ 24642065 drwxr-xr-x 2 zncu zncu 4096 11月 25 20:47 zncu/ 24647652 drwxrws--- 2 root znha 4096 11月 27 20:54 znha/

其他更多的文件系統相關不在介紹,總之inode記錄了文件/目錄的權限和block號碼,block記錄了文件的實際內容、目錄下的文件名以及這些文件名的inode號

例子:想要讀取/etc/passwd,經過了哪些流程。

root@hang:/# ll -di /  /etc  /etc/passwd
       2 drwxr-xr-x  24 root root  4096 11月 26 19:55 //
17301505 drwxr-xr-x 131 root root 12288 11月 27 13:18 /etc/
17304397 -rw-r--r--   1 root root  2350 11月 26 20:08 /etc/passwd

1./的inode: 通過掛載點信息,找到/目錄的inode號(2),且該inode具有rwx權限,我們可以讀取inode號(2)所記錄的block塊內容。

2./的block:  在/目錄的block內容里找etc/目錄的inode號(17301505)

3./etc的inode: /etc的inode(17301505)具有rwx權限,我們可以讀取/etc的block塊的具體內容。

4./etc的block: 在block塊里找到passwd文件的inode(17304397)。

5.passwd的inode: 根據passwd文件的inode(17304397)得知具有讀取權限。

6.passwd的block: 根據inode(173044397)所記錄的block塊讀取passwd的具體內容。

可以看到,從根目錄一步一步到passwd需要驗證每一個目錄的權限,如果其中一個目錄不具有相應權限,那么這個操作就會失敗,如果無法進入/etc目錄,何談讀取passwd文件。

也可以得知為什么文件的刪除等操作是被目錄的w權限控制的,因為w權限可以具有修改block塊的能力,目錄的block記錄了文件名和文件inode,刪除文件就是block塊存儲的文件名和inode,而文件的block記錄的是文件具體內容,所以w權限是對文件內容的修改,而不具備刪除文件等權限。

 http://www.cnblogs.com/yuhanghzsd/p/6109513.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM