為什麼我們會需要檔案權限呢?
因為 Linux 是一個多人多功的系統,有些檔案只希望在特定的範圍下暴露。
於是我們就需要一個系統來管理。
Linux 檔案權限
Linux 檔案權限主要可以分成下面三類:
- User
- Group
- 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 。
我們前面說到會把剩下的字元分成三組,這三組也代表不同的身份。
- 擁有者
- 群組內的成員
- 其他人
舉例來說 drwxrwx---
代表什麼意思呢?
這代表這個檔案是個目錄(d)
它的擁有者有全部的權限(rwx)
群組成員也擁有全部的權限(rwx)
Others 沒有任何權限
修改檔案權限
知道了有這些權限的時候,我們來看看有什麼指令可以改變權限。
主要有兩種做法:
- 數字類型
- 符號類型
數字類型
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
結語
以上內容都源自於鳥哥的書。感謝鳥哥讚嘆鳥哥。