/etc/sudoers.d/ ファイルから非対話式でコマンドを実行するには?

/etc/sudoers.d/ ファイルから非対話式でコマンドを実行するには?

私のプロジェクトの目的の1つとして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 =非対話型install コマンドで実行すると正常に動作します。非対話型でインストールをどのように実行しますか?

答え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デフォルト値に設定されます。

関連情報