如何以非交互方式从 /etc/sudoers.d/ 文件运行命令?

如何以非交互方式从 /etc/sudoers.d/ 文件运行命令?

为了我的项目目的之一,我正在自动安装 dpkg-sig。现在我想以非交互方式安装它。

我在 /etc/sudoers.d/ 内的文件中添加了以下内容

Cmnd_Alias DPKGSIG_INSTALL = /usr/bin/apt install -y dpkg-sig, \
                            /bin/apt install -y dpkg-sig
abc ALL=(root) NOPASSWD: DPKGSIG_INSTALL
Defaults:abc !requiretty

我正在尝试使用我的 golang 代码安装 dpkg-sig,如下所示:

installDpkgSig := "/usr/bin/sudo DEBIAN_FRONTEND=noninteractive apt install -o Dpkg::Options::=--force-confold -y dpkg-sig"
executor.cmd = *exec.Command("bash", "-c", installDpkgSig)

它无法安装它。出现以下错误:

sudo: sorry, you are not allowed to set the following environment variables: DEBIAN_FRONTEND

但是当我删除DEBIAN_FRONTEND=非交互式来自安装命令的一部分,它工作正常。如何以非交互方式运行安装?

答案1

终于能够解决这个问题了。它不需要对 /etc/sudoers.d/ 文件进行任何更改。

将上面的代码修改如下并且它有效。

installDpkgSig := "export DEBIAN_FRONTEND=noninteractive && /usr/bin/sudo apt install -o Dpkg::Options::=--force-confold -y dpkg-sig"
executor.cmd = *exec.Command("bash", "-c", installDpkgSig)

当 bash 会话结束时DEBIAN_FRONTEND将被设置为默认值。

相关内容