1 / 86

檔案系統與權限設定

第 19 章. 檔案系統與權限設定. 本章重點. 19-1 認識系統的目錄 19-2 檔案系統的結構  19-3 設定目錄與檔案使用權限  19-4 使用者與群組的權限關係  19-5 連結與符號連結  19-6 SELinux -更加安全的權限控. 前言. 當所有人都把目光投注在作業系統身上時 , 卻常常忘記了一個極為重要的配角 - 檔案系統。檔案系統的優劣與否 , 和作業系統的執行效率、穩定性以及可靠度息息相關。

morton
Download Presentation

檔案系統與權限設定

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 19 章 檔案系統與權限設定

  2. 本章重點 • 19-1 認識系統的目錄 • 19-2 檔案系統的結構  • 19-3 設定目錄與檔案使用權限  • 19-4 使用者與群組的權限關係  • 19-5 連結與符號連結  • 19-6 SELinux-更加安全的權限控

  3. 前言 • 當所有人都把目光投注在作業系統身上時, 卻常常忘記了一個極為重要的配角 - 檔案系統。檔案系統的優劣與否, 和作業系統的執行效率、穩定性以及可靠度息息相關。 • 在本章裡我們會說明各個系統目錄的用途、檔案系統的架構、檔案與目錄的權限設定, 以及檔案的連結與符號連結, 讓您更了解 Linux 的檔案系統。

  4. 19-1 認識系統的目錄 • 在安裝 Linux 的磁碟中會有許多系統預設的目錄, 這些目錄依照不同的用途而放置特定的檔案。在第 7 章我們已經簡單介紹過一些常用的目錄, 以下將詳細說明每一個預設目錄的功用: • /:根目錄, 包含整個 Linux 系統的所有目錄和檔案。 • /bin:此目錄放置操作系統時, 所需使用的各種指令程式。例如 cp、rpm、kill、tar、mv、rm與 ping等等常用指令, 還有各種不同的 shell, 如 bash、zsh、tcsh 等等。

  5. 認識系統的目錄 • /boot:系統啟動時必須讀取的檔案, 包括系統核心在內。 • /dev:存放周邊設備代號的檔案。例如硬碟的 /dev/hda、終端機的 /dev/tty0 等等。這些檔案比較特殊, 它們實際上都指向所代表的周邊設備。 • /etc:放置與系統設定、管理相關的檔案。例如記錄帳號名稱的 passwd 檔、投影密碼檔 shadow 都放在這裡。 • /etc/rc.d:這個目錄包含了開機或關機時所執行的 script 檔案。

  6. 認識系統的目錄 • /etc/X11:X Window 設定檔案的目錄。 • /home:此目錄預設用來放置使用者帳號的家目錄。 • /lib:放置一些共用的函式庫。 • /lib/modules:存放系統核心的模組。某些可被模組化的部份, 並不需要在編譯系統核心時放入核心本體, 避免核心過大導致效率低落。 • /lost+found:檔案系統發生問題時, Linux 會自動掃描磁碟試圖修正錯誤, 倘若找到遺失或錯誤的區段, 就會將這些區段轉成檔案存放於此目錄, 等候管理人員進一步處理。

  7. 認識系統的目錄 • /media:此目錄可用來做為光碟、軟碟片、隨身碟與其他分割區的自動掛載點。 • 在 Fedora Core 1 及 Fedora Core 2 中, 光碟、軟碟片、隨身碟與其他分割區的掛載點是放在 /mnt 目錄下。自 Fedora Core 3 以後則是在 /media 目錄下。 • /mnt:此目錄可以做為手動掛載其他分割區的掛載點。

  8. 認識系統的目錄 • /proc:系統核心和執行程序之間的資訊, 比如說執行 ps、free等指令時所看到的訊息, 就是從這裡讀取。這目錄內的檔案並非真的存在, 使用者看到的是如同幻影般的虛擬檔案。 • /root:系統管理者專用的目錄, 亦即 root 帳號的家目錄。 • /sbin:此目錄存放啟動系統需執行的程式, 例如 fsck、init、grub與 swapon等。

  9. 認識系統的目錄 • /tmp:供全部使用者暫時放置檔案的目錄。系統預設可讓所有使用者讀取、寫入和執行檔案, 所有使用者皆能暫時利用此目錄存放檔案。這裡也是暫存檔的目錄, 某些程式在執行中所產生的臨時檔案, 會存放在這個目錄內。 • /usr:此目錄包括許多子目錄, 用來存放系統指令、程式等資訊。 • /usr/bin:放置使用者可以執行的指令程式, 如 find、free、gcc等等。

  10. 認識系統的目錄 • /usr/local:此目錄用來存放自行編譯的軟體, 以便與使用 RPM 安裝的軟體互相區隔, 避免兩個套件系統發生衝突的情況。 • /usr/share/doc:存放各種文件的目錄。 • /usr/share/man:放置多種線上說明文件。 • /usr/src:存放原始碼的地方, Linux 系統核心的原始碼就放在這裡。

  11. 認識系統的目錄 • /var:系統執行時, 內容經常變動的資料或暫存檔, 都會放置在這個目錄裡。包括使用者的郵件檔案、記載系統活動過程的記錄 (log) 檔、列印工作的佇列檔、暫存檔及系統執行程式的 PID (Process ID, 程序識別碼) 記錄等等。Apache 網頁目錄與 FTP 目錄等伺服器的專用目錄也位於此處。

  12. 認識系統的目錄 • /var/tmp:前面介紹的 /tmp 目錄除了放置所有使用者暫時存放的檔案之外, 還提供程式產生的暫存檔使用, 因此經常會因堆放許多檔案, 而顯得非常雜亂。管理者通常會定時清理 /tmp 目錄, 維護磁碟空間的整潔。假如不想將某些檔案淌入 /tmp 目錄的混水之中, 避免殃及池魚而遭管理者刪除, 可以選擇存放在這裡, 雖然還是一個暫存目錄, 至少環境清幽, 檔案比較不會被無辜砍殺。

  13. 認識系統的目錄

  14. 實務經驗談 • 使用 du -sh目錄名稱指令可以查詢該目錄所使用的硬碟空間, 可當作您在分割硬碟時的依據。例如, 執行以下指令檢查 /var 目錄所使用的硬碟空間:

  15. 19-2 檔案系統的結構 • 本 Linux 發行版預設採用 ext4 檔案系統, ext4 是 ext3 的下一代, 而 ext3 則是 ext2 的下一代, 所以我們將先介紹 ext3 與 ext2 的差別。ext3 與 ext2 的相異處在於 ext3 是一個日誌式檔案系統(Journal File System), 也就是在原來的 ext2 的格式下, 再加上日誌功能。

  16. 19-2 檔案系統的結構 • 日誌式檔案系統最大的優點在於提供了更好的安全性。ext3 檔案系統會將整個磁碟所做過的更動, 像寫日記一樣完整的記錄下來。一旦發生非預期的當機狀況, 會在下次啟動時, 自動檢查已記錄的日誌, 然後依照日誌記錄的動作再做一次, 將系統恢復到當機前的正常狀態。

  17. 檔案系統的結構 • 而同樣的情況若發生在 ext2 檔案系統時, 便需要辛苦地執行 fsck 指令檢查與修復整個檔案系統。現在動輒數十 GB 的磁碟空間, 一旦不正常關機, 便要耗費相當多的時間來檢查及修復檔案系統, 且不能百分之百保證所有的資料都不會流失。

  18. 檔案系統的結構 • 因此, 採用 ext3 可讓資料更具安全性, 且可大幅減少不正常關機後所花費的系統修復時間, 讓資料的使用更有效率。再者, 由於其與 ext2 的架構完全相同, 唯一的相異處僅在於多出一個日誌檔案來紀錄磁碟的狀態, 所以兩者間的轉換十分容易, 使用者不必經歷繁瑣的資料備份動作, 便可以將 ext2 更新為 ext3。

  19. 檔案系統的結構 • Fedora 從第 10 版開始提供新一代的 ext4 檔案系統, 經過了穩定性的測試後, 從第 11 版開始, ext4 取代了 ext3, 成為 Fedora 預設的檔案系統。ext4 是從 ext3 改良而來, 完全向下相容舊的 ext3 檔案系統, 而且使用 ext3 的分割區不需重新格式化, 可以直接轉換為 ext4 檔案系統。

  20. 檔案系統的結構 • 與原本 ext3 相比, ext4 可以支援更大的硬碟, 單一檔案的最大容量也擴大為 16 TB, 一個目錄下可建立的子目錄總數量也不再有限制。另外, ext4 大幅地加快了檔案讀寫的速度, 而且可以減少檔案不連續存放的問題, 避免系統使用越久, 檔案越來越不連續, 讀寫越來越慢的問題。

  21. 如何將 ext3 轉換為 ext 4? • 在 ext4 檔案系統問世之前, 許多 Linux 發行版都採用 ext3 做為預設的檔案系統 (或者支援此檔案系統)。在安裝此 Linux 發行版時, 您當然也可以選擇使用 ext3 檔案系統。 • 若您硬碟中的某個分割區原本是使用 ext3 檔案系統, 現在想將其改為 ext4, 該怎麼做呢?只要使用 tune2fs 指令, 就可以將檔案系統由 ext3 轉換為 ext4。不需要重新格式化, 就能使用新的檔案系統。 • 假設我們現在要將 /dev/sda3 的檔案系統由 ext3 轉換為 ext4, 可如下操作 :

  22. 如何將 ext3 轉換為 ext 4?

  23. 如何將 ext3 轉換為 ext 4? • 建立日誌之後, 請修改 /etc/fstab 檔: • 重新啟動後, 該分割區就開始使用 ext4 檔案系統了!

  24. ext4 使用的 inode 檔案結構 • ext4、ext3 與 ext2 檔案系統所使用的檔案結構相同, 稱為 inode (index node)。它用來記錄檔案的類型、大小、權限、擁有者、檔案連結的數目等屬性, 以及指向資料區塊 (block) 的指標 (pointer):

  25. ext4 使用的 inode 檔案結構

  26. ext4 使用的 inode 檔案結構 • inode 中存放的指標, 會指到磁碟中實際存放檔案資料的區塊。小的檔案僅需用到 direct blocks 的空間, 若檔案再大些則會用到 indirect blocks、double indirect blocks 或 triple indirect blocks。 • 由之前的說明可知, ext4 檔案結構中的 inode 記錄檔案屬性, 並不實際儲存檔案資料。存放檔案資料的地方, 是資料區塊。而在儲存檔案資料時, 每個檔案都會佔用一個 inode, 而且大多數的檔案最少都會佔用一個資料區塊。

  27. inode 的內容 • inode 裡面記錄了一些資訊, 包括檔案的權限、使用者識別碼、群組識別碼與檔案的大小等等: • 檔案模式(mode) :inode 會描述其所對應的資料類型, 這些資料可以是一個檔案、目錄、符號連結 (symbolic link) 或周邊設備代號 (包括儲存設備的分割區編號) 等。此外還有關於權限設定的資訊, 這在多人多工的作業系統中是極為重要的環節。 • 擁有者資訊(owner information):檔案或目錄擁有者的 UID 與 GID, 這些資訊和權限設定息息相關。

  28. inode 的內容 • 檔案大小(size):單位以 byte 計算。 • 時間戳記(timestamp):inode 對應之資料的最初建立時間與最後修改時間。

  29. inode 的內容 • 資料區塊位址(address of data block):存放檔案必定會佔用資料區塊, 且每個資料區塊都有其存在的位址。如果 inode 所對應的資料為實體檔案, 而非虛擬檔案 (如 /proc 目錄內的檔案), 則 inode 會指出這些位址, 讓系統得以順利找到檔案並使用它。一個 inode 能夠指向 12 個資料區塊, 如果 12 個資料區塊還放不下這個檔案, 它就會啟用間接指向指標(indirect pointer), 透過另一個資料區塊指向更多的資料區塊, 以便容納大型檔案。

  30. inode 的內容

  31. 19-3 設定目錄與檔案使用權限 • Linux 檔案系統中的目錄及檔案, 可依實際需要來設定讀取、寫入與執行等權限。以下我們就來瞭解檔案和目錄的權限設定, 首先請執行 ls -l指令, 看看現在的狀況:

  32. 設定目錄與檔案使用權限

  33. 權限的意義 • 執行 ls -l或 ls -al指令時, 第一欄共 10 個字元用來標示該檔案的屬性及權限:

  34. 權限的意義 • 由上圖中可以看出, 除了第一個字元標明檔案的屬性外, 每個檔案的權限, 都可以分別對該檔案的擁有者、同群組的使用者, 以及其他使用者這 3 種類別的人加以設定。以下我們便來仔細看看, 這些屬性及權限設定字元所代表的意義為何。

  35. 檔案屬性 • 上述 10 個字元中的第 1 個字元, 用於標示檔案屬性: • d:表示這是一個目錄。在 ext2/ext3/ext4 中, 目錄被視為一種特殊的檔案。 • -:表示這是一個普通的檔案。 • l:表示這是一個符號連結的檔案, 實際上指向另一個檔案, 詳見第 19-5 節。 • b、c:分別代表區塊設備和其他的周邊設備, 是特殊型態的檔案。 • s、p:這些檔案關係到系統的資料結構和管線, 通常很少見到。

  36. 一般權限 • 第 2~10 字元當中每 3 個為一組, 分別標示不同使用者的權限。關於這 3 個一組共 9 個字元, 其代表意義如下: • r (Read, 讀取):對檔案而言, 使用者具有讀取檔案內容的權限;對目錄而言, 使用者擁有瀏覽目錄內容的權限 (但不一定可以讀取該目錄下的檔案, 是否可讀取, 仍取決於要讀取 "檔案" 的 "r" 讀取權限)。 • w (Write, 寫入):對檔案而言, 使用者具有修改檔案內容的權限;對目錄而言, 使用者具有刪除、或移動目錄內檔案的權限。

  37. 一般權限 • x (eXecute, 執行):對檔案而言, 使用者具有執行檔案的權限;對目錄而言, 使用者具進入目錄的權限 (但不一定可以瀏覽目錄, 是否可瀏覽, 取決於該目錄的 "r" 讀取權限)。 • -:表示不具有該項權限。

  38. 一般權限 • Linux 系統下的『 執行檔』 , 其副檔名毋需為 .exe, 只要加上可執行的權限, 該檔案就是執行檔。 • 我們舉些範例說明會更清楚: • -rwx------:檔案擁有者對檔案具有讀取、寫入與執行的權限。 • -rwxr--r--:檔案擁有者具有讀、寫與執行的權限, 同群組及其他使用者則具有讀取的權限。 • -rw-rw-r--:檔案擁有者與同群組的使用者對檔案具有讀寫的權限, 而其他使用者僅具有讀取的權限。

  39. 一般權限 • drwx--x--x:目錄擁有者具有讀、寫與進入目錄的權限, 同群組及其他使用者僅能進入該目錄, 卻無法讀取檔案列表。 • drwx------:除了目錄擁有者具有完整的權限之外, 同群組與其他使用者對該目錄沒有任何權限。

  40. 一般權限 • 每個使用者都擁有自己的家目錄, 這些目錄通常集中放置於 /home 目錄下, 這些家目錄的預設權限為 "drwx------", 表示目錄擁有者本身具備全部權限, 而同群組與其他使用者對該目錄則沒有任何權限:

  41. 一般權限 • 當我們以管理者帳號 (root) 執行 mkdir 指令建立目錄時, 新建目錄的權限預設為 "rwxr-xr-x", 使用一般使用者帳號執行 mkdir指令時, 新建目錄的權限則預設為 "rwxrwxr-x"。建好目錄後, 您可以視實際需求而定, 自行變更目錄的權限。

  42. 特殊權限 • 其實檔案與目錄的權限設定不只如此, 還有所謂的特殊權限存在。由於特殊權限會擁有一些『 特權』 , 因而使用者若無特殊需求, 不應該去開啟這些權限, 避免安全方面出現嚴重漏洞, 讓怪客入侵。 • SUID (Set UID):可執行的檔案若搭配這個權限, 該檔案便能得到特權, 可以任意存取該檔案擁有者能使用的全部系統資源。

  43. 特殊權限 • SGID (Set GID):套用在檔案上面, 其效果和 SUID 相同, 只不過將範圍由檔案擁有者擴大成群組。也就是說, 擁有此權限的檔案, 可以任意存取整個群組所能使用的系統資源。

  44. 特殊權限 • T (Sticky):第 18-1 節提到 /tmp 和 /var/tmp 兩個目錄, 開放供所有使用者暫時存放檔案, 亦即每位使用者皆擁有完整的權限進入該目錄, 去瀏覽、刪除與移動檔案。假使碰到某位使用者存心搞鬼, 恣意亂刪其他使用者放置的檔案, 暫存目錄將形同危險地帶, 造成沒有任何使用者能夠安心利用這些目錄。因此我們可以把暫存目錄的 Sticky 權限打開, 則存放在該目錄的檔案, 僅准許其擁有者去刪除與搬移, 避免不守法的使用者無故騷擾。

  45. 特殊權限 • Sticky 特殊權限的設定, 僅對目錄有效。也就是說, 若您設定某個檔案具有 Sticky 權限, 並不會產生需該檔案擁有者才能刪除該檔的作用。必須將檔案放在具有 Sticky 權限的目錄下, 才能讓 Sticky 權限產生效用。 • 特殊權限 SUID、SGID、Sticky 佔用 x 的位置來表示, 假設同時開啟執行權限和 SUID、SGID 與 Sticky, 則其權限標示型態如下:

  46. 改變權限 • 要更改檔案或目錄的權限, 有多種方法可以選擇, 下面我們將一一介紹。

  47. 使用檔案管理員更改權限 • 使用圖形介面的檔案管理程式, 能夠輕鬆地改變檔案、目錄的權限。請按概覽鈕展開快捷工具列, 接著按檔案鈕開啟檔案管理員:

  48. 使用檔案管理員更改權限

  49. 使用檔案管理員更改權限

  50. 使用數字法更改權限 • 檔案或目錄的權限標示, 是用 "rwx" 這 3 個字元重複 3 次形成 9 個字元, 分別代表擁有者、同群組使用者和其他使用者的權限設定。不過, 用 9 個字元標示似乎過於麻煩, 因此還有另一種方法, 以數字來表示權限: • r:對應數值為 4。 • w:對應數值為 2。 • x:對應數值為 1。

More Related