Linux 檔案權限與目錄配置


為什麼我們會需要檔案權限呢?
因為 Linux 是一個多人多功的系統,有些檔案只希望在特定的範圍下暴露。
於是我們就需要一個系統來管理。

Linux 檔案權限

Linux 檔案權限主要可以分成下面三類:

  1. User
  2. Group
  3. Other

以上的這些資訊又可以在下面找到一些相關的檔案

etc/passwd -> 管理所有帳號,包括 root 與一般使用者
etc/shadow -> 管理個人密碼等相關資訊
etc/group -> 管理 group 相關資訊

我們可以透過 ls -l 來看到各種檔案的權限資訊

-rx-------. 1 lester family 52 Jun 1 11:23 .bashrc

權限資訊會以 -rwxrwx---方式來顯示
共有十個字元

第一個字元代表該檔案的屬性,比如說:

  • d : 目錄
  • - : 檔案
  • l : link file
  • b : 可供儲存的週邊設備
  • c : 裝置檔內的序列埠設備(如滑鼠鍵盤等)

接下來的九個字元我們會拆成三組,每組都會依 r(-), w(-), x(-) 順序來表示。
什麼意思呢?

  • r : read
  • w : write
  • x : execute
  • - : no permission

所以假如說當出現這個 rw- 的意思代表,該身份對於該檔案的權限為 r, w 。

我們前面說到會把剩下的字元分成三組,這三組也代表不同的身份。

  1. 擁有者
  2. 群組內的成員
  3. 其他人

舉例來說 drwxrwx--- 代表什麼意思呢?
這代表這個檔案是個目錄(d)
它的擁有者有全部的權限(rwx)
群組成員也擁有全部的權限(rwx)
Others 沒有任何權限

修改檔案權限

知道了有這些權限的時候,我們來看看有什麼指令可以改變權限。

主要有兩種做法:

  1. 數字類型
  2. 符號類型

數字類型

rwx = 4 + 2 + 1 = 7
r-x = 4 + 0 + 1 = 5

使用範例

chmod 777 .bashrc

上面的指令就代表給檔案所有人、群組所有人、Others 全部的權限。

符號類型

  • u(user), g(group), o(others), a(all) 代表身份
  • +, -, =
  • r, x, w

使用範例

chmod g=rx .bashrc

把 group 的權限設定為 read, execute

chmod a-w .bashrc

把所有人的 write 權限拿掉(其他權限不變)

權限對於目錄與檔案的意義

  • 檔案的 rwx:可讀,可寫,可執行(對 linux 來說,所有檔案都可以執行無關副檔名,但執行結果如何與該檔案本身有關)
  • 目錄的 rwx:可讀,可建立、刪除、移動、更名檔案,可進入該資料節

這裡要特別注意一點,如果該使用者對目錄有 write 的權限的話,代表他可以刪除該資料夾,即使他沒有該資料夾內檔案的權限

Linux 目錄配置

/ 根目錄:最重要的目錄,所有其他的目錄都是由他衍伸而來。

絕對路徑與相對路徑

./ 代表當前資料夾 ../ 代表上一層資料夾

  • 絕對路徑:任何 / 開頭的 ex: /home/lester/xxx.sh
  • 相對路徑:相對於當前資料夾 ex: ../pal

使用範例

假設你當前在 home/lester/pal 你想要切換到 home/lester/aoe2 要如何下指令?

  • 絕對路徑:cd /home/lester/aoe2
  • 相對路徑:cd ../aoe2

結語

以上內容都源自於鳥哥的書。感謝鳥哥讚嘆鳥哥。


comments powered by Disqus