如何在 ubuntu 16.04 上禁用 requiretty

如何在 ubuntu 16.04 上禁用 requiretty

我正在使用 Packer 创建自动化的 Linux 黄金映像。

当我尝试运行需要 sudo 的脚本时,出现以下错误

sudo: no tty present and no askpass program specified

此错误已在互联网上详细讨论,建议的建议是使用以下方法之一:

  1. ssh 使用-t
  2. 从 /etc/sudoers 中删除Defaults:username !requiretty
  3. 导出 SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
  4. 将用户添加到 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

相关内容