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

Slides:



Advertisements
Similar presentations
第 8 章 還原資料庫.
Advertisements

Linux 的檔案管理.
Linux File System Li-Shien Chen.
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
第 19 章 檔案系統與 權限設定.
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
檔案目錄結構.
JDK 安裝教學 (for Win7) Soochow University
Linux基本操作 實習1.
基礎linux指令說明 Part 1 資訊組 陳宜徽.
第1章 認識Arduino.
JAVA 程式設計與資料結構 第十二章 JAR File.
第二章 Linux基本指令與工具操作 LINUX 按圖施工手冊.
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
電腦硬體裝修乙級 第二站-伺服器端系統安裝與環境設定
HiNet 光世代非固定制 用戶端IPv6設定方式說明
在NS-2上模擬多個FTP連線,觀察頻寬的變化
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
Word與PowerPoint的結合 建功國小 陳旻杰 健行國小 張慧如.
Quiz6 繳交期限: 12/14(四) 23:59前.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
第 21 章 檔案系統與權限設定 著作權所有 © 旗標出版股份有限公司.
Chapter 6 Linux 檔案權限與目錄配置 VBird 2005/08/03
雲端運算的基石(2) 虛擬化技術實作(XP篇─上)
檔案與磁碟的基本介紹.
Linux-Ubuntu安裝及指令.
FTP檔案上傳下載 實務與運用.
私立南山高中 信息組 電腦研習 電腦資料的備份 中華民國 99年4月20日 星期二.
Fortran 程式語言 之 編與譯(二) 張基昇.
Chap3 Linked List 鏈結串列.
網路安全技術期末報告 Proxy Server
虛擬機器 下載QEMU Windows版 (0.9.1) 下載Kqemu Windows版 安裝QEMU 安裝Kqumu
Ch20. 計算器 (Mac 版本).
Linux作業系統 電腦教室Linux使用說明.
第一個cordova project Cordova project建立與平台設定,均藉由cli(command line interface來完成 建立project請打開命令提示字元視窗應輸入下列命令 cordova create hello tw.edu.stust.mis.hello HelloWorld.
雲端計算.
HTML – 超連結與圖片 資訊教育.
Unix 指令2.
權限管理—名詞解釋 名詞解釋: User: 配有帳號(account)接受權限管理的使用者,每個使用者都有其指定的uid代號(user id). root(super user):擁有所有權限的super user,它具有登錄任何目錄,執行所有命令及使用所有檔案的權限.(就是太上皇的權限囉…) Group:由管理者特定具有相同群組屬性的一群user,例如:Unix概論課程的under為所有大學部同學均屬同一群,資管系教職員為faculty群等,同一個群組都會有相同的gid代號(group.
讓Emulator可以 使用Android Market
安裝 / 操作 flashget SOP (以Win 7 作業系統為範例)
IIS Internet Information Services
Unix 指令1.
Google協作平台+檔案分享(FileZilla+網路芳鄰)
挑戰C++程式語言 ──第8章 進一步談字元與字串
個人網路空間 資訊教育.
如何使用Gene Ontology 網址:
Quiz7 繳交期限: 12/14 23:59.
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
網路資源的建立--LINUX系統 系統管理
MicroSim pspice.
利用 EditorConfig 自訂文字編輯器設定
MiRanda Java Interface v1.0的使用方法
第10章 檔案系統 (file system).
Unix 安裝過程 使用2個磁片 到 rawwrite bootnet.img drvnet.img 利用rawwrite 將image檔寫入磁片.
基本指令.
程式移植.
1. 查詢個人電腦版本 1.進入控制台 2.點選“所有控制台項目” 3.點選“系統”.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
Cloud Operating System - Unit 03: 雲端平台建構實驗
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
Parasitics Extraction (PEX) 與 postsimulation(posim)
資料表示方法 資料儲存單位.
Virtualization.
Chapter 4 Multi-Threads (多執行緒).
第六章 文件系统与文件管理 6.4 Linux文件管理 1、比较MS DOS 与 Linux的目录结构 一、Linux文件系统的树形结构
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
JUDGE GIRL 使用介紹 & 常見問題 TAs :
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

認識系統的目錄

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

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

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

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

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

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

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

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

如何將 ext3 轉換為 ext 4?

如何將 ext3 轉換為 ext 4? 建立日誌之後, 請修改 /etc/fstab 檔:

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

ext4 使用的 inode 檔案結構

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

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

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

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

inode 的內容

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

設定目錄與檔案使用權限

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

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

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

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

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

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

一般權限 drwx--x--x:目錄擁有者具有讀、寫與進入目錄的權限, 同群組及其他使用者僅能進入該目錄, 卻無法讀取檔案列表。

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

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

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

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

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

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

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

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

使用檔案管理員更改權限

使用檔案管理員更改權限

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

使用數字法更改權限 遵循上述法則, "rwx" 合起來就是 4 + 2 + 1 = 7, 一個 "rwxrwxrwx" 權限全開的檔案, 用數字來表示就是 "777";而完全不開放權限的檔案 "---------", 它的數字標示則為 "000"。底下我們再舉幾個例子說明: -rwx------:等於數字標示 700 。 -rwxr--r--:等於數字標示 744。 -rw-rw-r-x:等於數字標示 665。 drwx--x--x:等於數字標示 711。 drwx------:等於數字標示 700 。

使用數字法更改權限 文字模式下可執行 chmod 指令去改變檔案與目錄的權限, 我們先執行 ls -l 指令觀察目錄內的情況:

使用數字法更改權限 執行下列指令去更改 nohup.out 檔案的權限:

使用數字法更改權限 假若要加上特殊權限, 則在原來的 3 位數字前加上一碼, 以 4 位數字表示。特殊權限的對應數值為: s 或 S (SUID):對應數值為 4。 s 或 S (SGID):對應數值為 2。 t 或 T:對應數值為 1。 用同樣的方法去更改檔案權限即可:

使用數字法更改權限

使用文字法更改權限 除了可用數字表示法更改權限之外, 還能使用文字表示法變更。第 2~10 字元亦以 "rwx" 每 3 個為一組, 分別用 "u"、"g" 與 "o" 來表示:

使用文字法更改權限 用 chmod 指令配合文字參數就能改變權限設定, 下面舉例說明: "u+rw":為檔案擁有者加入讀取和寫入的權限。 "g-x":將同群組使用者的執行權限取消。 "g+x, o+rx":為同群組使用者加入執行的權限, 並為其他使用者加入讀取與執行的權限。 "u+rwx, g-w, o-w":加入檔案或目錄擁有者完整的權限, 並且取消同群組與其他使用者的寫入權限。

使用文字法更改權限 "o=rx":設定其他使用者具有讀取和執行的權限, 而沒有寫入權限。 "ugo+x" 或 "a+x":同時為擁有者、同群組、其他使用者加入執行權限, "ugo" 可以合稱為 "a"。 "+x":和 "ugo+x"、"a+x" 的意義相同, 沒有指定 u、g、o 或 a 時, 即代表全部。 "o+t":加入 Sticky 特殊權限。 "u+s, g+s":加入 SUID 和 SGID 特殊權限。

使用文字法更改權限 我們實際練習一次試試看: 變更目錄權限的方法和變更檔案一樣。

使用文字法更改權限 假如想一次更改某個目錄下的所有檔案權限, 包括其子目錄中的檔案權限也一併更改, 則請使用 "-R" 參數表示啟動遞迴處理。有無遞迴處理的差別在於: chmod 777 mydir:僅把 mydir 目錄的權限改為 "rwxrwxrwx"。 chmod -R 777 mydir:將整個 mydir 目錄、目錄中的檔案、子目錄和子目錄中檔案的權限, 統統改成 "rwxrwxrwx"。 其他的參數請執行 chmod --help 指令即可查閱。

改變擁有權 檔案與目錄不僅可以改變權限, 也能更改擁有者及所屬群組。和設定權限類似, 您可以使用圖形介面的檔案管理程式 (請參考 19-13 頁), 或執行 chown 指令, 修改檔案或目錄的擁有者及所屬群組。 請注意!只有 root 管理者帳號, 可將檔案的擁有者移轉給其他人, 一般使用者不能用 chown 指令。

改變擁有權 請先執行 ls -l 指令看看目前的狀況: 執行下面的指令可以把 nohup.out 檔案的所有權轉移給 lambert:

改變擁有權 然後再執行 ls -l 指令觀看修改後的結果:

改變擁有權 若只要變更擁有者, 請執行 chown lambert nohup.out 指令;僅需變換所屬群組, 則執行 chown .lambert nohup.out 指令即可。更改目錄的辦法和上述之方式一樣, 不再贅述。想一次更改整個目錄下的所有檔案權限, 則請使用參數 "-R" 啟用遞迴處理。 另外有個 chgrp 的指令, 可修改所屬群組, 執行 chgrp --help 指令可查閱相關資訊。

19-4 使用者與群組的權限關係 假若使用者 lambert 屬於 cassia 群組, 其使用者家目錄 (/home/lambert) 的權限設為 "rwxr-x---", 表示同屬 cassia 群組的使用者, 可以讀取和進入這個目錄, 其他使用者則無法進入此目錄。 因而屬於其他群組的使用者 saber, 就無法讀取 lambert 目錄中的檔案。但若將 /etc 目錄下的 group 檔案內容做些修改, 情況就不一樣了:

使用者與群組的權限關係 這樣一來, 使用者 saber 便同時屬於 saber 和 cassia 兩個群組, 而能讀取同屬於 cassia 群組的 lambert 家目錄下的檔案了。

19-5 連結與符號連結 在 Linux 的檔案系統中, 有許多連結 (link) 的檔案, 例如執行 ls -l 指令列出檔案資訊時, 會看到類似下面這些內容:

連結與符號連結 簡單來說, 連結就是替同一個檔案建立第二、第三...個名字, 如同在 Windows 下, 建立檔案的捷徑。這樣應該有了大致上的了解吧。

建立連結 單純的檔案複製方式, 會佔用磁碟空間。例如使用者 cassia 在 /var/tmp 目錄中, 存放一個大小為 1502892 bytes 的檔案 ForEveryOne, 其權限的設定是 "rw-r--r--"。若使用者 lambert 也要用這個檔案, 他可以將 ForEveryOne 複製到自己的目錄中, 如此一來, ForEveryOne 就分處兩地, 整整佔用 3005784 bytes 的磁碟空間:

建立連結 另一種達成檔案分享的方法是採用連結, 或稱為硬連結 (hard link)。lambert 並不需要複製一份 ForEveryOne 到自己的目錄下浪費磁碟空間, 只需建立連結即可:

建立連結 此時可執行 ls -l 指令, 看看複製的 LambertFile 與連結的 LambertLink 有甚麼不同:

建立連結 若使用者無存取來源檔案的權限, 系統仍允許產生檔案連結, 但該連結的檔案屬性仍與來源檔案的屬性相同。無法讀取的檔案即使以連結的方式到自己的家目錄 , 仍然沒有權限可存取該檔案。 檔案的連結數是 2, 表示目前這個檔案除了本身以外, 還有另一個分身。假使再對該檔案建立連結, 其連結數就會再增加。我們每刪除一個時, 它的連結數就逐次遞減, 直到數目降為 1 的時候, 該檔案在檔案系統中便不存在任何分身。

檢查 inode 編號 連結的檔案實際上都是指向磁碟中相同的資料, 因為每個檔案僅佔用一個 inode, 所以它們的 inode 編號應該一樣。請執行 ls -i 指令來查看檔案的 inode 編號:

檢查 inode 編號 從上面的結果可看出這兩個檔案的 inode 編號是一樣的, 倘若是用複製而非連結的方法, 便會是兩個不相干的檔案, 各自擁有其 inode 編號:

建立符號連結 第 19-3 節中我們曾提到過符號連結 (亦稱軟式連結), 其建立的方法類似連結, 但意義不相同。請用 ln -s 指令建立符號連結:

建立符號連結 執行 ls -l 指令觀看 lambert 目錄的情形:

建立符號連結 我們可以清楚發現, 檔案 LambertFile 和 SymLink 的連結數都沒有改變, 而 SymLink 檔案權限最前面的第 1 個字元出現 "l", 表示這是一個符號連結的檔案, 權限則為 "rwxrwxrwx" 全部開放, 代表真正的權限要以所指的檔案 (LambertFile)為準, 符號連結本身不做任何限制。

建立符號連結 符號連結並不保存檔案的資料, 其真正內容是一個字串指向原來的檔案, 類似 Windows 系統中的"捷徑", 因此若把其指向的檔案刪除或更改檔名, 則 SymLink 就會指向一個不存在的檔案, 其內容會變成空白。請特別注意! 符號連結本身也會佔用一個 inode:

硬連結與符號連結比較 由於連結的方式不同, 硬連結與符號連結有著以下的差異: 當原檔刪除後, 符號連結將會失效, 硬連結則仍然可以繼續使用。 硬連結只能連結同一個分割區內的檔案, 而符號連結則因為只是一個指向檔案的字串, 所以可以跨越不同分割區, 甚至連結到掛載 NFS 與 Samba 的目錄內 (關於 Samba 的詳細介紹, 請參考第 26 章)。

硬連結與符號連結比較 硬連結不能連結目錄, 因為目錄的 inode 中, 計算連結數的欄位已經有其他的用途, 所以無法讓硬連結使用。符號連結可以指向任何目錄, 並可如同真的目錄一樣地使用。 硬連結與符號連結各有其限制, 所以您必須依時機與用途, 選擇適合的方式使用。

19-6 SELinux - 更加安全的權限控管 SELinux (Security-Enhanced Linux) 是由美國國家安全局 (National Security Agency) 所推出的開放原始碼軟體, 它不是一個發行版, 因此需架構在現有的 Linux 平台上。以修補核心, 提供更加安全的權限控制為目的。因為並沒有修改核心的其他功能, 因此並不影響在原有 Linux 上的程式運作 (在 SELinux 設定的允許情況下)。

SELinux - 更加安全的權限控管 傳統的 Linux 只能針對檔案的擁有者及檔案的執行權限來決定是否可以讀取、寫入或執行。而在程序方面幾乎沒有特別的控管機制, 例如設定 suid 的程式, 像 /usr/bin/passwd 即是。所有人執行 /usr/bin/passwd 指令時, 都是以 root 的身份執行, 無法限制某些人可以執行而某些人不能執行。

SELinux - 更加安全的權限控管 相較於以往 Linux 建構在使用者與群組權限的安全控制 (Discretionary Access Control, DAC)。SELinux 提供更加嚴謹的權限控制 (Mandatory Access Control, MAC) , 例如只有特定的使用者與程式可以存取某些特定的資源;即使同一個使用者, 但來自於不同的網域, 所擁有的權限也可以不同。

SELinux - 更加安全的權限控管 在此嚴格的限制之下, 系統不會因為伺服程式的漏洞或設定不嚴謹而遭到入侵時, 進而影響到整個系統的安全。當然, 也不會因使用者操作不當或一般應用程式當掉, 而影響到整個系統的運作。

SELinux - 更加安全的權限控管 SELinux 是透過許多政策 (policy) 來設定使用者、執行程序或檔案的權限, 例如是否允許使用者使用家目錄網頁的功能。不過撰寫 SELinux 政策屬於進階使用, 我們在此不做進一步介紹, 您可參考 http://www.lurking-grue.org/writingselinuxpolicyHOWTO.html 網頁的說明。 SELinux 的政策相當繁複, 稍一錯誤便會影響許多功能, 例如寄信、網路芳鄰分享等, 所以筆者建議初學 Linux 時, 先關閉 SELinux 以減少過多的限制導致學習上的障礙。

SELinux - 更加安全的權限控管 請開啟文書編輯器修改 /etc/sysconfig/selinux 檔: 存檔後重新開機, 即可讓設定生效。