Preseed

如何預置 debconf 密碼欄位?

  • February 8, 2018

我之前問過(並回答了)一個關於如何在 Ubuntu 上預置 debconf 的問題:你如何從以前安裝的包中預置 debconf?

我發現只是附加到 config.dat 文件有效。但是附加到 passwords.dat 文件不起作用,因為它似乎創建了一個空白(或其他不可用的密碼)。passwords.dat preseed 看起來像這樣:

Name: couchdb/adminpass
Template: couchdb/adminpass
Value: 
Owners: couchdb
Flags: seen

Name: couchdb/adminpass_again
Template: couchdb/adminpass_again
Value: 
Owners: couchdb
Flags: seen

我是否在值欄位中添加任何內容都沒有關係 - 嘗試輸入管理員密碼時 Couch 無論如何都會崩潰。

如何在 debconf 中預配置密碼資訊?

不確定您是否找到了解決方案,但似乎沒有很好或直覺的方法來做到這一點。有一些解決方案,雖然……

首先,您可以從包中嘗試debconf-set-selections手冊頁(不是所有有用的))。這似乎旨在將配置從一台機器鏡像到另一台機器。它接受帶有逐行命令的文件(可能是用. 您也可以通過啟動它並傳遞命令(用於退出),或者您可以通過 echo 管道輸入命令。debconfdebconf-get-selections > my-conf.debconf``STDIN``debconf-get-selections``sudo debconf-set-selections``ctrl-d

輸入語法似乎類似於

[package-name] [package-name]/[question-name] [type] [value]

例如,要將 openssh 伺服器配置為在任何人通過 debconf 安裝 sshd 時預設拒絕 root 密碼,您可以執行

echo "openssh-server openssh-server/permit-root-login boolean false" | sudo debconf-set-selections

或者,您可以使用debconf-communicate類似於 的程序,debconf-set-selections但它允許使用此處找到的命令進行更具互動性的會話。你可以這樣使用它:

$ sudo debconf-communicate
$ GET openssh-server/permit-root-login
$ 0 false
$ SET openssh-server/permit-root-login true
$ 0 value set
$ GET openssh-server/permit-root-login
$ 0 true
$ FSET openssh-server/permit-root-login seen true
$ 0 true
$ FGET openssh-server/permit-root-login seen       
$ 0 true
$ SET openssh-server/permit-root-login false
$ 0 value set

對於有人突然闖入並編寫更好的 debconf 前端來說,這感覺像是成熟的領域……

顯然,如果您正在編寫腳本,那麼最好的選擇就是debconf-set-selections路線。

作為最後一點,不幸的是,找出軟體包可用的選項更加困難。您的選擇包括:

  1. 通過 下載包sudo apt-get download [package-name] [dir],通過 解包dpkg-deb -R [filename] [unpacked-dirname],檢查[unpacked-dirname]/DEBIAN/templates文件;或者
  2. 用於sudo debconf-show [package-name]查看已安裝軟體包的配置問題。(請注意,軟體包不必以自己的名義註冊問題。)

無論如何,希望對您有所幫助…

引用自:https://unix.stackexchange.com/questions/387952