Linux文件權限

簡介


Linux最爲服務器系統,其最優秀的地方之一就在於它的多用戶多任務環境,即Linux 系統支持多個用戶在同一時間內登陸,不同用戶可以執行不同的任務,並且互不影響。而爲了讓各個使用者具有較保密的文件數據,因此文件的權限管理就變得十分重要。

例如,某臺 Linux 服務器上有 4 個用戶,分別是 root、www、ftp 和 mysql,在同一時間內,root 用戶可能在查看系統日誌、管理維護系統;www 用戶可能在修改自己的網頁程序;ftp 用戶可能在上傳軟件到服務器;mysql 用戶可能在執行自己的 SQL 查詢,每個用戶互不干擾,有條不紊地進行着自己的工作。與此同時,每個用戶之間不能越權訪問,比如 www 用戶不能執行 mysql 用戶的 SQL 查詢操作,ftp 用戶也不能修改 www 用戶的網頁程序。

不同用戶具有不問的權限,毎個用戶在權限允許的範圍內完成不同的任務,Linux 正是通過這種權限的劃分與管理,實現了多用戶多任務的運行機制。

 

用戶與用戶組概念


概念

如上所述,Linux是一個多用戶多任務的分時操作系統,如果要使用系統資源,就必須向系統管理員申請一個賬戶,然後通過這個賬戶進入系統。這個賬戶和用戶是一個概念,通過建立不同屬性的用戶,一方面,可以合理的利用和控制系統資源,另一方面也可以幫助用戶組織文件,提供對用戶文件的安全性保護。

每個用戶都用一個唯一的用戶名和用戶口令,在登錄系統時,只有正確輸入了用戶名和密碼,才能進入系統和自己的主目錄。

用戶組是具有相同特徵用戶的邏輯集合。簡單的理解,有時我們需要讓多個用戶具有相同的權限,比如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權,如果有 10 個用戶的話,就需要授權 10 次,那如果有 100、1000 甚至更多的用戶呢?

顯然,這種方法不太合理。最好的方式是建立一個組,讓這個組具有查看、修改此文件的權限,然後將所有需要訪問此文件的用戶放入這個組中。那麼,所有用戶就具有了和組一樣的權限,這就是用戶組。將用戶分組是 Linux 系統中對用戶進行管理及控制訪問權限的一種手段,通過定義用戶組,很多程序上簡化了對用戶的管理工作

因此,在Linux裏任何一個文件都具有“用戶(User)"、“用戶組(Group)”、“其他人(Other)”三種身份的個別權限。

用戶和組的對應關係

用戶和用戶組的對應關係有以下 4 種:

  1. 一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員。
  2. 一對多:即一個用戶可以存在多個用戶組中。那麼此用戶具有多個組的共同權限。
  3. 多對一:多個用戶可以存在一個組中,這些用戶具有和組相同的權限。
  4. 多對多:多個用戶可以存在多個組中。其實就是上面三個對應關係的擴展。

用戶和組的配置文件路徑

User用戶:

/etc/passwd(用戶及其屬性相關信息如名稱、UID、GID……)

/etc/shadow(用戶密碼及其相關屬性)

Group組:

/etc/group(組及其屬性相關信息)

/etc/gshadow(組密碼及其相關屬性)

 

文件權限說明


文件權限主要依據三種身份來決定:

  • user/owner 文件使用者,文件屬於哪個用戶
  • group 屬組,文件屬於哪個組
  • others 既不是user,也不再group,就是other,其他人

每個文件針對每類訪問者定義了三種主要權限

  • r:Read 讀
  • w:Write 寫
  • x:execute 執行

用戶獲取文件權限的順序: 先看是否爲所有者,如果是,則後面權限不看;再看是否爲所屬組,如果是,則後面權限不看。

注意:x針對目錄加執行權限,文件不加執行權限(因文件具備執行權限有安全隱患),root賬戶不受文件權限的讀寫限制,執行權限受限制。

權限位說明

第一欄有10位-rw-rw-r--,代表這個文件的類型的權限,以另外例子圖示

rwx也可以用數字來代替

爲什麼取值4,2,1呢?一組rwx順序是固定的,其值是二進制計算所得,一組(一個身份)權限值即爲rwx位各值之和。如rw-

常見權限

-rw------- (600) 只有所有者纔有讀和寫的權限
-rw-r--r-- (644) 只有所有者纔有讀和寫的權限,組羣和其他人只有讀的權限
-rwx------ (700) 只有所有者纔有讀,寫,執行的權限
-rwxr-xr-x (755) 只有所有者纔有讀,寫,執行的權限,組羣和其他人只有讀和執行的權限
-rwx--x--x (711) 只有所有者纔有讀,寫,執行的權限,組羣和其他人只有執行的權限
-rw-rw-rw- (666) 每個人都有讀寫的權限
-rwxrwxrwx (777) 每個人都有讀寫和執行的權限

 

權限對文件與目錄的意義


文件權限

文件是實際含有數據的地方,包括一般文本、數據庫內容檔、二進制可執行文件等等。

因此權限對於文件來說,它的意義是這樣的

  • r:read可讀取文件的實際內容,如可以用cat等查看類工具獲取其內容
  • w:write可以編輯、新增或修改文件內容,但不能刪除文件(w主要針對文件內容而言)
  • x:execute 該文件具有可被系統執行的權限,可以把此文件提請內核啓動爲一個進程(一般爲可執行的程序、腳本文件)

文件的w權限主要針對文件內容而言,與文件文件名存在與否沒有關係,因此刪除文件(修改文件名)的權限是受父目錄的權限控制的,和文件本身權限無關。如果想刪除文件應該給上一級目錄的用戶或者用戶組可寫和執行的權限。

目錄權限

目錄主要的內容在記錄文件名清單

r  —read contents in directory

表示具有讀取目錄結構清單的權限,如可以對此目錄執行ls列出所有文件名數據。

w  modify contents of directory

可在此目錄中創建新的文件和目錄,刪除已經存在的文件和目錄(不論該文件的權限是什麼),更名或搬移該目錄下的文件與目錄。

x  —access directory

目錄不可被執行,x代表的是使用者能否進入該目錄成爲工作目錄(類似打開抽屜的鑰匙),即可以cd進入這個目錄。

具有r權限只能開到目錄下文件列表,想要read目錄中文件的具體內容,還的具備目錄的x權限,所以要開放目錄給任何人瀏覽的時候,應該至少給與r與x的權限,w權限可保留。

可讀權限r和可寫權限w都要和執行x權限配合才能夠查看和編輯修改目錄或文件的內容。

 

修改文件屬性與權限的方法


修改文件所屬用戶 chown

chown [-cfhvR] [--help] [--version] user[:group] file...

修改文件的屬主:chown
用法說明:
user : 新的文件擁有者的使用者 ID
group : 新的文件擁有者的使用者組(group)
-c #顯示更改的部分的信息
-f #忽略錯誤信息
-h #修復符號鏈接
-v #顯示詳細的處理信息
-R #處理指定目錄以及其子目錄下的所有文件
--help #顯示輔助說明
--version #顯示版本
# 將 test.txt 文件的屬主 修改爲 root
[root@MyLinux /tmp 16:43:12] chown root test.txt 

修改文件所屬組 chgrp

chgrp [-cfhRv][--help][--version][所屬羣組][文件或目錄...]
chgrp [-cfhRv][--help][--reference=<參考文件或目錄>][--version][文件或目錄...]

-c #--changes 效果類似"-v"參數,但僅回報更改的部分。
-f #--quiet或--silent  不顯示錯誤信息。
-h #--no-dereference  只對符號連接的文件作修改,而不更動其他任何相關文件。
-R #--recursive  遞歸處理,將指定目錄下的所有文件及子目錄一併處理。
-v #--verbose  顯示指令執行過程。
--help #在線幫助。
--reference=<參考文件或目錄> #把指定文件或目錄的所屬羣組全部設成和參考文件或目錄的所屬羣組相同。
--version #顯示版本信息。
# 將 test.txt 文件的屬組 修改爲 root
[root@MyLinux /tmp 16:43:12] chgrp root test.txt 

修改文件權限 chmod

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

chmod  [身份]     [參數]   [文件]
    u(user)   +(添加)  
    g(group)   -(減去)
    o(other)  =(賦值)
    a(all)

u:表示所有者權限
g:表示羣組權限
o:表示非同羣組用戶的權限
a:表示所有用戶的權限
+:表示加入權限
-:表示去掉權限
=:表示設定權限
# 當前權限
-rw-rw-r-- 1 root root 0 8月  11 16:41 test.txt

#方法1

    # 減去屬主的寫權限
    chmod u-w test.txt

    # 查看權限
    -r--rw-r-- 1 root root 0 8月  11 16:41 test.txt

    # 其他
    chmod u+wx,g-r,o=rx file
    chmod -R g+rwX /testdir


# 方法2

    # 屬主添加可讀可寫可執行權限
    chmod 700 test.txt

    #屬主可讀可寫可執行,屬組可讀可執行,其他人可讀可執行
    chmod 755 test.txt

 

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