2015-08-28 63 views
2

我試圖授予Ubuntu 14.04安裝期間創建的用戶無密碼sudo權限。但是,在創建圖像時,不存在與sudo相關的任何更改。下面是預置文件的相關部分:使用ubuntu preseed和packer的無密碼sudo

# Create Vagrant User 
d-i passwd/user-fullname string Vagrant User 
d-i passwd/username string vagrant 
d-i passwd/user-password password vagrant 
d-i passwd/user-password-again password vagrant 
d-i user-setup/encrypt-home boolean false 
d-i user-setup/allow-password-weak boolean true 

# Setup passwordless sudo for vagrant user 
d-i preseed/late_command string echo "vagrant ALL=(ALL:ALL) NOPASSWD:ALL" > /target/etc/sudoers.d/vagrant 
d-i preseed/late_command string chmod 0440 /target/etc/sudoers.d/vagrant 

我也曾嘗試

d-i preseed/late_command string in-target echo "vagrant ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers.d/vagrant 

當圖像完成/etc/sudoers.d/vagrant將不存在任何地方。

即使我運行命令:

d-i preseed/late_command string mkdir /stuff 
d-i preseed/late_command string in-target mkdir /stuff 

的東西目錄將不存在。

我知道命令正在運行,因爲我犯了一個錯字,並在安裝過程中看到錯誤。所有其他預先選擇的命令似乎都在工作。

我已閱讀關於目標指令,並且安裝程序將創建一個具有最終文件系統的/目標,但我似乎無法使這些工作。

使用打包器我已經運行了一個shell腳本供應,執行相同的回聲和工作。

+0

我認爲你只能有一個'裏面預置/ late_command',請參閱[這裏](https://開頭列出。 debian.org/debian-user/2012/03/msg01414.html)和[這裏](http://ubuntuforums.org/showthread.php?t=1977570) – mata

+0

這工作謝謝你!如果你想發佈這個答案,我會接受它。 –

回答

7

問題是,預先選擇的文件只能有一個preseed/late_command部分,而不是多個。

如果您需要執行多個命令,則可以將它們作爲單個late_command與;(例如,

d-i preseed/late_command string \ 
    in-target cmd1 args ... ; \ 
    in-target cmd2 args ... ; \ 
    ... 
2

在這種特殊情況下,這是什麼工作對我來說:

d-i preseed/late_command string \ 
    echo 'vagrant ALL=(ALL) NOPASSWD: ALL' > /target/etc/sudoers.d/vagrant ; \ 
    in-target chmod 440 /etc/sudoers.d/vagrant ; 
+1

+100高五。 –