1. 程式人生 > >Linux系統文件權限體系詳解

Linux系統文件權限體系詳解

ls -l 功能 root權限 所有 chgrp 控制 則無 增加 不能

  準備工作:先簡單了解Linux文件權限  

  在Linux系統中,ls -l 命令可以查看文件的權限,如

    [[email protected] Test]$ ls -l a
    -rw-rw-r--. 1 zhaohuizhen zhaohuizhen 121 Oct 14 20:26 a

  文件a權限就在第一列,第一位-,代表文件a時普通文件。後面9為就是文件權限,rw-rw-r--,前三位對應文件屬主權限,中間三位代表屬組權限,最後三位代表其它用戶權限。

  r 讀權限 w寫權限 x執行權限 -無任何權限。

  

  1)改變權限屬性命令chmod

  chmod可以用來改變文件或目錄權限的命令,但只有文件的屬主和超級用戶root才有這種權限。通過chmod改變文件或目錄的權限有兩種辦法:一是通過權限字母和操作符表達式的方法來設置權限;另一種是通過使用數字方法來設置權限。

  a 數字權限法

    chmod [數字組合] 文件名

    -R 可以改變某個目錄下所有文件的屬性

    4 讀 2 寫 1 執行 0 無權限

  b 字符式文件表示法

    u 屬主 g 屬組 o 其它用戶

    + 增加 - 減去 = 設置

    r 讀 w 寫 x 執行

  2)改變文件所屬關系命令chown

    當我們要改變一個文件的屬組,我們使用的用戶必須是文件的屬組而且同時是目標屬組的成員,或超級用戶。只有超級用戶才能改變文件的屬主。

    chown 語法:

    chown [選項] [所有者][:[組]] 文件  #:可以被.代替

    用chgrp 可以改變文件屬組

  總結測試:Linux普通文件的讀寫執行權限說明

    可讀r:表示具有讀取文件內容的權限

    可寫w:表示具有修改文件內容的權限

      (特別提示:刪除文件,修改文件名,新建文件的權限是受父目錄權限控制,和文件本身權限無關)

    可執行x:表示具有執行文件的權限(文件本身能夠執行,普通用戶同時還需具備r的權限,root權限也能執行,當然文件本身也需要能夠執行。)

  總結測試:Linux目錄的讀寫執行權限說明

    可讀r:表示具有瀏覽目錄下面文件及目錄的權限,即ls dir。(不能進入目錄裏,即無法cd dir,如果沒有x權限,列表時也有問題,ls -l dir列表屬性會有問號,提示沒有權限。)

    可寫w:表示具有增加,刪除,或修改目錄內文件名的權限(需要x權限配合)

    可執行x:表示具有進入目錄的權限;例如 cd dir。

  Linux文件與目錄權限對比說明:

  r(read,讀權限):

    對文件而言,表示具有讀取文件內容的權限。

    對目錄來說,表示具有瀏覽目錄的權限(註意,與進入目錄的權限不同),要x權限配合。

  x(execute,執行權限):

    對文件而言,表示具有執行文件權限。對於可執行腳本文件,普通用戶還需要r權限配合,root用戶無需r權限;對於可執行程序,則無需r權限配合。

    對目錄來說,表示具有進入目錄的權限。

  -(無任何權限)

    若對應位為”-“,表示無任何權限。

  特別註意:

    當刪除或移動一個文件或目錄,僅與該文件與目錄所在的上一層目錄權限有關,與該文件本身屬性沒有任何關系。對於文件來說,寫文件是修改文件,而不是刪除文件,因此寫文件是與該文件的本身 屬性有關的。

  默認權限分配的命令umask

  工作中,一般默認權限,對目錄是755,對文件是644。這是相對安全的權限。工作中盡量讓我們的文件和目錄達到以上默認權限。

  Linux系統中,文件的默認權限是由umask確定的。創建文件時,默認最大權限是666,創建文目錄最大權限是777,然後根據umask值,屏蔽對應權限。在/etc/login.defs文件中可以查看umask在不同目錄下的默認權限值。對家目錄,默認權限umask 077.

  改變文件及目錄的默認權限:

  umask 022 022

  設置用戶ID位:用s表示。

    1)用戶對應的前三位的x位上如果有,就用小s表示suid。當x位上沒有x的時候,suid就是大寫的S。

    2)設置用戶ID位就是讓普通用戶可以以root或其他用戶的權限運行只有root或其它用戶才能運行的程序或命令,或程序命令對應本來沒有權限操作的文件等。

    例如:如果要讓boy用戶刪除本來無權刪除的文件。

    a sudo  

    b suid(suid修改的執行的命令,而不是要處理的文件)

    3)僅對二進制命令程序有效,不能用在shell等類似腳本文件上。shell腳本僅僅是調用二進制命令程序而已,因此,具體權限還需要看二進制命令本身。

    4)二進制命令程序需要有可執行權限x

    5)suid權限僅在程序執行過程中有效。

    6)執行命令的任意用戶可以獲得該命令程序執行期間擁有這的權限。

    7)suid是雙刃劍,是一個比較危險的功能,對系統安全有一定的威脅。

Linux系統文件權限體系詳解