這次聊聊路徑的使用,這里的路徑是「命令搜索路徑」的簡稱。
在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 中,那么惡意程序執行時所帶來的風險也會大大增加。
命令搜索路徑不能為了使用方便而任意指定,首先要確保目錄的安全性,然后再考慮是否追加到命令搜索路徑中。
新聞熱點
疑難解答