關於Linux系統的文件權限,你須要瞭解這些內容

道阻且長,行則將至。埋頭苦幹,不鳴則已,一舉成名!加油騷年 掘金第一篇文章,望你們多多關照,謝謝各位前輩!html

1 前言

  鳥哥的Linux私房菜:「Linux最優秀的地方之一,就在於它的多用戶,多任務環境。而爲了讓各個用戶具備較保密的文件數據,所以文件的權限管理就變得很重要了。」linux

本文爲本身認真閱讀《鳥哥的Linux私房菜》對應內容後,總結記錄所得。若是有誤,還望指正!謝謝shell

  Linux通常將文件可存取訪問的身份分爲3個類別,分別是:owner、group、others,且三種身份各有read、write、execute等權限。數據庫

  本文將會圍繞如下方面展開: vim

在這裏插入圖片描述

2 基本概念

2.1 用戶和用戶組的基本概念

  用戶及用戶組的基本概念,以實際中一個家庭爲例,假設有一家人,家裏只有三兄弟,分別是王大毛、王二毛、王三毛這3我的,家庭的戶主是王大毛。簡要分析以下:windows

  • 文件全部者(用戶):在這個家庭中,王大毛、王二毛、王三毛,分別有屬於本身的房間,那麼他們就是這個房間的全部者(用戶)。此時王二毛能夠進入王三毛的房間,可是卻只能看看,什麼也不能動,由於這些東西都是王三毛的。
  • 用戶組:由於這三我的是一家人,因此他們能夠在公共的客廳一塊活動,你們均可以在客廳作本身的事情,好比看電視,聽音樂等。

2.2 用戶和用戶組的基本特徵

  用戶、用戶組、其餘這幾個類別的特徵是什麼呢?數組

  • 用戶:每一個用戶,都有本身的空間,數據存儲空間,工做空間等;
  • 用戶組:同一個用戶組的成員,能夠有共享的空間交流;不一樣用戶組的成員,不能互相訪問;好比上邊王大毛的家庭,另一個家庭的用戶張三,就不能去訪問。除非獲得王大毛家庭用戶的「邀請」。
  • 其餘:另外家庭的用戶張三,就是其餘。

2.3 Linux下默認文件存放路徑

  在Linux系統下,是有一個默認的路徑,默認文件來存放用戶和用戶組的相關信息,分別以下:安全

  • /etc/passwd:存放全部的系統上的帳號與通常身份用戶,以及root的相關信息;
  • /etc/shadow:記錄我的的密碼;
  • /etc/group:記錄Linux全部的組名。

  須要特別注意的是:這三個文件是Linux系統裏面帳號、密碼、用戶組信息的集中地,必定不要隨便刪除這三個文件。服務器

3 Linux的文件屬性

3.1 查看文件屬性

  當咱們在Linux系統下,使用 ls -l 命令查看目錄文件時,會發現有不少的內容,我剛開始的時候瞭解的也不是很深刻,只是知道個大概,今天認認真真看了看書,作一個總結。編輯器

  關於Linux下 ls 命令的相關參數,能夠參考菜鳥教程 - ls,部分命令參數截圖以下:

在這裏插入圖片描述

3.2 文件屬性分析

  我參考本身的Ubuntu,拿以下幾個文件舉例:

列1 列2 列3 列4 列5 列6 列7
drwxrwxrwx 2 zhaoc zhaoc 4096 10月 16 22:50 Music
drwxr-xr-x 2 root root 4096 3月 24 21:50 vim
-rw-r--r-- 1 root root 438 3月 15 15:49 exports
  • 列1:表明這個文件的類型與權限;這一列,若是仔細觀察就會發現,每個都是由10個字符組成(因爲編輯器緣由,可能會連到一塊),下邊對這10個字符分開來講:
    • 第一個字符:表明這個文件是「目錄、文件或連接文件等」,就是文件的類型,不一樣的 字母 表明的含義是不同的:
      • [ d ]:表明目錄,即此文件類型爲一個目錄類型,也就是常見的文件夾;如上邊的「Music」文件夾;
      • [ - ]:表明文件,就是一個最小的單元,也就是windows下常見的基本文件等;如上邊的「exports」文件;
      • [ l ]:小寫字母「L」,表明鏈接文件(linkfile);
      • [ b ]:表示設備文件裏面的可供存儲的接口設備;
      • [ c ]:表示設備文件裏面的串行端口設備,例如鍵盤、鼠標等(一次性讀取設備);
    • 第2-4個字符:這三個字符表明文件全部者的權限,如上述「Music」文件,全部者的權限就是 [rwx],也就是可讀,可寫,可執行權限;
    • 第5-7個字符:表明同用戶組的權限,也就是同一個用戶組內的其餘用戶,對這個文件的權限。以「vim」文件爲例,同用戶組的權限就是 [r-x],便可讀,可執行權限;
    • 第8-10個字符:表明其餘非本用戶組的權限。以「exports」文件爲例,其餘非本用戶組的權限爲 [r--],也就是可讀權限;
  • 列2:表示有多少文件名鏈接到此節點。通俗的理解就是此文件夾下,有多少個文件夾。按照我本身的測試,這個只會顯示有多少個文件夾,而不包含文件。另外須要注意的是,這個數量包含隱藏文件夾的數量,能夠參考下圖作一個對比,11-Linux 文件夾下邊只有一個文件夾,可是此處顯示的文件名倒是3,那是由於還有2個隱藏文件夾,注意這兩個隱藏文件夾前邊的文件類型也是 d
    在這裏插入圖片描述
  • 列3:表示這個文件或「目錄」的「全部者帳號」,按個人理解,就是這個文件是誰第一個建立出來的。
  • 列4:表示這個文件所屬的用戶組,Group。
  • 列5:表示這個文件的容量大小,默認單位爲B
  • 列6:表示這個文件第一次建立的日期,或者是最近的修改日期。其實也就是最後一次修改的日期。補充一點,若是但願顯示完整的時間格式,可使用以下命令:
ls -l --full-time
複製代碼

在這裏插入圖片描述

  • 列7:這一列就是文件名啦。須要瞭解的是,以英文符號 「.」 開頭的文件,爲隱藏文件。

4 如何改變文件屬性與權限

  有幾個經常使用的更改文件屬性、文件權限的命令。先列出來,在一一分析:

  • chgrp:改變文件所屬用戶組;
  • chown:改變文件全部者;
  • chmod:改變文件的權限;

4.1 改變所屬用戶組:chgrp

  更改文件/目錄所屬用戶組,通常咱們較爲經常使用的就是使用 chgrp 命令。其實這個命令就是英文 change group 的縮寫;

  須要注意的是,要被改變的組名必需要在 /etc/group 文件內存在才能夠,不然就會報錯。

  基本的命令格式以下:

chgrp [-R] [所屬羣組] [文件或目錄]

[-R]:進行遞歸的持續更改,即修改此目錄及其下屬全部文件/目錄的羣組。
複製代碼

  更爲詳細的信息能夠參考:菜鳥教程 - chgrp,裏邊有更爲詳盡的解釋及示例。

4.2 改變文件全部者:chown

  更改文件/目錄的全部者,通常經常使用的命令就是 chown 命令,也就是英文 change owner 的縮寫;

  一樣須要注意的是,用戶必須是已經存在於系統中的帳號,也就是在 /etc/passwd 這個文件中有記錄的用戶名稱才能改變。

  基本的命令格式以下:

chown [-R] [帳號名稱] [文件或目錄]

[-R]:進行遞歸的持續更改,即修改此目錄及其下屬全部文件/目錄的羣組。
複製代碼

  若是須要同時更改文件的全部者和用戶組,可使用以下命令:

chown root:root filename
複製代碼

  須要同時更改文件全部者及用戶組時,推薦使用冒號 「:」 ;若是須要單純的修改用戶組怎麼辦?可使用以下命令:

chown .root filename
複製代碼

  此種狀況下,可使用英文的小數點 「.

4.3 改變文件權限:chmod

  這個命令,能夠說是在實際使用中,最經常使用的一個命令之一。

  基本的命令格式以下:

chmod [-R] [xyz] [文件或目錄]

[-R]:進行遞歸的持續更改,即修改此目錄及其下屬全部文件/目錄的羣組。
複製代碼

  而這個命令,稍微大點來講,有兩種不一樣的用法,下邊分開描述。

4.3.1 數字類型改變文件權限

  經過直接使用數字方法,改變文件權限,在實際中是較爲經常使用的方法。簡單的來講,一個文件/目錄,有三種不一樣的身份,每種身份有三種不一樣的權限,按照二進制來劃分以下:

r w x r w x r w x
4 2 1 4 2 1 4 2 1

  一樣,拿上述三個文件,作個分析

列1 列2 列3 列4 列5 列6 列7
drwxrwxrwx 2 zhaoc zhaoc 4096 10月 16 22:50 Music
drwxr-xr-x 2 root root 4096 3月 24 21:50 vim
-rw-r--r-- 1 root root 438 3月 15 15:49 exports

  若是我要將 Music 設置爲當前權限(rwxrwxrwx),應該怎麼作,分析,此文件擁有所有的權限,若是要設置爲此權限類型,應該使用以下命令:

chmod 777 Music
複製代碼

  同理,若是要將 exports 設置爲當前權限(rw-r--r--),設置命令以下:

chmod 644 exports
複製代碼

  總結一下經驗就是,使用數組類型改變文件權限時,將對應位權限轉換爲二進制數值,經過此命令設置文件權限便可。

4.3.2 符號類型改變文件權限

  所謂的符號類型,就是使用相似於字母的方式,來改變文件權限。咱們經常使用的身份有 user、group、others 這三種身份,所以 Linux 中經過 u g o 來表明三種身份,另外用 a 表明所有的身份;

  具體的權限類型就能夠用 r w x 來表示;

  操做方式能夠用以下三種方式表示:

  • +:表示給此文件/目錄,加入某種權限,除此以外的其餘權限不變;按個人理解就是隻修改對應部分的權限;
  • -:表示除去此文件/目錄的某種權限,除此以外的其餘權限保持不變;
  • =:表示給文件/目錄設置權限,此種方式會覆蓋原來的全部權限內容。

  用上述 「exports」 文件舉例,此文件的權限爲(rw-r--r--),咱們在設置時,可使用以下命令:

chmod u=rw,go=r exports
複製代碼

  上述命令解釋過來,就是給文件全部者 「u」 ,設置可讀,可寫的權限;給用戶組和其餘用戶設置可讀權限。

  須要注意的是:u=rw,go=r 這條命令,是連在一塊兒的,中間不能有任何空格

  若是咱們不知道某個文件原來的屬性,只想給這個文件的每一個用戶增長一個可寫入的權限,就可使用以下命令:

chmod a+w filename
複製代碼

  一樣的,若是是要給這個文件的全部用戶去掉可執行權限,則可使用以下命令:

chmod a-x filename
複製代碼

  經過上面兩個示例,能夠知道,在 + - 狀態下,只要是沒有指定到的選項,則該權限「不會被變更」。

5 目錄與文件的權限意義

  目錄與文件的權限,對於數據的安全是有很重要的做用的,下邊分開來介紹文件權限對於通常文件與目錄文件有何不一樣

5.1 權限對文件的重要性

  文件是實際含有數據的地方,包括通常文本文件、數據庫內容文件、二進制可執行文件等,所以權限對於文件來講,有以下意義:

  • r(read):可讀取此文件的實際內容,如讀取文本文件的文字內容等;
  • w(write):能夠編輯、新增或者是修改該文件的內容,可是不包含刪除該文件;也就是說寫權限只能對文件的內容進行修改。
  • x(execute):該文件具備能夠被系統執行的權限。此時須要注意windows下可執行文件與Linux系統下可執行文件的不一樣。windows是根據文件的「擴展名」來判斷文件是否有可執行權限;而Linux是經過判斷此文件是否有 「x」 權限,來決定是否能夠執行。
  • 總結:對於文件來講,所具備的權限是對文件的內容的權限,但並不具有刪除該文件自己的權限。由於文件記錄的是實際的數據。

5.2 權限對目錄的重要性

  文件是存放實際數據的所在,目錄主要的內容是記錄文件名列表,文件名與目錄有強烈的關聯。因此對於目錄時,不一樣的權限也有不一樣的做用:

  • r(read):表示具備讀取目錄結構列表的權限;也就是說,你能夠看到這個目錄下有哪些文件列表,不過也就只是看看而已;
  • w(write):這個能夠寫入的權限對目錄來講是很強大的,它表示你具備更改該目錄結構列表的權限:
    • 新建新的文件與目錄;
    • 刪除已經存在的文件與目錄(不論該文件的權限爲什麼);
    • 將已存在的文件或目錄進行重命名;
    • 轉移該目錄內的文件、目錄位置。
    • 總結一下:目錄的w權限就與該目錄下面的文件名變更有關聯。
  • x(execute):目錄的可執行權限有什麼用?目錄不能被用來執行,可是目錄的x 可執行權限表明的是用戶可否進入該目錄成爲工做目錄的用途。

5.2.1 目錄實際舉例1

  舉例說明目錄的可執行權限有什麼做用,假設有個目錄,權限以下:

drwxr--r-- 3 root root 4096 3月 24 21:50 filename
複製代碼

  此時系統有個帳號名稱爲 zhaoc,這個帳號並無支持 root 用戶組,請問 zhaoc 對這個目錄有何權限?是否能夠切換到此目錄中?

  回答:zhaoc 對此目錄僅具備 r 的權限,所以 zhaoc 能夠查詢此目錄下的文件名列表。由於 zhaoc 不具備 x 的權限,因此 zhaoc 並不能切換到此目錄內這一點很重要

5.2.2 目錄實際舉例2

  假設個人帳號名稱爲 zhaoc,個人主文件夾在 /home/zhaoc 這個路徑下,zhaoc對此目錄具備徹底的 [rwx] 權限,若是在此目錄下有一個文件 filename,改文件的權限以下:

-rwx------ 1 root root 4365 Sep 19 23:20 filename
複製代碼

  問題:zhaoc 對此文件夾的權限是什麼?能否刪除此文件?

  回答:由上述文件權限列表可知,此時 zhaoc 對此文件來講是 「others」的身份,所以這個文件他沒法讀,沒法編輯,也沒法執行,也就是說他沒法變更這個文件的內容。可是,因爲這個文件在他的主文件夾下,他在此目錄下具備 [rwx] 的完整權限,所以對於 filename 這個 「文件名」 來講,zhaoc 是可以 「刪除」 的,也就是說 zhaoc 這個用戶可以刪除 「filename」 這個文件。

6 結合工做實際

  結合我目前工做經驗來看,在實際工做中,文件權限的重要性在開發服務器上會獲得明顯體現。好比我剛到公司的時候,全部文件權限都是隻讀;目錄權限爲可讀、可執行;也就是說,我對服務器上的任何東西都沒有寫入權限;這樣很明顯的一個好處就是,防止新人不當心刪除服務器的文件,給公司形成損失。

  等到後來我在公司待了一段時間,熟悉了一些東西、須要接觸項目開發的時候,就給我開放了對服務器特定目錄的可寫操做,保證我能夠在此文件夾內,進行代碼修改、提交等操做。

7 總結

  1. 對用戶,用戶組等概念特徵,有了一個基本瞭解;
  2. 對文件屬性有了一個基本認識,以及文件屬性的查看方式等;
  3. 對改變文件屬性與權限的三種方法,有了更深刻的瞭解;
  4. 對一些特定狀況下的使用權限,有了很好的認識;

本篇文章就是基於書本內容的一個閱讀,與本身深刻了解後的一個筆記總結。如有錯誤之處還望指正,但願對您能有幫助!感受不錯能夠留個贊哈,方便更多的人看到,謝謝各位!

相關文章
相關標籤/搜索