我有 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