我正在使用 Packer 创建自动化的 Linux 黄金映像。
当我尝试运行需要 sudo 的脚本时,出现以下错误
sudo: no tty present and no askpass program specified
此错误已在互联网上详细讨论,建议的建议是使用以下方法之一:
- ssh 使用
-t
- 从 /etc/sudoers 中删除
Defaults:username !requiretty
- 导出 SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
- 将用户添加到 suoders 组
%admin ALL=(ALL) NOPASSWD:ALL
我已经验证 ubuntu 16.04 附带的 /etc/sudoers 文件不包含requiretty
.为什么ubuntu还是报错sudo: no tty present and no askpass program specified
https://github.com/mitchellh/vagrant/issues/1482
https://askubuntu.com/questions/281742/sudo-no-tty-present-and-no-askpass-program-specified
答案1
原来是脚本顺序的问题。
一旦我在 sudoers 文件中允许流浪用户 sudo 权限,问题就消失了。
https://github.com/chef/bento/blob/master/scripts/ubuntu/sudoers.sh
sed -i -e '/Defaults\s\+env_reset/a Defaults\texempt_group=sudo' /etc/sudoers
sed -i -e 's/%sudo ALL=(ALL:ALL) ALL/%sudo ALL=NOPASSWD:ALL/g' /etc/sudoers