簡體   English   中英

使用ubuntu preseed和packer的無密碼sudo

[英]passwordless sudo using ubuntu preseed and packer

我試圖向在Ubuntu 14.04安裝期間創建的用戶授予無密碼sudo權限。 但是,創建映像時,不存在與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

stuff目錄將不存在。

我知道這些命令正在運行,因為我曾經輸錯了一次並在安裝過程中看到了錯誤。 所有其他preseed命令似乎都在工作。

我已經閱讀了有關in-target指令的信息,安裝程序將創建一個具有最終文件系統的/ target,但我似乎無法使這些工作。

使用打包器我運行了一個shell腳本配置,它執行相同的回聲,並且有效。

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

如果需要執行多個命令,可以將它們作為單個late_command分隔; 例如

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

在這種特殊情況下,這對我有用:

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 ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM