「Linux」鳥叔私房菜第五章讀書筆記

王__12發表於2018-08-18

第五章 Linux 的檔案許可權與目錄配置

5.1 使用者與群組

  • 1.檔案擁有者 User
  • 2.群組概念 Group
  • 3.其他人的概念 Others

5.2 Linux檔案屬性

列出當前目錄下的所有檔案及目錄

ls -ah

5.2.1 Linux 檔案屬性

輸出結果:

-rw-r--r-- 1 root root 2494 7月  23 21:40 weather_test.py

1.第一個字元代表這個檔案是『目錄、檔案或連結檔案等等』:

  • 當為[ d ]則是目錄;
  • 當為[ – ]則是檔案;
  • 若是[ l ]則表示為連結檔(link file);
  • 若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);
  • 若是[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)

2.接下來的字元中,以三個為一組,且均為『rwx』 的三個引數的組合。其中,[ r ]代表可讀(read)、[ w ]代表 可寫(write)、[ x ]代表可執行(execute)。 要注意的是,這三個許可權的位置不會改變,如果沒有許可權,就會出現減號[ – ]而已。

  • 第一組為『檔案擁有者可具備的許可權』;
  • 第二組為『加入此群組之賬號的許可權』;
  • 第三組為『非本人且沒有加入本群組之其他賬號的許可權』。

3.第二欄表示有多少檔名連結到此節點(i-node):
4.第三欄表示這個檔案(或目錄)的『擁有者賬號』
5.第四欄表示這個檔案的所屬群組
6.第五欄為這個檔案的容量大小,預設單位為bytes
7.第六欄為這個檔案的建檔日期或者是最近的修改日期
8.第七欄為這個檔案的檔名

  • 如果檔名之前多一個『 . 』,則代表這個檔案為『隱藏檔』

5.2.2 如何改變檔案屬性與許可權

  • chgrp :改變檔案所屬群組
  • chown :改變檔案擁有者
  • chmod :改變檔案的許可權

1.改變所屬群組, chgrp

[root@study ~]# chgrp [-R] dirname/filename ...
選項與引數:
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案、目錄
   都更新成為這個群組之意。常常用在變更某一目錄內所有的檔案之情況。
範例:
[root@study ~]# chgrp users initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root users 1864 May 4 18:01 initial-setup-ks.cfg [root@study ~]# chgrp testing initial-setup-ks.cfg
chgrp: invalid group: `testing` <== 發生錯誤訊息囉~找不到這個群組名~

注意:要被改變的組名必須要在/etc/group 檔案記憶體在才 行,否則就會顯示錯誤!

2.改變檔案擁有者,chown

[root@study ~]# chown [-R] 賬號名稱 檔案或目錄
[root@study ~]# chown [-R] 賬號名稱:組名 檔案或目錄
選項與引數:
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都變更
範例:將 initial-setup-ks.cfg 的擁有者改為 bin 這個賬號: [root@study ~]# chown bin initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 bin users 1864 May 4 18:01 initial-setup-ks.cfg
範例:將 initial-setup-ks.cfg 的擁有者與群組改回為 root:
[root@study ~]# chown root:root initial-setup-ks.cfg [root@study ~]# ls -l
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg

使用者必須是已經存在系統中的賬 號,也就是在/etc/passwd 這個檔案中有紀錄的使用者名稱稱才能改變。
chown 也可以使用『chown user.group file』,亦即在擁有者與群組間加上小數
點『 . 』也行! 不過很多朋友設定賬號時,喜歡在賬號當中加入小數點(例如 vbird.tsai 這樣的賬號格式),這就會 造成系統的誤判了! 所以我們比較建議使用冒號『:』來隔開擁有者與群組啦!此外,chown 也能單純的修改所屬 群組呢! 例如『chown .sshd initial-setup-ks.cfg』就是修改

3.改變許可權, chmod
數字型別改變檔案許可權,各許可權的分數對照表如下:

  • r:4
  • w:2
  • x:1

舉個例子:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0
[root@study ~]# chmod [-R] xyz 檔案或目錄
選項與引數:
xyz : 就是剛剛提到的數字型別的許可權屬性,為 rwx 屬性數值的相加。
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更

符號型別改變檔案許可權 ,就可以藉由 u, g, o 來代表三種身份的許可權!此外, a 則代表 all 亦即全部
的身份!那麼讀寫的許可權就可以寫成 r, w, x 囉

[root@study ~]# chmod u=rwx,go=rx .bashrc
# 注意喔!那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空格符! [root@study ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc

5.2.3 目錄與檔案之許可權意義

1.許可權對檔案的重要性

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

2.許可權對目錄的重要性

  • r (read contents in directory):
    表示具有讀取目錄結構列表的許可權,所以當你具有讀取(r)一個目錄的許可權時,表示你可以查詢該目錄下的 檔名資料。 所以你就可以利用 ls 這個指令將該目錄的內容列表顯示出來
  • w (modify contents of directory):
    這個可寫入的許可權對目錄來說,是很了不起的! 因為他表示你具有異動該目錄結構列表的許可權,也就是底 下這些許可權:

    • 建立新的檔案與目錄;
    • 刪除已經存在的檔案與目錄(不論該檔案的許可權為何!)
    • 將已存在的檔案或目錄進行更名;
    • 搬移該目錄內的檔案、目錄位置。
  • x (access directory):
    目錄只是記錄檔名而已,總不能拿來執行吧?沒錯!目錄不可以被執 行,目錄的 x 代表的是使用者能否進入該目錄成為工作目錄的用途! 所謂的工作目錄(work directory)就是你 目前所在的目錄啦!舉例來說,當你登入 Linux 時, 你所在的家目錄就是你當下的工作目錄。而變換目錄 的指令是『cd』(change directory)囉!
元件 內容 迭代物件 r w x
檔案 詳細資料 data 檔案資料夾 讀到檔案內容 修改檔案內容 執行檔案內容
目錄 文件名 可分類抽屜 讀到檔名 修改檔名 進入該目錄的許可權(key)

5.2.4 Linux 檔案種類與副檔名

5.3 Linux目錄配置

5.3.1 Linux 目錄配置的依據–FHS

Filesystem Hierarchy Standard (FHS)標準

5.3.2 目錄樹(directory tree)

ls -al /

5.3.3 絕對路徑與相對路徑

  • 絕對路徑:由根目錄(/)開始寫起的檔名或目錄名稱, 例如 /home/dmtsai/.bashrc;
  • 相對路徑:相對於目前路徑的檔名寫法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正開頭不是 /就屬於相對路徑的寫法
  • . :代表當前的目錄,也可以使用 ./ 來表示;
  • .. :代表上一層目錄,也可以 ../ 來代表。


相關文章