sudo常見問題兩例:免密碼/保持環境變數
阿新 • • 發佈:2019-02-11
首先給一個很不錯的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
%mygroup ALL=(ALL) NOPASSWD: ALL
首先,我們可以隨時使用sudo -u targetUser env來檢查目標使用者targetUser的環境變數,特別是你定義的一些HOME目錄和PATH變數
以下是兩個重要的配置步驟:
Defaults env_keep += "JAVA_HOME HADOOP_HOME HBASE_HOME HIVE_HOME MAHOUT_HOME PATH"
2. 取保PATH變數得以傳遞:
另:如果不做上述配置,可以使用sudo -i -u targetUser your-command來執行你的命令,使用-i引數會模擬一次登入,目標使用者的相關環境變數就可以相應的被初始化了!
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中它的預設值一般為:
同樣以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引數會模擬一次登入,目標使用者的相關環境變數就可以相應的被初始化了!