- 第一篇:Linux 的規劃與安裝
- 第二篇:Linux 檔案、目錄與磁碟格式
- Chapter 05 Linux 的檔案權限與目錄配置
- Chapter 06 Linux 的檔案與目錄管理
- Chapter 07 Linux 磁碟與檔案系統管理
- Chapter 08 Linux 檔案與檔案系統的壓縮、打包與備份
- 第三篇:學習 Shell 與 Shell Scripts
- 第四篇:Linux 使用者管理
- 第五篇:Linux 系統管理員
5.1 使用者與群組
- 檔案擁有者
- 群組概念
- 使用者:我們家有四個人,媽、爸、我、妹,我跟妹妹各有自己的房間,妹妹可以進我的房間,但不能翻我的抽屜,因為抽屜可能有情書(?)之類的私人物品。
- 群組:大家共同擁有客廳,所以客廳的玩意兒大家都可以用,我們在同一個群組。
- 其他人概念:今天有個人叫小花,他是花家的人,但我們認識小花,請他進來家裡,他是藉由認識我們家的人進來家裡,他屬於其他人。
- 萬能的神:root
Linux 使用者身份與群組紀錄的檔案:預設情況,帳號與使用者,還有 root 相關資訊,都是記錄在 /etc/passwd
檔案內。個人密碼則是記在 etc/shadow
檔案下。此外群組名稱記錄在 /etc/group
內。
5.2 Linux 檔案權限概念
當你看到 Permission deny 時,別擔心,肯定是權限設定錯誤。
5.2.1 Linux 檔案屬性
輸入指令 $ls -al
,你會看到如下
分別代表的意思:
- 檔案類型與權限(permission):總共有十個字元,分別代表的意思如下
- 第一個字元代表「目錄、檔案或連結檔」:
- [ d ] 目錄
- [ - ] 檔案
- [ l ] 連結檔
- [ b ] 裝置檔案中可供儲存的週邊設備
- [ c ] 裝置檔中的序列埠設備
- 接下來字元,以三個為一組,總共三組,均為「rwx」的組合。
- 三組分別為:
- 檔案擁有者可具備的權限
- 加入此群組之帳號的權限
- 非本人且沒有加入本群組之其他帳號的權限
- rwx 含義:
- [ r ] 可讀 read
- [ w ] 可寫 write
- [ x ] 可執行 execute
- 如果沒有權限,會出現減號 [ - ]
- 三組分別為:
- 第一個字元代表「目錄、檔案或連結檔」:
- 連結數:多少檔名連結到此節點(i-node)
- 檔案擁有者:這個檔案或目錄的擁有者帳號
- 檔案所屬群組
- 檔案容量:預設為 bytes
- 檔案最後被修改時間
- 檔名:如果檔名之前多一個「 . 」,代表這個檔案為隱藏檔
Linux 檔案權限的重要性:
- 系統保護的功能
- 團隊開發軟體或資料共用的功能
- 未將權限設定妥當的危害
5.2.2 如何改變檔案屬性與權限
- chgrp:改變檔案所屬群組 change group
- chown:改變檔案擁有者 change owner
- chmod:改變檔案的權限,SUID, SGID, SBIT 等等屬性
- 數字類型:基本權限有九個,分別是 owner/group/others,三種身份各有自己的 read/write/execute 權限。
- 範例:「-rwxrwxrwx」
- 分別代表分數 r: 4, w: 2, x: 1
- 每種身份的分數 owner: 4+2+1 = 7 ; group: 4+2+1 = 7 ; others: 0+0+0 = 0
- 所以我們設定的權限就是 770
chmod 770 [your file or folder]
- 符號類型:藉由 u, g, o 來代表三種身份(user, group, others)的權限,此外 a 代表 all,即全部的身份。
- 範例:若我們要設定權限為「-rwxr-xr-x」
chmod u=rwx,go=rx [you file or folder]
- 常用
chmod a+w [file name or folder]
&chmod a-w [file name or folder]
一次改全部
- 數字類型:基本權限有九個,分別是 owner/group/others,三種身份各有自己的 read/write/execute 權限。
5.2.3 目錄與檔案之權限意義
- 權限對檔案的重要性:檔案是實際含有資料的地方,權限對於檔案的意義如下
- r (read):可讀取此檔案的實際內容
- w (write):可編輯、新增、修改該檔案的內容(但不包含刪除該檔案)
- x (execute):該檔案具有可被系統執行的權限
- 權限對目錄的重要性:目錄紀錄檔名清單
- r (read contents in directory):讀取目錄結構清單的權限
- w (modify contents of directory):異動該目錄結構清單的權限
- 建立新的檔案目錄
- 刪除已存在的檔案與目錄
- 將已存在的檔案或目錄進行更名
- 搬移該目錄內的檔案、目錄位置
- x (access directory):使用者能否進入該目錄成為工作目錄,簡單來說能否 cd 進目錄
5.2.4 Linux 檔案種類與副檔名
- 檔案種類
- 正規檔案(regular file)
- 純文字檔(ASCII)
- 二進位檔(Binary)
- 資料格式檔(Data)
- 目錄(directory)
- 連結檔(link)
- 設備與裝置檔(device)
- 區塊(block)設備檔
- 字元(character)設備檔
- 資料接口檔(sockets)
- 資料傳送檔(FIFO, pipe)
- 正規檔案(regular file)
- Linux 檔案副檔名
- .sh:腳本或批次檔(scripts)
- Z, .tar, .tar.gz, .zip, .tgz:經過打包的壓縮檔
- .html, .php:網頁相關檔案
- Linux 檔案長度限制:單一檔案或目錄的最大容許檔名為 255 bytes,以一個 ASCII 英文佔用一個 bytes 來說,則大約可達 255 個字元長度。若是以每個中文字佔用 2 bytes 來說,最大檔名大約 128 個中文字
- Linux 檔案名稱的限制:避免特殊字元
5.3 Linux 目錄配置
5.3.1 Linux 目錄配置的依據:FHS
Filesystem Heirarchy Standard(FHS):讓使用者可以了解到已安裝軟體通常放置於哪個目錄下。
- 可分享的:可以分享給其他系統掛載使用的目錄
- 不可分享的:自己機器上面運作的裝置檔案或者是與程序有關的 socket 檔案
- 不變的:有些資料不常變動,隨著 distribution 而不變動
- 可變動的:經常改變的資料
FHS 針對目錄樹架構,僅定義出三層目錄底下應該放置什麼資料:
- /(root,根目錄):與開機系統有關
- /usr(unix software resource):與軟體安裝/執行有關
- /var(variable):與系統運作過程有關
1. 根目錄(/)意義與內容
根目錄是整個系統最重要的目錄,不但所有目錄都是由根目錄衍伸出來的,同時根目錄也與開機/還原/系統修復等動作有關。
FHS 標準建議:根目錄所在分割槽應該越小越好,且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。如此不但效能較佳,根目錄所在的檔案系統也較不容易發生問題。
- FHS 要求必須要存在的目錄
- /bin:單人維護模式下還能夠被操作的指令
- /boot:開機會使用到的檔案(Linux kernel 常用檔名為:vmlinuz)
- /dev:裝置與週邊設備
- /etc:主要設定檔案。FHS 建議不要放置 binary。
- /lib:開機時會用到的函示庫,以及 /bin 或 /sbin 底下會呼叫的函示庫
- /media:可移除裝置
- /mnt:暫時掛載某些額外裝置,遠古時期用途 /media 相同
- /opt:第三方協力軟體放置的目錄
- /run:系統開機後所產生的各項數據放置
- /sbin:開機、修復、還原系統所需要的指令
- /srv:service 縮寫,網路服務啟動之後,服務所需要取用的資料目錄
- /tmp:暫存區
- /usr:第二層 FHS 設定,後續介紹
- /var:第二層 FHS 設定,主要為放置變動性資料,後續介紹
- FHS 建議可以存在的目錄
- /home:系統預設的使用者 home directory
- /lib < qual >:存放與 /lib 不同格式的二進位函式庫
- /root:root 的家目錄
- 其他
- /lost+found:檔案系統發生錯誤時,遺失片段放置處
- /proc:虛擬檔案系統
- /sys:與 /proc 相似
2. /usr 的意義與內容
依據 FHS 定義,/usr 裡面放置的資料屬於可訪想與不可變動的(shareable, static)。
- FHS 要求必須要存在的目錄
- /usr/bin/:一般用戶能夠使用的指令
- /usr/lib/:與 /lib 功能相同
- /usr/local/:系統管理員安裝自己下載的軟體,建議安裝到此目錄
- /usr/sbin/:非系統正常運作所需要的指令
- /usr/share/:主要放置唯讀架構的資料檔案,也包括共享文件
- FHS 建議可以存在的目錄
- /usr/games/:遊戲相關資料
- /usr/include/:c/c++ 程式語言的 header 與 include 放置處
- /usr/libexec/:不被一般使用者慣用的執行黨或腳本
- /usr/lib < qual >/:與 /lib < qual > 相同,/lib < qual > 連結到此目錄中
- /usr/src/:一般原始碼建議放置處
3. /var 的意義與內容
如果 /usr 是安裝時會佔用較大硬碟容量的目錄,/var 就是系統運作後才會漸漸佔用硬碟容量的目錄。
- FHS 要求必須要存在的目錄
- /var/cache/:應用程式的暫存檔
- /var/lib/:程式執行過程中,需要使用到的資料檔案放置處
- /var/lock/:某些裝置或檔案一次只能被一個應用程式所使用,因此會需要將該裝置上鎖的功能
- /var/log/:重要到不行!!!登錄檔放置的目錄
- /var/mail/:個人電子郵件信箱
- /var/run/:某些程式啟動後 PID 放置處
- /var/spool/:佇列資料放置處
5.3.2 目錄樹
- 目錄樹的起點為根目錄(/, root)
- 每一個目錄不只能使用本地端 partition 的檔案系統,也可以使用網路上的 filesystem
- 每一個檔案在此目錄樹中的檔名都是獨一無二的
5.3.3 絕對路徑與相對路徑
- 絕對路徑:由根目錄開始寫起的檔名或目錄名稱
- 相對路徑:相對於目前路徑的檔名寫法
資料來源
鳥哥的 Linux 私房菜: http://linux.vbird.org/linux_basic/