Linux 使用ubuntu preseed和packer的无密码sudo

Linux 使用ubuntu preseed和packer的无密码sudo,linux,ubuntu,packer,Linux,Ubuntu,Packer,我试图将无密码sudo权限授予在Ubuntu 14.04安装期间创建的用户。但是,创建图像时,不存在与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-agai

我试图将无密码sudo权限授予在Ubuntu 14.04安装期间创建的用户。但是,创建图像时,不存在与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
文件目录将不存在

我知道这些命令正在运行,因为我有一次输入错误,在安装过程中看到一个错误。所有其他已呈现的命令似乎都在工作

我已经阅读了in-target指令,安装程序将创建一个具有最终文件系统的/target,但是我似乎无法使这些工作正常


使用packer,我运行了一个配置的shell脚本,该脚本执行相同的echo,并且可以正常工作

问题是一个已保存的文件只能有一个
preseed/late\u命令
节,而不能有多个

如果需要执行多个命令,可以将它们作为一个单独的late_命令,用
分隔例如

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 ;

我认为您只能有一个
preseed/late_命令,请参阅,这很有效,谢谢!如果你想把这个作为答案,我会接受的。