作者hrs113355 (小分分)
看板EE_DSnP
標題[閒聊] 關於$path的設定
時間Wed Sep 23 17:09:53 2009
今天上課的時候老師提到環境變數 $path 的設定和使用中,
示範自訂的部分將 "." (當前目錄) 加入 $path 的比對的list中,
之前看過幾篇文章和文件中提到,這樣設定也許會造成安全性的隱憂,
因為此項設定的效果在任何時候當前的目錄也會被列入command 搜尋的考量中,
有一個比較極端的例子是:
假使有人在 /tmp 中放置惡意程式,但是刻意將檔名取為和一些常用的指令
相同如 ls 、 cp 等等,那麼在 /tmp 中下達這些指令的時候可能就會觸發
惡意程式。
當然這是比較極端的例子,但是當使用的時間一久時,也許目錄中會有與常
用指令命名相似或相同的程式,在使用時就很有可能造成混亂。
如果還是希望可以直接使用當前目錄下的程式又希望將這個隱憂降到最小時
,可以考慮在 $path 的設定中,將 "." 放在最後面,例如:
PATH = /usr/local/bin:/usr/bin:/bin:/usr/games:
.
因為 shell 在比對指令時是依照由左到右的順序作為優先序,這樣比對時
就會把 "." 放在最後的優先序,會先到預設的程式目錄搜尋,搜尋不到時
才會回到當前目錄,避免下常用指令時,卻被惡意程式覆蓋或和當前目錄
程式混亂的問題。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.249.58
1F:推 anfranion:原PO專業~ 09/23 17:14
2F:推 master1x4:實用! 09/23 17:25
3F:推 bnsblue:實用! 09/23 18:51
4F:推 ric2k1:嗯, 的確應該考慮將 '.' 放在 path 的最後面... 09/24 01:00
5F:→ ric2k1:不過這樣的缺點就是有時候自己寫的程式執行檔的名稱取得 09/24 01:02
6F:→ ric2k1:不好的話 (如: test), 就會執行到系統的程式而產成意想不到 09/24 01:03
7F:→ ric2k1:結果... 09/24 01:04