為何目錄下的檔案,要加上 "./"才能執行
舉例而言,目前所有的目錄下有一個 "config" 的可執行檔,若我們直接執行 "config" ,系統會出現錯誤提示,必須要執行 "./config 或 . config" 才能正確執行,這樣是為什麼呢?
這是路徑設定的問題,"./" 這個代表的是目前的目錄,如果要讓目前的目錄下的檔案不需要加 "./" 即可執行,只要將 "./" 加入路徑參數 PATH 中即可,如下所示 :
- $export PATH="./":$PATH
答案是 : 基於安全的考量。
如果我們將 "./"放入 PATH 的第一欄位,當執行指令時就會以當前的路徑作為第一優先搜尋的路徑,如果該路徑下有著與系統指定同名的執行檔,那就可能會不小心執行到該檔案而非真正的系統指令。
舉例而言,一個存心破壞的使用者 user1,在 /temp下放了一個 ls ,當 root 進入 /temp 並執行 "ls" ,root 就會優先執行 "ls" 。而由於當前所在的位置是 "./temp" ,因此執行 "./ls" 就相當於執行 "temp/ls" ,而非系統指令。
因此在這樣的設定之下,可能會讓有心的本地使用者有可乘之機,藉由一些與系統指令同名的檔案來讓管理者 root 不小心執行該檔案,進而獲得更高的權限。
因此,即使要將目前的目錄加入路徑參數之中的優先順序,要將 "./" 放在系統路徑後
- $export PATH=$PATH:./
參考資料
特色、摘要,Feature、Summary:
系統安全
關鍵字、標籤,Keyword、Tag:
Linux,Ubuntu,System,Security
留言
張貼留言
Aron阿龍,謝謝您的留言互動!