PATH 環境變數
PATH 環境變數是一個重要的安全控制項, 可指定要搜尋哪些目錄,以便尋找指令。
預設的全系統 PATH 值是在 /etc/profile 檔中指定,而且每一位使用者通常在其 $HOME/.profile 檔中會有 PATH 值。.profile 檔中的 PATH 值會置換全系統的 PATH 值,或將額外的目錄新增到該值。
未獲授權變更 PATH 環境變數,可讓系統上的使用者得以「詐騙」其他使用者 (包括 root 使用者在內)。詐騙程式 (又稱為特洛依木馬程式) 會取代系統指令,然後擷取提供給該指令的資訊,例如使用者密碼。
例如,假設使用者變更了 PATH 值,使得某個指令執行時,系統會先搜尋 /tmp 目錄。然後,使用者會在 /tmp 目錄中放置稱為 su 的程式,就像 su 指令一樣會要求 root 密碼。然後,/tmp/su 程式會將 root 密碼郵寄給使用者,並在結束之前呼叫真正的 su 指令。在這種情況下,使用 su 指令的任何 root 使用者都可能會洩漏 root 密碼,甚至不會察覺。
對於系統管理者和使用者來說,如果要避免 PATH 環境變數發生任何問題,可以採取下列步驟:
- 不確定時,指定完整路徑名稱。如果指定完整路徑名稱,則會忽略 PATH 環境變數。
- 絕對不要將現行目錄 (由 . (句點) 指定) 置於為 root 使用者指定的 PATH 值中。絕對不要容許在 /etc/profile 中指定現行目錄。
- root 使用者應在其專用的 .profile 檔中,具備自己的 PATH 規格。一般來說,/etc/profile 中的規格會列出所有使用者的最低標準,而 root 使用者可能需要比預設值更多或更少的目錄。
- 警告其他使用者不要在未諮詢系統管理者的情況下,變更其 .profile 檔案。否則,未料想到後果的使用者可能會作出變更,讓非計劃中的人去存取它。使用者 .profile 檔案的許可權應設為 740。
- 系統管理者不應使用 su 指令來從使用者階段作業取得最高許可權 (root),因為這時是使用者在 .profile 檔所指定的 PATH 值正在作用中。使用者可以設定自己的 .profile 檔。系統管理者應以 root 使用者或最好以自己的 ID 登入使用者的電腦,然後再使用下列指令:
/usr/bin/su - root這確保在階段作業期間使用 root 環境。如果系統管理者確實是以 root 身分在其他使用者階段作業中操作,則系統管理者應在階段作業全程指定完整的路徑名稱。
- 保護輸入欄位分隔符號 (IFS) 環境變數,以避免在 /etc/profile 檔中被變更。.profile 檔中的 IFS 環境變數可用來變更 PATH 值。