第三部分 文件系統與權限設置 當所有人都把目光投注在操作系統身上時,卻常常忘記了一個極為重要的配角――文件系統。文件系統的優劣與否和操作系統的執行效率、穩定性以及可靠度息息相關。
一,認識系統的目錄 在安裝Linux的磁盤中會有很多系統默認的目錄,這些目錄依照不同的用途而放置特定的文件。在前面已經簡單介紹過一些常用的目錄,以下將詳細說明每一個默認目錄的功能:
/: 根目錄,包含整個Linux系統的所有目錄和文件。
/bin:此目錄放置操作系統時所需要使用的各種命令程序。例如cp、rpm、kill、tar、mv、rm與ping等常用命令,還有各種不同的Shell,如bash、bash2、tcsh等。
/dev:存放界面設備代號的文件。例如硬盤的/dev/had、終端機等。這些文件比較特殊,他們實際上都指向所代表的界面設備。
/etc:存放與系統設置、管理相關的文件。例如記錄賬號名稱的passwd文件、投影口令文件shadow都放在這裡。
/etc/X11:X Window 配置文件的目錄。
/etc/rc.d:這個目錄包含了啟動或關機時所運行的script文件。
/home:此目錄默認用來設置用戶賬號的主目錄。
/lib:放置一些共享的函數庫。
/lib/modules:存放系統內核的模塊。某些可被模塊化的部分,並不需要在編譯系統內核本體,避免內核過大導致效率較低。
/lost+found:文件系統發生問題時,Linux會自動掃描磁盤試圖修正錯誤,倘若找到遺失或錯誤的區域,就會將這些區域轉成文件存放於目錄中,等候管理員來進一步處理。
/misc:默認空無一物,供管理員堆放公共雜物。默認權限時全部用戶都可以讀取和執行文件,但是只有管理員能夠寫入文件。
/mnt:此目錄下默認有/mnt/cdrom和/mnt/floppy兩個目錄,用來作為光盤與軟件的加載點.
/proc:系統內核和執行程序之間的信息,如執行ps、free等命令時所看到的信息,就是從這裡讀取。這目錄內的文件並非真的存在,用戶看到的虛擬文件。
/root:系統管理員專用的目錄,即root賬號的主目錄。
/sbin:此目錄存放啟動系統需運行,例如 fsck、init、grub、lilo與swapon等
/tmp:供全部用戶暫時放置文件的目錄。系統默認可讓所有用戶讀取、寫入和執行文件,因此對於一般用戶來說,若覺得自己的磁盤空間不夠使用,便可暫時利用此目錄存放文件。這裡也是臨時文件的目錄,某些程序在執行中說產生的臨時文件會存放在這個目錄內。
/usr:此目錄包括許多子目錄,用來存放系統命令。程序等信息。
/usr/bin:放置用戶可以執行的命令程序,如find、free、gcc等。
/usr/share/doc:存放各種文件的目錄。
/usr/share/man:放置多種幫助文件。
/usr/src:存放源代碼的地方,Linux系統內核的源代碼就放在此目錄下。
/var:系統執行時,需要暫時記錄存放的數據或臨時文件,都會放置在這個目錄裡。
/var/tmp:前面介紹的/tmp目錄除了放置所有用戶暫時存放的文件之外,還提供給程序產生的臨時文件使用,因此經常會因對方許多文件,而顯得非常雜亂。管理員通常會定時清理/tmp目錄,維護磁盤空間的整潔。加入不想將某些文件混入/tmp目錄中,可以選擇存放在這裡。
二,文件屬性 d:表示這是一個目錄。在ext3中,目錄被視為一種特殊的文件。
-:表示這是一個普通的文件
l:表示這是一個符號鏈接的文件,實際上它指向另一個文件。
b、c:分別代表區塊設備和其他的界面設備,是特殊類型的文件。
s、p:這些文件關系到系統的數據結構和通道,通常很少見到。
1,一般權限
r (read,讀取):對文件而言,用戶具有讀取文件內容的權限。對目錄而言,用戶擁有浏覽目錄內容的權限。
w (write,寫入):對文件而言,用戶具有修改文件內容的權限。對目錄而言,用戶具有刪除或移動目錄內文件的權限。
x(execute,執行):對文件而言,用戶具有執行文件的權限。對目錄而言,用戶具有進入目錄的權限。
2,特殊權限
其實文件與目錄的權限設置不只如此,還有所謂的特殊權限存在。屬於特殊權限會擁有一些“特權”,因而用戶若無特殊需求,不應該去打開這些權限,避免安全方面出現嚴重漏洞,讓黑客入侵。
設置UID,S(SUID, Set UID):可執行的文件若搭配這個權限,該文件便能得到權限,可以任意存取文件所有者能使用的全部系統資源。
設置GID,S(SGID,Set GID):應用在文件上面,其效果和SUID相同,只不過將范圍由文件所有者擴大成組。也就是說,擁有此權限的文件,可以任意存取整個組所能使用的系統資源。
三,用戶與組的權限關系 假如用戶lambert屬於cassia組,其用戶主目錄的權限設為rwxr-x—x,表示統屬cassia組的用戶,可以讀取和記入這個目錄,其他用戶則只能進入該目錄,但完全看不到任何內容。
因而屬於其他組的用戶saber,就無法讀取lambert目錄中的文件。但若將/etc目錄下的group文件內容作些修改,情況就不同了:
…
postfic:x:89:
pvm:x:24:
cassia:x:501:lambert,saber ← 將saber賬號加入cassia組
saber:x:502:
四,檢查inode編號 鏈接的文件實際上都是指向磁盤中相同的數據,因為每個文件僅占用一個inode,所以他們的inode編號應該一樣。執行ls –i命令來查看文件的inode編號:
[lambert@free lambert]$ ls –i LambertLink
10423 LambertLink
[lambert@free lambert]$ ls –i /tmp/var/ForEveryOne
10423 /var/tmp/ForEveryOne
從上面的結果可看出這兩個文件的inode編號一樣的,倘若是用復制而非連接的方法,便會是兩個不相干的文件,各自擁有inode編號。
[lamnert@free lambert]$ ls –I LambertFile
366955 LambertFile ←這個文件的inode是366955,而ForEveryOne的是10423