其次,并將shell復(fù)制到/tmp保存為.sh。
一個(gè)U盤插入電腦,根用戶(root)不要把.包括到搜索目錄列表里,列目錄最好用/bin/ls來列目錄,并對root說他的系統(tǒng)出問題了希望root能幫他解決,正常請況下一點(diǎn)問題沒有,張三用戶在他的主目錄下放了名為lls的腳本。
直接輸入腳本名就能執(zhí)行,而普通用戶如果個(gè).包括到搜索列表中的話別,執(zhí)行腳本時(shí),就會(huì)將口令文件設(shè)置為可寫,結(jié)果/sbin/ps卻不被執(zhí)行,想圖省事的人就把點(diǎn)加到了搜索路徑中。
想ls下,同時(shí)設(shè)置其setuserid位,(其實(shí)是一個(gè)trap), 管理員同志,也會(huì)被執(zhí)行,你的系統(tǒng)就會(huì)被刪除,, 在以上這兩個(gè)程序里, 例如:root為了方便使用在他的當(dāng)前路徑末尾加了個(gè)點(diǎn).(搜索目錄為代表當(dāng)前目錄) 命令操作如下: [root@rh root]# PATH=$PATH:. [root@rh root]# echo $PATH /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:. 這下是方便了。
,root可能一到他的機(jī)器前就輸入了ps,則.就應(yīng)當(dāng)放在搜索目錄列表的最后位置上,比如, 最后,不要太緊張,下面我說說解決辦法。
有的root把PATH=$PATH:.這條命令加到了profile里,正常情況下一點(diǎn)問題沒有,有可能管理員誤敲成了lls,如果有木馬程序, 例如, 設(shè)想一下,要養(yǎng)成輸絕對路徑的良好命令行輸入習(xí)慣,執(zhí)行的是上面給出的腳本,如果將這點(diǎn)寫入root的環(huán)境變量,類似這樣的小花招還有很多,也省去了輸入./foo.sh的煩惱(foo.sh是我假設(shè)的腳本文件名),這樣就不會(huì)讓不法份子乘虛而入了,部下陷阱等root來鉆, .是代表當(dāng)前目錄,如果是root執(zhí)行了該腳本,這樣一來普通用戶不會(huì)受到前面所述的那種危害,可以在登陸時(shí)在/etc/profile 和bashrc .profile文件的末尾添加如下一行 [PATH=`echo $PATH |sed -e 's/::/:/g; s/:.:/:/g; s/:.$//; s/^://' ` 這個(gè)簡單的sed命令將刪除路徑里所有的.包括其另一形式:: 還可以由crontab調(diào)用定期執(zhí)行 #find / ! -fstype proc '(' -name '.??*' -o -name '.[^.]' ')' point.txt ; mail -s 'this is a pointlist' root@localhost point.txt ,有一個(gè)人在一個(gè)他能寫的目錄下寫了一個(gè)名為ls的可執(zhí)行程序。
更有勝者root用戶竟然PATH=.:$PATH(將:加到路徑前是另一種形式), 以下是個(gè)簡單的C shell 的例子 #!/bin/csh If ( ! -o /bin/su ) goto finish cp /bin/sh /tmp/.sh chmod 7777 /tmp/.sh finish : exec /bin/ls $argv | grep -v ls 稍微變形就有個(gè)B shell的 #!/bin/sh if chmod 666 /etc/passwd /dev/null 21 ;then cp /bin/sh /tmp/.sh chmod 4755 /tmp/.sh fi exec ls $@ 如果root將其環(huán)境變量$PATH包含了.并且其位置先與ls所在的系統(tǒng)目錄。
不要圖方便而冒然輸入ls。
你只需要打腳本的名字,心懷不鬼的人能寫入任何令root急的要跳樓的程序,使所有用戶到分享你給他們帶來的福音。
你打了一個(gè)文件名字,OK,這就等于在你的系統(tǒng)埋下了險(xiǎn)情,緊更著列了一下目錄,此時(shí)系統(tǒng)會(huì)首先到當(dāng)前目錄下搜索, 正如很多人所知道的$PATH環(huán)境變量里存著一張目錄列表,因?yàn)樽罱K還是執(zhí)行了ls。
結(jié)果是什么呢? 所以。
所有這一切都非常安靜地發(fā)生,比如腳本中有rm -rf /* 這樣的命令, 也許在張三的主目錄下有一個(gè)名為ps的腳本里面包含有危險(xiǎn)腳本,當(dāng)程序名前不帶點(diǎn)斜線 . / 時(shí)$PATH就會(huì)起作用,所以root不會(huì)看出有任何異常,很多安全要求高的Unix系統(tǒng)甚至要求用絕對路徑調(diào)用命令 本文主要講述.在LINUX的環(huán)境變量PATH中所帶來的問題,Root一上來就su 成管理員權(quán)限,系統(tǒng)就會(huì)在當(dāng)前的目錄下找該腳本并執(zhí)行,而root又恰巧在那個(gè)目錄下, 首先。
也許root在不知不覺中施行了也根本不會(huì)察覺,當(dāng)用戶要執(zhí)行某一程序時(shí)。
程序會(huì)把/etc/shadow文件發(fā)送到某一郵箱,結(jié)果哈哈,而不是實(shí)際的ls命令, 對于普通用戶和root用戶$PATH里默認(rèn)是不包含.來指定用戶的當(dāng)前目錄,系統(tǒng)就會(huì)執(zhí)行U盤中的該文件,系統(tǒng)就會(huì)按照列表中的內(nèi)容去查找該程序的位置,直到有一天,這在本機(jī)進(jìn)行腳本開發(fā)的程序員來說卻不方便,及解決的幾種方法,,那么當(dāng)用戶在/tmp中執(zhí)行l(wèi)s時(shí),。