文件權限

首先簡單介紹一下文件的屬性:文件權限

使用ls -l 長列出
-rw-r–r–. 1 root root 1302 Jul 25 10:23 group
文件類型|owner權限group權限other權限|硬鏈接數|owner|group|文件大小(bytes)|mtime|文件名

文件權限

文件類型:

       – 普通文件

       d 目錄文件

       l 連接文件

       b 塊設備文件

       c 字符設備文件

       p 管道文件

       s 數據接口文件

  • 普通文件(regular file ) 就是一般我們在進行存取的類型的文件,在由 ls -al 所顯示出來的屬性方面,第一個字符為 [ – ],例如 [-rwxrwxrwx ]。另外,依照文件的內容,又大略可以分為:

    • 純文本檔(ASCII):這是Linux系統中最多的一種文件類型, 稱為純文本檔是因為內容為我們人類可以直接讀到的數據,例如數字、字母等等。 幾乎只要我們可以用來做為設定的文件都屬于這一種文件類型。 舉例來說,你可以下達『 cat ~/.bashrc 』就可以看到該文件的內容。 (cat 是將一個文件內容讀出來的指令)
    • 二進制文件(binary):,我們的系統其實僅認識且可以執行二進制文件(binary file) 在Linux當中的可執行文件(scripts, 文字型批處理文件不算)就是這種格式的 舉例來說,我們經常使用的 cat 命令就是一個binary file。
    • 數據格式文件(data): 有些程序在運作的過程當中會讀取某些特定格式的文件,那些特定格式的文件可以被稱為數據文件 (data file)。舉例來說,我們的Linux在使用者登入時,都會將登錄的數據記錄在 /var/log/wtmp那個文件內,該文件是一個data file,他能夠透過last這個指令讀出來! 但是使用cat時,會讀出亂碼 因為它是屬于一種特殊格式的文件。
  • 目錄(directory) 就是目錄 第一個屬性為 [ d ],例如 [drwxrwxrwx]。
  • 連接文件(link) 就是類似Windows系統底下的快捷方式! 第一個屬性為 [ l ](英文L的小寫),例如 [lrwxrwxrwx] ;
  • 設備與裝置文件(device) 與系統周邊及儲存等相關的一些文件, 通常都集中在/dev這個目錄之下!通常又分為兩種:

    • 區塊(block)設備檔 :就是一些儲存數據, 以提供系統隨機存取的接口設備,舉例來說,硬盤與軟盤等就是! 你可以隨機的在硬盤的不同區塊讀寫,這種裝置就是成組設備!你可以自行查一下/dev/sda看看, 會發現第一個屬性為[ b ]!
    • 字符(character)設備文件:亦即是一些串行端口的接口設備, 例如鍵盤、鼠標等等!這些設備的特色就是『一次性讀取』的,不能夠截斷輸出。 舉例來說,你不可能讓鼠標『跳到』另一個畫面,而是『滑動』到另一個地方??!第一個屬性為 [ c ]。
  • 數據接口文件(sockets) 既然被稱為數據接口文件, 想當然,這種類型的文件通常被用在網絡上的數據承接了。我們可以啟動一個程序來監聽客戶端的要求, 而客戶端就可以透過這個socket來進行數據的溝通了。第一個屬性為 [ s ], 最常在/var/run這個目錄中看到這種文件類型了。
  • 數據輸送文件(FIFO, pipe) FIFO也是一種特殊的文件類型,他主要的目的在解決多個程序同時存取一個文件所造成的錯誤問題。 FIFO是first-in-first-out的縮寫。第一個屬性為[p] 。

Linux 文件的基本屬性就有九個,分別是 owner/group/others 組別的 read/write/execute 屬性,

 -rwxrwxrwx 這9個屬性中3個位一組,其中可以使用數字來表示各個屬性。

r  4

w 2

x  1

八進制數字

—    0

–x   1

-w-  2

-wx  3 

r–   4

r-x  5

rw- 6

rwx 7

這里我們簡單介紹一下,使用bc計算器進行數值進制間的轉換:

文件權限

下面我們介紹文件的屬主和屬組的修改。

文件的屬性操作:

chown 設置文件的所有者。

chown : change owner
            owner.group
            owner:group
            以上只有root才能修改文件的所有人
            :group或 .group 文件的owner也可以使用chown修改文件的所屬組(owner必須屬于目標組)
            -R  遞歸
            –reference sourcefile tarfile

下面將house的屬主改為liubei,屬組改為shuguo。
文件權限

接著我們使用chown .group filename和chgrp group filename 修改文件的屬組。

文件權限

接著我們加上 -R ,可以將目錄下所有文件一并修改,可以看到owner:liubei,group:shuguo 變成owner:root,group:root,如下圖。

文件權限

chgrp 設置文件的所有組。

chgrp : change group
文件的owner可以修改文件的所屬組(owner必須屬于目標組)
-R  遞歸 

查看house文件夾的下文件屬組為root,如下。

文件權限

然后遞歸修改屬組:

文件權限

對于任何一個文件擁有權限才能進行操作:

普通文件
r: 可以讀取文件的內容
cat less more nano vim 執行腳本
w: 可以修改文件的內容
nano vim > >> tee gedit 
x: 可以執行該文件 
執行腳本


目錄文件
r: 用戶可以列出目錄下有哪些文件(不能查看文件的詳細信息)
w: 只有w無意義。
x: 用戶可以進入該目錄(如果知道文件名,且有相對應的文件權限 ,可以執行對應的操作)
rx: 用戶可以進入目錄,且可以長列出。
rw:等于只有r
wx: 能進入,能創建能刪除,不能列出。故用戶能否刪除文件與文件自身權限無關。
rwx: 全部權限。
—:null

下面我們介紹權限的判斷順序,首先列一條判斷準則:

      先判斷是否是文件的所有人,如果是,則執行所屬人的權限后結束,如果不是所有人,則判斷是否所屬組(可以是主組也可以是輔助組),如果是,則執行所屬組的權限后結束,如果不是則執行其他人的權限后結束。

下面創建一個文件house夾,owner:root,group:root,通過chmod o= house 此時文件的基本屬性:drwxrwx—,此時我們切換到用戶:su – liubei,試著進入house,權限被拒絕(Permission denied),這是因為我們既不是屬主,也不再root組里,而且other權限是0(—)。

文件權限

       下面我們回到root下,將house的屬主和屬組均進行修改,分別改為owner:liubei ,group:shuguo,然后我們su – liubei 切換到用戶劉備下,發現就能進去,這是因為owner:liubei擁有rwx權限,接著su – guanyu 切換到用戶關羽下,此時關羽也能進入,進行rwx操作,接著su – caocao切換到用戶:caocao下,此時連house目錄也進不去,這是因為用戶:caocao既不是屬主,也不在屬組,而other權限:—,所以曹操進不去。

首先我們看下shuguo組的成員:

文件權限

文件權限

現在屬主劉備可以在house中創建、刪除、查看文件,屬組成員關羽、張飛,則可以進入和查看文件。

現在我們回到root下,將屬主(劉備)的權限改為 — ,再切換的用戶劉備下,此時雖然劉備在蜀國組找中,但是由于owner優先,所以無法訪問house。

文件權限

現在我們已經了解到文件屬主和屬組的修改,下面介紹文件屬性修改及其修改工具chmod:

chmod :它的執行可以修改文件的權限和文件的屬性。注意:只有所屬人和root可以更改文件的權限。

方式一:字符方式

     人物 動作 行為
     ugoa  +x=  rwx
     u owner
     g group
     o other 
     a ugo
     chmod ugo+rwx
     a=rwx
     a=
     u=….,g=…,o=…
     X 當文件本身沒有x權限時,則跳過,一般用于批量修改多個文件、目錄的權限時,自動跳過沒有執行權限的文件。

文件權限

方式二:數字方式

    rwxrw-r–
    111,110,100
    764
    r:100:4
    w:010:2
    x:001:1
文件權限

新建文件和目錄的默認權限:

umask值 可以用來保留在創建文件權限
新建FILE權限: 666-umask
如果所得結果某位存在執行(奇數)權限,則將其權限+1
新建DIR權限: 777-umask
非特權用戶umask002
rootumask 022
umask: 查看
umask #: 設定
umask 002
umask –S 模式方式顯示
umask –p 輸出可被調用

文件權限

我們平時創建一個文件,在root用戶下,目錄文件默認屬性rwxr-xr-x(755),普通文件rw-r–r–(644),普通用戶下,目錄文件默認屬性rwxrwxr-x(775),普通文件默認屬性rw-rw-r–(664),原因就是umask的默認值。

普通用戶:umask 002

                目錄文件   普通文件 

最大權限    777          666
umask       002          002
默認權限    775          664

文件權限

root用戶:umask 022

                目錄文件   普通文件 

最大權限    777          666
umask       022          022
默認權限    755          644

文件權限

當我們需要大批量創建文件,但是現有文件權限已不能滿足需要,此時我們需要設置umask的默認值。

        用戶設置: ~/.bashrc     對當前用戶生效。

        全局設置: /etc/bashrc   對所有用戶生效。

        對象 目錄文件    普通文件

        777 rwxrwxrwx  666 rw-rw-rw-
        021 —-w—x      021 —-w—x
        756 rwxr-xrw-    646 rw-r–rw-
        當umask中全部是偶數時,可以直接減,當umask中包含奇數時,對于目錄直接減,對于文件,在奇數所在的位減完后加一。
文件權限

接下來我們介紹可執行文件的SUID,SGID,以及目錄上的SGID,首先看下/etc/shadow文件,這個文件是用來存儲用戶的賬戶與密碼等機密信息,默認情況沒有權限的,除了root,其他用戶沒有權限去訪問。

文件權限

既然其他用戶連查看的權利都沒有,那么我們平時修改密碼的時候怎么完成對此文件的寫操作。是的,就是和SUID有關系。先看下 /bin/passwd :

文件權限

        SUID:當對一個可執行的二進制文件作用了SUID權限之后,任何擁有執行該文件權限的人,在執行的過程時都臨時擁有該文件所屬人的權限。就是因為這個,所以我們才有訪問/etc/shadow的權利。

接著介紹SGID:

        SGID:當對一個可執行的二進制文件作用了SGID權限之后,任何擁有執行該文件權限的人,在執行的過程時都臨時擁有該文件所屬組的權限。
        現在我們將/bin/cat 考到/app目錄下,然后在屬組上加上SGID,然后在創建文件file ,屬主和屬組均為:liubei ,其他人無任何權限。所以關羽通過cat想要偷看不行,但是通過/app/cat則可以。

文件權限 

        SGID:當對一個目錄作用了SGID權限之后,任何對該目錄有wx權限的用戶在該目錄下創建的文件及目錄的所有屬均為該目錄的所有組。

文件權限

        STICKY:當對一個目錄作用了sticky之后(只限制組用戶,目錄的owner不受影響),該目錄下的文件僅其所屬人才能刪除。

        首先以對/app/house目錄作用sticky,屬組設置為:shuguo,然后創建文件file,屬主:guanyu,切換到用戶:zhangfei,試著去刪除file,提示不能。

        以用戶:caocao 試著去刪除file,Operation not permitted,雖然擁有rwx權限,這就是sticky在搞事情。

文件權限

原創文章,作者:007,如若轉載,請注明出處:http://www.www58058.com/82750

(0)
007007
上一篇 2017-07-29
下一篇 2017-07-29

相關推薦

  • Linux基礎知識

    一、描述計算機的組成及其功能 計算機由運算器、控制器、存儲器、I/O設備五大部件組成。 運算器和控制器統稱為中央處理器,俗稱CPU。    1、運算器:實現算術運算和邏輯運算的部件;    2、控制器:計算機的指揮系統,控制計算機的其他部件,使得個部件有條不紊地協調工作;    3、存儲器:存儲數據…

    2017-07-08
  • Bash學習基礎知識一“命令”

    Bash 學習基礎知識 目錄 一、Shell是個啥? 二、BASH的命令     2.1 命令的語法格式     2.2 什么是命令     2.4 命令的類型     …

    Linux干貨 2015-04-03
  • FTP服務初探

    FTP FTP概述 FTP原理和模式 vsftpd vsftpd基礎服務搭建 vsftpd基于數據庫的實現虛擬用戶 vsftpd基于mysql實現虛擬用戶 常見問題 FTP概述 什么是FTP? FTP是File Transfer Protocol 文件傳輸協議的縮寫,基于網絡來傳輸文件的應用層通信協議。 FTP的功能是什么? FTP能夠通過網絡來傳輸文件,因…

    Linux干貨 2016-04-28
  • 正則表達式基礎

    一、正則表達式: 元字符是用來闡釋字符表達式意義的字符,簡言之,就是用來描述字符的字符。 正則表達式RE(Regular Expression)是由一串字符和元字符構成的字符串。 正則表達式的主要功能是文本查詢和字符串操作,它可以匹配文本的一個字符或字符集合。實際上正則表達式完成了數據的過濾,將不滿足正則表達式定義的數據拒絕掉,剩下與正則表達式匹配的數據。 …

    Linux干貨 2017-06-04
  • 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率

    Linux內核是一名了不起的馬戲表演者,它在進程和系統資源間小心地玩著雜耍,并保持系統的正常運轉。 同時,內核也很公正:它將資源公平地分配給各個進程。 但是,如果你需要給一個重要進程提高優先級時,該怎么做呢? 或者是,如何降低一個進程的優先級? 又或者,如何限制一組進程所使用的資源呢? 答案是需要由用戶來為內核指定進程的優先級 大部分進程啟動時的優先級是相同…

    Linux干貨 2015-02-14
  • Bash 的配置文件

    有時候,在定義了別名 alilas cls=clear  , 或者定義了 umask=033 等等,在logout 用戶后再登錄,會失效,因為這些本地變量,僅對當前shell生效。而要保留配置,使其永久生效,就需要將這些定義的寫入配置文件中保存。下面介紹下bash的配置文件:  Bash的配置文件可以分為: profile類: /etc/…

    Linux干貨 2015-04-04
欧美性久久久久