Linux,sudo env沒有環境變量,而root用戶有

Linux,sudo env沒有環境變量,而root用戶有

我有 RHEL 7,我想為 sudo 設定環境變數。

我已經運行sudo su以切換到 root 用戶並添加export到其.bashrc文件中。然後我重新加載了它們source

現在,當我在模式env下運行時root,它有環境變數。但是,當我退出並運行時sudo env它不會。

為什麼會發生這種情況?

答案1

sudo在其自己的有限環境中運行程序(請參閱手冊的環境部分man sudo)。它不會隱式地用於bash運行程序,因此~/.bashrc不會運行,儘管您可以明確地調用它:

sudo bash --rcfile=~root/.bashrc -c ProgramAndParameters

您可以在運行字串中設定環境變數:

sudo variable=value ProgramAndParameters

預設情況下,您可以使用別名或函數來執行其中任一操作。

您也可以新增一個環境文件/etc/sudoers(請參閱 參考資料man sudoers以取得更多資訊)。

答案2

sudoers 條目如下

%DBTEAM     ALL = (oracle) NOPASSWD: ALL

DBTEAM --> 群組名稱

oracle --> oracle 用戶名

切換到目標使用者 沒有環境變量 sudo -s -u oracle

切換到目標使用者與環境變量 sudo -i -u oracle

相關內容