Linux

為什麼 sudo -E 實際上不保護我的環境?

  • October 30, 2015

我正在嘗試 sudo 一些位於自定義路徑中的二進製文件。雖然我執行時刪除了該自定義路徑sudo,但sudo -E應該保留我的路徑。為什麼它不起作用?

$ 環境 | egrep ^PATH
PATH=/home/codemonkey/.nvm/v0.6.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/gam
zh:/usr/遊戲

$ sudo 環境 | egrep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

$ sudo -E 環境 | egrep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

我知道如何解決它,我只是想知道為什麼sudo -E不起作用

您可以設置exempt_group選項來告訴 sudo 保留該PATH組中的使用者。

例如,假設您的使用者在組“sys”中。將以下內容添加到您的 sudoers 文件中

Defaults exempt_group="sys"

現在您的使用者將不會PATH重置 sudo 命令(-E不需要此操作)。

有關更多詳細資訊,請參見手冊頁

編輯:必須注意這是一個錯誤的答案。它確實有效,但它有一個副作用,我在玩它時沒有註意到。它還使該組中的使用者不必輸入密碼。如果不允許這樣做,您似乎無法獲得 PATH 保存。我覺得有點傻…

引用自:https://serverfault.com/questions/356747