1. 程式人生 > >sudo常見問題兩例:免密碼/保持環境變數

sudo常見問題兩例:免密碼/保持環境變數

首先給一個很不錯的sudo的文件!

https://wiki.archlinux.org/index.php/Sudo_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29

問題一:如何在使用sudo執行命令時免輸入密碼

在root下執行visudo

在檔案尾部新增:

myuser ALL=(ALL) NOPASSWD: ALL
%mygroup ALL=(ALL) NOPASSWD: ALL

問題二:如休在使用sudo執行命令確保環境變數的傳遞


首先,我們可以隨時使用sudo -u targetUser env來檢查目標使用者targetUser的環境變數,特別是你定義的一些HOME目錄和PATH變數

以下是兩個重要的配置步驟:

1. 確保環境變數得以傳遞,以hadoop相關的一些環境變數為例,我們需要在visudo中新增需要傳遞的環境變數,比如:


Defaults    env_keep += "JAVA_HOME HADOOP_HOME HBASE_HOME HIVE_HOME MAHOUT_HOME PATH"

2. 取保PATH變數得以傳遞:

上面env_keep配置的PATH變數實際並沒有得到有效的傳遞,PATH變數會受到secure_path的約束,所引如果我們需要傳遞完整的path變數,我們需要修改secure_path!在visudo中它的預設值一般為:

 Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

同樣以hadoop環境為例,我們可以改為:

Defaults    secure_path = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_71/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hbase/bin:/usr/local/hive/bin:/usr/local/hive/hcatalog/bin:/usr/local/hive/hcatalog/sbin:/usr/local/mahout/bin

另:如果不做上述配置,可以使用sudo -i -u targetUser your-command來執行你的命令,使用-i引數會模擬一次登入,目標使用者的相關環境變數就可以相應的被初始化了!