Redhat

如何配置 sudoers 以始終保持 LD_LIBRARY_PATH 環境變數?

  • July 1, 2016

無論我嘗試什麼,在我使用 sudo 執行命令後,似乎都沒有保留LD_LIBRARY_PATH環境變數。我設法讓它堅持下去的唯一方法是在我從命令行呼叫它時為我的sudo命令添加前綴LD_LIBRARY_PATH=/the/path,但我不想每次都這樣做。

似乎 env_keep 選項忽略了這個變數,exempt_group 選項也是如此。

我的 %group 目前ALL=(ALL) NOPASSWD:ALL在 sudoers 中具有訪問權限。我希望為我執行的任何命令保留這個特定的環境變數。

我怎樣才能做到這一點?

我的伺服器執行的是 Red Hat Enterprise Linux 5.7。

您可能希望可以使用

Defaults env_keep += "LD_LIBRARY_PATH FRED" 

CentOS 6.2但是對with的快速測試Sudo version 1.7.4p5沒有通過LD_LIBRARY_PATH但確實通過了FRED。sudoers 手冊頁有這樣的說法

請注意,大多數作業系統上的動態連結器將刪除那些
可以控制來自 setuid 執行檔環境的動態連結,包括
須藤。根據作業系統,這可能包括_RLD、DYLD_、LD_、
LDR_、LIBPATH、SHLIB_PATH 等。這些類型的變數從
sudo 之前的環境甚至開始執行,因此,它不是
sudo 可以保存它們

所以看起來系統LD_LIBRARY_PATH在 sudo 看到它之前就從環境中刪除了它。

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