Linux小知識翻譯-「路徑設定」

zting科技發表於2017-10-27

這次聊聊路徑的使用,這裡的路徑是「命令搜尋路徑」的簡稱。

在Linux上執行命令的時候,本來是需要命令的所在位置的絕對路徑的,就像「/usr/bin/passwd」這樣。

但是,對於經常使用的命令,如果每次都要輸入絕對路徑的話就非常麻煩了。

 

在Linux的Shell中,執行某個命令時,使用者不用輸入命令的完整路徑,直接輸入命令後,系統會在特定的目錄中查詢這個命令,找到後執行。

這時,設定Shell在哪些目錄中搜尋命令的步驟就被稱為「路徑設定」,正確的應該是「命令搜尋路徑的設定」

 

為了設定路徑,需要修改環境變數「PATH」,每個希望搜尋的目錄之間用「:」區分開。

設定方法就是用 [[16. 「環境變數」]] 介紹的「export」命令,比如,想把「/usr/sample」這個路徑加入到命令搜尋路徑中去的話,

$ export PATH=$PATH:/usr/sample

 

在Linux中,當前目錄並不在命令搜尋路徑中,因此,比如想執行當前目錄下的「hogehoge.cmd」命令,必須要通過「./hogehoge.cmd」來執行。

雖然有些麻煩,但是把當前目錄加入到命令搜尋路徑中的話,會帶來一些安全問題,所以不建議把當前目錄加入到「PATH」中。

 

首先,安全的大原則就是「不要把多餘的目錄加到命令搜尋目錄中」。而且,過多的目錄加到命令搜尋目錄中的話,那麼如果有2個目錄中都有「ps」這個檔案,使用者輸入「ps」的時候,究竟哪個「ps」會被執行呢?

這就會導致混亂。(實際上,會按PATH中定義的目錄的順序來搜尋命令的,這2個目錄誰在前面,就執行哪個目錄中的「ps」。雖然如此,這種情況還是會給使用者帶來困擾)

 

剛剛說的如果把當前目錄加入到 PATH 中會導致什麼後果呢?

極端的情況下,幾乎所有的目錄都有可能變成當前目錄(因為使用者有可能進入任何一個目錄)。這就導致幾乎所有的目錄都有可能稱為命令搜尋路徑。

這樣的情況下,不僅僅會帶來混亂,如果某個目錄下被放置了惡意程式,由於這個目錄有可能在命令搜尋路徑中(當使用者進入這個目錄時),所以使用者無意中執行這個惡意程式的機會會很高。

通常,一般使用者能夠進出哪些目錄是被限制的,系統會保證這些目錄不在 PATH 中,一旦使用者可以進出的這些目錄被加入到 PATH 中,那麼惡意程式執行時所帶來的風險也會大大增加。

 

命令搜尋路徑不能為了使用方便而任意指定,首先要確保目錄的安全性,然後再考慮是否追加到命令搜尋路徑中。

本文轉自wang_yb部落格園部落格,原文連結:http://www.cnblogs.com/wang_yb/p/3784844.html,如需轉載請自行聯絡原作者


相關文章