然后在計算機B中進入任何一個普通用戶,鍵入以下命令:
rcmd hostshut -l shutdown vi /etc/passwd
或 rcmd hostshut -l shutdown vi /etc/shadow
這樣,該普通計算機用戶已在計算機B中用vi命令打開了計算機A中包括root超級用戶在內(nèi)的所有用戶的密碼文本。接下來只要改動或刪除這些密碼,就可以輕松地用telnet、rlogin等遠程命令登錄到計算機A的任何一個用戶中。如果此時闖入的是一個惡意用戶, 對計算機A來說其后果將不堪設(shè)想。
2.解決問題
為了解決這個安全問題,首先可以封閉inetd守護進程中的部分遠程功能,如telnet、shell、login、exec等,方法是直接用vi修改/etc/inetd.conf文件,在上述功能前添加#號,然后執(zhí)行/etc/inetd命令即可。但這樣大大削弱了Unix系統(tǒng)的網(wǎng)絡(luò)功能,并可能影響到其他計算機應(yīng)用方案的實施。
經(jīng)過實踐,筆者發(fā)現(xiàn)了一種相當(dāng)安全的關(guān)機方法,該方法采用了輸入/輸出重定向、Unix啞終端技術(shù)和Unix定時系統(tǒng)來實現(xiàn)安全的關(guān)機。具體做法如下:
首先在超級用戶中輸入如下命令,使tty12終端成為啞終端:
#disable /dev/tty12
由于需要在啞終端tty12中運行關(guān)機程序,而啞終端的窗口在原始模式下工作, 所以不能用Unix系統(tǒng)命令read進行輸入,必須自己編寫一個能在原始模式下實現(xiàn)輸入/輸出功能的程序。用cc -lcurses命令編譯以下源程序,并生成可執(zhí)行文件safehalt:
file://安全關(guān)機程序
#include
#include
#include
#include
main()
{
WINDOW *win;
char til[]=“是否現(xiàn)在關(guān)機?確認請按yes:”,s1[4],sum[100];
struct termio save,term;
initscr(); raw(); noecho();
keypad(stdscr,TRUE); clear();
ioctl(0,TCGETA,&term);
save=term;
win=newwin(24,80,0,0);
while(s1[0]!=‘q’)
{
s1[0]=‘