文件的類型及權限

寫在開始之前:文章所有內容均爲自己理解,如有錯誤請告知!

文件的類型:

在linux中一切皆文件,任何的設備,目錄,內存中的數據,執行的進程,都以文件的方式表現,

在linux中文件類型可以使用ls 加l選項查看,每種文件類型使用一個字符表示,如下:

       - :
              普通文件
       d:
              目錄文件
       l :
              軟連接
       c:
              字符設備
       b:
               塊設備
       s:
              套接字文件
       p:
              管道文件
在linux中文件的類型不需要依靠後綴確定,在linux中確定文件類型使用的是文件開頭的魔數,bz等程序要求特定的後綴名稱只是程序的需要,與操作系統無關。

在linux中可以使用hexdump查看文件的魔術

             如: hexdump -C -n 10 /bin/bash

                     #hexdump -C -n 10 /bin/bash

                    00000000  7f 45 4c 46 02 01 01 00  00 00                    |.ELF......|

                    linux 程序文件的魔術 ELF

雖然linux不依靠文件後綴區分文件類型,但是不同的文件後綴可以使文件擁有不同的着色,該配置在/etc/DIR_COLORS中定義。

文件的權限:

文件的權限在進程進行文件操作時,對進程發起者身份進行權限審覈。現實了系統資源隔離及對操作系統安全防護。

linux,文件的權限需要文件系統來支撐,也就是說文件的權限信息並非存儲在數據塊中,而是存放在了inode中,或者說不同的文件系統,其組織數據的格式並不相同。

linux文件的權限可以分爲兩種,一種是文件的操作權限,一種是文件的所有者。文件的操作權限約束了除root外的所有人包括文件的所有者,文件的所有者同樣受文件的操作權限控制,但文件的所有者可以更改文件屬性信息中的權限信息,也就是文件的操作權限。所有者無法更改文件的所有者,

       文件的操作權限將發起者劃分成爲了三個部分,即文件的所有者,文件的所屬組,其他用戶。並分別賦予對應的權限。這是文件的基本權限,但是這種文件屬主屬組的劃分方法過於單一,所以acl作爲文件訪問者身份的擴展。

 

文件的所有者:

文件的所有者,就是文件的所有者。一般是文件的創建者,而文件的屬組一般是文件創建者的主組。即passwd文件中對應的組id,但是以上判定並不絕對。文件的所有者可以後期更改。但是隻能使用root身份進行更改。普通用戶即便是文件的所有者也無法更改文件的所有者爲其他用戶。文件的所有者也可後期進行更改,root可以隨意更改,即便所有者並不在所屬組中。而所有者可以更改所屬組爲所有者所在的組的其中一個。

 

文件的操作權限:

文件的操作權限約束了,對文件發起訪問的訪問者所能具體執行操作,操作行爲分爲三種,即讀·寫·執行(read·write·execute)。在文件權限設定中通常是權限相配合使用。即文件可以同時擁有三種權限的一種,或多種。

       文件權限表示使用對應的字母,或八進制數。表示時將每類用戶劃分爲一組,一組中包含rwx三種權限。每組使用3個對應權限的字母或一個八進制的數字表示,每類發起者對應一組相應的權限。

       或者說權限的表示法,採用的標誌位表示法,文件權限一共針對三類,每類用戶都有3種操作,所以表示文件的權限一共需要 9位標識位。即--- --- ---,每一位對應相應用戶的具體操作權限。具有權限的位置使用對應功能的字母進行佔位,無權限使用-佔位。或者使用二進制數字進行佔位,表示時每組轉換爲一位八進制數。

      drwxr-xr-x. 2 root root   6 3 18 22:58 圖片

 

創建文件的默認權限:

       創建文件與創建目錄時都會有默認的權限,決定這個權限的是umask值,其中umask值起到的作用是,文件的初始權限減去umask值對應的權限,得到的權限便爲文件或文件夾的最終權限。其中文件的初始權限爲666,文件夾的初始權限爲777.系統在用戶登錄時會根據id判斷登錄的用戶具有的umask值得大小。該段判斷語句在/etc/bashrc文件中,bash加載時調用執行。

   if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then

      umask 002

   else

      umask 022

   fi

umask:

             設定umask值,umask決定了創建文件的默認權限的最終權限,umask值是以八進制數顯示的二進制數,一共92進制數每一位表示對應的身份及對應的權限。如果umask值被置位則表示創建的新文件不應該具有該權限。或文件的權限+umask=666,文件夾的權限+umask=777.umask值的計算不是數值計算而是對應權限位的刪除。然後以八進制數表示最終結果。

              umask:查看umask

              umask:設定umask

                    數值表示:umask 777

                                  即設置umask值爲777 rwxrwxrwx。最終結果

文件:rw-rw-rw-,減去 rwxrwxrwx,即---------,或000;什麼權限都沒有

                                  目錄:rwxrwxrwx,減去rwxrwxrwx,即---------,000;同樣什麼權限也沒有

                    模式表示:umask u=rwx,g=rwx,o=rwx

                                  該表示法表示的最終能獲取到的權限,如果轉換爲數值,則對位取反。

                                   u=rwx表示所有者最終可以獲取到rwx權限,go同樣這時的umask值應該爲000

                     -S:顯示以模式法表示的umask        

 

      手動設置umask值,無法長期保持有效,即只在本次登錄有效,如果需要長期有效。則在/etc/bashrc定義後重新進行定義。可以寫入文件~/bashrc中,以命令的形式

 

文件的權限:

文件的權限分爲:基本權限與特殊權限,基本權限是爲了與特殊權限做區分。

我在欠你一張圖吧,反正之前已經欠你3張了。

      文件的操作發起者被分爲三類。文件的所有者,文件的所屬組。以及其他用戶。每類用對應3種操作權限,即讀寫執行。

      訪問文件,進行權限匹配之前,首先進行身份匹配,身份匹配順序爲:文件的所有者,文件的所屬組,其他用戶(我爲啥想起了臨時工,好吧他們也是背鍋俠)一旦身法匹配,不再去匹配下一個身份,即權限無法疊加。如某用戶既是文件的所有者,同時也在文件的所屬組中,身份匹配時首先進行文件的所有者匹配,匹配成功。不進行後續匹配,所以發起者訪問的文件使用的身份是文件的所有者。所具有的文件權限爲所有者的權限。後續的身份不對權限產生影響。

      對於root用戶,對任何的文件都有rw權限。而且3種身份中只要有一種具有執行權限,即只要具有一個執行位,無論是誰的,root便具有該文件的執行權限。

      當一個文件爲可執行的程序時用戶對該文件發起訪問。該可執行的文件會對發起者的身份進行審覈。即單純的驗證發起者是否有權限執行該程序。如果有權限執行該程序,那麼該文件如果需要進行權限審覈的操作,被審覈的身份爲該用戶的權限,這裏的用戶權限包括用戶的權限以及該用戶加入的全部組的權限。,其中程序的權限僅是用於驗證用戶權限,如果具有特殊權限位除外。

基本權限:

       rread讀權限,即有此權限,用戶可以讀取文件的內容。

       wwrite寫權限,即有此權限,用戶可以將內容寫入文件,包括文件的屬性。

一般w的使用需要配合r。當無r權限是隻是不能讀取,但不意味着不能寫入。可以使用>重定向進行寫入。而且使用命令更改文件的屬性同樣需要文件的w權限,比如touch更新時間。也就是說w權限不光決定着數據塊的數據寫入,同時也決定着inode表的屬性寫入。

       xexecute執行權限,即有此權限,用戶可以執行文件,可執行的文件一般是二進制程序,或者腳本文件。

文件夾的權限:

 

目錄的權限對於root來說並沒有影響,即便000,也就是說都沒有執行權限。root一樣可以進入目錄,並查看,創建,刪除文件

基本權限:

       rread文件夾的讀權限。文件夾的內容包括兩部分,一部分是文件夾自身的屬性,一部分是文件夾中文件的名稱與inode的映射關係。文件夾的讀權限決定能否讀取文件夾的數據,也就是文件的名稱與inode的映射關係

       wwrite文件夾的寫權限。決定了能否刪除文件夾中的內容,也就是更改文件夾文件的數據塊,即映射關係。

       xexecute文件夾的執行權限,決定了能否將工作目錄更改爲該文件夾。沒有該權限位,意味着無法讀寫刪除文件,即便沒有讀寫權限,也可以通過路徑訪問文件,但是需要具有被訪問的文件的相關權限。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章