Autoconf教程關(guān)于etc/mknod命令和安全考慮
本文Autoconf教程關(guān)于etc/mknod命令和安全考慮介紹,從系統(tǒng)管理員的角度討論安全問(wèn)題.系統(tǒng)管理員是管理系統(tǒng)的人:啟動(dòng)系統(tǒng),停止系統(tǒng)運(yùn)行,安裝新軟件,增加新用戶(hù),刪除老用戶(hù),以及完成保持系統(tǒng)發(fā)展和運(yùn)行的日常事務(wù)工作.
etc/mknod命令
用于建立設(shè)備文件.只有root能使用這個(gè)命令建立設(shè)備文件.其參數(shù)是文件名,字母c或b分別代表字符特別文件或塊特別文件,主設(shè)備號(hào),次設(shè)備號(hào).塊特別文件是像磁帶,磁盤(pán)這樣些以塊為單位存取數(shù)據(jù)的設(shè)備.字符特別文件是如像終端,打印機(jī),MODEM,或者其它任何與系統(tǒng)通訊時(shí),一次傳輸一個(gè)字符的設(shè)備,包括模仿對(duì)磁盤(pán)進(jìn)行字符方式存取的磁盤(pán)驅(qū)動(dòng)器.主設(shè)備號(hào)指定了系統(tǒng)子程序(設(shè)備驅(qū)動(dòng)程序),當(dāng)在設(shè)備上執(zhí)行I/O時(shí),系統(tǒng)將調(diào)用這個(gè)驅(qū)動(dòng)程序.調(diào)用設(shè)備驅(qū)動(dòng)程序時(shí),次設(shè)備號(hào)將傳遞給該驅(qū)動(dòng)程序(次設(shè)備規(guī)定具體的磁盤(pán)驅(qū)動(dòng)器,帶驅(qū)動(dòng)器,信號(hào)線(xiàn)編號(hào),或磁盤(pán)分區(qū)).每種類(lèi)型的設(shè)備一般都有自己的設(shè)備驅(qū)動(dòng)程序.
文件系統(tǒng)將主設(shè)備號(hào)和次設(shè)備號(hào)存放在i節(jié)點(diǎn)中的磁盤(pán)地址表內(nèi),所以沒(méi)有磁盤(pán)空間分配給設(shè)備文件(除i節(jié)點(diǎn)本身占用的磁盤(pán)區(qū)外).當(dāng)程序試圖在設(shè)備文件上執(zhí)行I/O操作時(shí),系統(tǒng)識(shí)別出該文件是一個(gè)特別文件,并調(diào)用由主設(shè)備號(hào)指定的設(shè)備驅(qū)動(dòng)程序,次設(shè)備號(hào)作為調(diào)用設(shè)備驅(qū)動(dòng)程序的參數(shù).
安全考慮
將設(shè)備處理成文件,使得UNIX程序獨(dú)立于設(shè)備,即程序不必一定要了解正使用的設(shè)備的任何特性,存取設(shè)備也不需要記錄長(zhǎng)度,塊大小,傳輸速度,網(wǎng)絡(luò)協(xié)議等這樣一些信息,所有煩人的細(xì)節(jié)由設(shè)備驅(qū)動(dòng)程序去關(guān)心考慮,要存取設(shè)備,程序只須打開(kāi)設(shè)備文件,然后作為普通的UNIX文件來(lái)使用.從安全的觀點(diǎn)來(lái)看這樣處理很好,因?yàn)槿魏卧O(shè)備上進(jìn)行的I/O操作只經(jīng)過(guò)了少量的渠道(即設(shè)備文件).用戶(hù)不能直接地存取設(shè)備.所以如果正確地設(shè)置了磁盤(pán)分區(qū)的存取許可,用戶(hù)就只能通過(guò)UNIX文件系統(tǒng)存取磁盤(pán).文件系統(tǒng)有內(nèi)部安全機(jī)制(文件許可).
不幸的是,如果磁盤(pán)分區(qū)設(shè)備得不正確,任何用戶(hù)都能夠?qū)懸粋€(gè)程序讀磁盤(pán)分區(qū)中的每個(gè)文件,作法很簡(jiǎn)單:
讀一i節(jié)點(diǎn),然后以磁盤(pán)地址表中塊號(hào)出現(xiàn)的序,依次讀這些塊號(hào)指出的存有文件內(nèi)容的塊.故除了root以外,決不要使盤(pán)分區(qū)對(duì)任何人可寫(xiě).因?yàn)樗姓?文件存取許可方式這樣一些信息存放于i節(jié)點(diǎn)中,任何人只要具有已安裝分區(qū)的寫(xiě)許可,就能設(shè)置任何文件的SUID許可,而不管文件的所有者是誰(shuí),也不必用chmod()命令,還可避過(guò)系統(tǒng)建立的安全檢查.
以上所述對(duì)內(nèi)存文件mem,kmem和對(duì)換文件swap也是一樣的.這些文件含有用戶(hù)信息,一個(gè)的程序可以將用戶(hù)信息提取出來(lái).要避免磁盤(pán)分區(qū)(以及其它設(shè)備)可讀可寫(xiě),應(yīng)當(dāng)在建立設(shè)備文件前先用umask命令設(shè)置文件建立屏蔽值.
一般情況下,UNIX系統(tǒng)上的終端口對(duì)任何人都是可寫(xiě)的,從而使用戶(hù)可以用write命令發(fā)送信息.雖然write命令易引起安全方面的問(wèn)題,但大多數(shù)用戶(hù)覺(jué)得用write得到其他用戶(hù)的信息很方便,所以系統(tǒng)將終端設(shè)備的存取許可設(shè)置成對(duì)所有用戶(hù)可寫(xiě).
/dev目錄應(yīng)當(dāng)是755存取許可方式,且屬root所有.不允許除root外的任何用戶(hù)讀或?qū)懕P(pán)分區(qū)的原則有一例外,即一些程序(通常是數(shù)據(jù)庫(kù)系統(tǒng))要求對(duì)磁盤(pán)分區(qū)直接存取,解決這個(gè)問(wèn)題的經(jīng)驗(yàn)的盤(pán)分區(qū)應(yīng)當(dāng)由這種程序?qū)S?不安裝文件系統(tǒng)),而且應(yīng)當(dāng)告知使用這種程序的用戶(hù),文件安全保護(hù)將由程序自己而不是UNIX文件系統(tǒng)完成.
【編輯推薦】