使用 ubuntu preseed 和 packer 的无密码 sudo
passwordless sudo using ubuntu preseed and packer
我正在尝试向 Ubuntu 14.04 安装期间创建的用户授予无密码 sudo 权限。但是,创建图像时 none 存在与 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 目录将不存在。
我知道这些命令是 运行 因为我打错了一次并且在安装过程中看到了一个错误。所有其他预置命令似乎都有效。
我已阅读有关 in-target 指令的信息,安装程序将创建一个具有最终文件系统的 /target,但我似乎无法使这些工作正常进行。
使用加壳器我 运行 提供了一个 shell 脚本,它可以执行相同的回显并且可以正常工作。
问题是一个预置文件只能有一个 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 ;
我正在尝试向 Ubuntu 14.04 安装期间创建的用户授予无密码 sudo 权限。但是,创建图像时 none 存在与 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 目录将不存在。
我知道这些命令是 运行 因为我打错了一次并且在安装过程中看到了一个错误。所有其他预置命令似乎都有效。
我已阅读有关 in-target 指令的信息,安装程序将创建一个具有最终文件系统的 /target,但我似乎无法使这些工作正常进行。
使用加壳器我 运行 提供了一个 shell 脚本,它可以执行相同的回显并且可以正常工作。
问题是一个预置文件只能有一个 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 ;