Linux | Linux的文件權限與目錄配置

目錄

一.使用者與羣組

1.文件擁有者

2.羣組概念

3.其他人的概念

4.Linux用戶身份與羣組記錄的文件

二.Linux文件權限概念

1.Linux文件屬性

三.如何改變文件屬性與權限

1.改變所屬羣組 chgrp

2.改變文件擁有者 chown

3.改變權限 chmod

四.目錄與文件之權限意義

1.權限對文件的重要性

2.權限對目錄的重要性

3.文件和目錄權限的對比


一.使用者與羣組

1.文件擁有者

由於 Linux是個多人多任務的系統,因此可能常常會有多人同時使用這部主機來進行工作的情況發生,爲了考慮每個人的隱私權以
及每個人喜好的工作環境,因此,這個文件擁有者的角色就顯的相當的重要了!

例如當你將你的文件放在你自己的家目錄,你總不希望被其他人看見自己的文件吧?這個時候,你就把該文件設定成只有文件擁有者,就是我,才能看與修改這個文件的內容,那麼即使其他人知道你有這個文件,不過由於你有設定適當的權限,所以其他人自然也就無法知道該文件的內容。

2.羣組概念

舉例來說,假設有兩組專題生在我的主機裏面,每組的組員之間必須要能夠互相修改對方的數據,但是其他組的組員則不能看到本組自己的文件內容,此時該如何是好?我可以經由簡易的文件權限設定,就能限制非自己團隊(也就是羣組)的其他人不能夠閱覽內容,但可以讓自己的團隊成員可以修改我所建立的文件!

3.其他人的概念

除了上述所述的文件擁有者和羣組以外的所有用戶都可以被稱爲其他人。(除了root)

4.Linux用戶身份與羣組記錄的文件

在 Linux系統當中,默認的情況下,所有的系統上的賬號與一般身份使用者,還有那個root的相關信息,都是記錄在/etc/passwd這個文件內的。至於個人的密碼則是記錄在/etc/ shadow這個文件下此外, Linux所有的組名都紀錄在/etc/group內。

二.Linux文件權限概念

1.Linux文件屬性

首先使用su切換身份成爲root後,輸入命令 ls -al,結果如下

ls是list的意思,重點在顯示文件的文件名與相關屬性。而選項 -al 則表示列出所有的文件詳細的權限與屬性(包含隱藏文件,就是文件名第一個字符爲.的文件)。如上所示,在你第一次以root身份登入 Linux時,如果你輸入上述指令後,應該有上列的幾個東西,先解釋一下上面七個字段個別的意思

第一欄代表這個文件的類型與權限 :

第一個字符代表這個文件是目錄、文件或鏈接文件等等:

  • 當爲d則代表目錄
  • 當爲-則代表文件
  • 當爲I則表示爲連結檔
  • 當爲b則表示爲裝置文件裏面的可供儲存的接口設備(可隨機存取裝置)
  • 當爲c則表示爲裝置文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)

接下來的字符中,以三個爲一組,且均爲 rwx 的三個參數的組合。其中,r代表可讀(read)、w代表可寫(write)、x代表可執行( execute)。要注意的是,這三個權限的位置不會改變,如果沒有權限,就會出現減號 - 而已。

  • 第一組爲文件擁有者可具備的權限
  • 第二組爲加入此羣組之賬號的權限
  • 第三組爲非本人且沒有加入本羣組之其他賬號的權限

第二欄表示有多少檔名連結到此節點(i-node): 每個文件都會將他的權限與屬性記錄到文件系統的 i-node中,不過,我們使用的目錄樹卻是使用文件名來記錄,因此每個檔名就會連結到一個i-node。這個屬性記錄的,就是有多少不同的檔名連結到相同的一個i-node號碼。

第三欄表示這個文件或目錄的擁有者賬號

第四欄表示這個文件的所屬羣組

第五欄爲這個文件的容量大小,默認單位爲 bytes

第六欄爲這個文件的建檔日期或者是最近的修改日期

第七欄爲這個文件的檔名:這個字段就是檔名了。比較特殊的是:如果檔名之前多一個 . ,則代表這個文件爲隱藏檔,你可以使用 ls 及 ls -a 這兩個指令去感受下二者的不同。

三.如何改變文件屬性與權限

如何修改一個文件的屬性與權限呢?我們先介紹幾個常用於羣組、擁有者、各種身份的權限之修改的指令,如下所示:

chgrp //改變文件所屬羣組
chown //改變文件擁有者
chomd //改變文件的權限等

1.改變所屬羣組 chgrp

這個指令就是 change group的縮寫,要被改變的組名必須要在/etc/ group文件內存在才行,否則就會顯示錯誤!

假設你已經是root的身份了,那麼在你的家目錄內有一個名爲 initial-setup-ks.cfg的文件,如何將該文件的羣組改變一下呢?假設你已經知道在/etc/ group裏面已經存在一個名爲 users的羣組,但是testing這個羣組名字就不存在/etc/goup當中了,此時改變羣組成爲 users與 testing分別會有什麼現象發生呢?

我們發現文件的羣組被改成 users了,但是要改成 testing的時候,就會發生錯誤。

2.改變文件擁有者 chown

改變擁有者就是 change owner,就是 chown這個指令的用途,要注意的是,用戶必須是已經存在系統中的賬號,也就是在/etc/ passwd這個文件中有紀錄的用戶名稱才能改變。chown的用途還滿多的,他還可以順便直接修改羣組的名稱呢!此外,如果要連目錄下的所有次目錄或文件同時更改文件擁有者的話,直接加上-R的選項即可!我們來看看語法與範例。

3.改變權限 chmod

文件權限的改變使用的是 chmod這個指令,但是,權限的設定方法有兩種,分別可以使用數字或者是符號來進行權限的變更。我們就來談一談:

(1)數字類型改變文件權限

我們可以使用數字來代表各個權限,各權限的分數對照表如下:

r : 4
w : 2
x : 1

每種身份各自的三個權限(rwx)分數是需要累加的,例如當權限爲: -rwxrwx--- 分數則是

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = --- = 0+0+0 = 0

所以當我們設定權限的變更時,該文件的權限數字就是770。變更權限的指令 chmod的語法是這樣:

舉例來說,如果要將.bashrc這個文件所有的權限都設定啓用,那麼就下達:

那如果要將權限變成-rwxr-xr--呢?那麼權限的分數就成爲[4+2+1][4+0+1][4+0+0]=754.所以你需要下達

chomd 754 filename

(2)符號類型改變文件權限

從之前的介紹中我們可以發現,基本上就九個權限分別是(1)user(2) group(3) others三種身份啦!那麼我們就可以由u,g,o來代表三種身份的權限!此外,a則代表all亦即全部的身份!那麼讀寫的權限就可以寫成r,w,x.也就是可以使用底下的方式來看

假如我們要設定一個文件的權限成爲 -rwxr-xr-x 時

那麼假如是  -rwxr-xr-- 這樣的權限呢?可以使用

chomd u=rwx,g=rx,o=r filename

來設定。此外,如果我不知道原先的文件屬性,而我只想要增加 .bashrc這個文件的每個人均可寫入的權限,那麼我就可以使用

而如果是要將權限去掉而不更動其他已存在的權限呢?例如要拿掉全部人的可執行權限,則:

四.目錄與文件之權限意義

1.權限對文件的重要性

文件是實際含有數據的地方,包括一般文本文件、數據庫內容文件、二進制可執行文件等等。因此,權限對於文件來說,他的意義是這樣的:

  • r(read):可讀取此一文件的實際內容,如讀取文本文件的文字內容等。
  • w(write):可以編輯、新增或者是修改該文件的內容(但不含刪除該文件)。
  • x( eXecute):該文件具有可以被系統執行的權限。

在Windows底下一個文件是否具有執行的能力是由擴展名來判斷的,例如:exe,bat,com等等,但是在Linux底下,我們的文件是否能被執行,則是藉由是否具有x這個權限來決定的!跟檔名是沒有絕對的關係的!

至於最後一個w這個權限呢?當你對一個文件具有w權限時,你可以具有寫入編輯/新增/修改文件的內容的權限,但並不具備有刪除該文件本身的權限!

2.權限對目錄的重要性

文件是存放實際數據的所在,目錄主要的內容在記錄文件名列表,文件名與目錄有強烈的關連。所以如果是針對目錄時,那個r,w,x對目錄是什麼意義呢?

  • ·r:表示具有讀取目錄結構列表的權限,所以當你具有讀取(r)一個目錄的權限時,表示你可以查詢該目錄下的文件名數據。所以你就可以利用ls這個指令將該目錄的內容列表顯示出來。
  • w:這個可寫入的權限對目錄來說,表示你具有異動該目錄結構列表的權限,也就是底下這些權限
    • 建立新的文件與目錄
    • 刪除已經存在的文件與目錄(不論該文件的權限爲什麼)
    • 將已存在的文件或目錄進行更名
    • 搬移該目錄內的文件、目錄位置
  • x:目錄的x代表的是用戶能否進入該目錄成爲工作目錄的用途!所謂的工作目錄就是你目前所在的目錄。舉例來說,當你登錄 Linux時,你所在的家目錄就是你當下的工作目錄。

3.文件和目錄權限的對比

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