Como pré-configurar campos de senha do debconf?

1

Eu já fiz (e respondi) uma pergunta sobre como fazer o preseed do debconf no Ubuntu: Como você pré-configurou o debconf a partir de um pacote previamente instalado?

Eu descobri que apenas anexar ao arquivo config.dat funcionou. No entanto, o acréscimo ao arquivo passwords.dat não funcionou porque parecia criar uma senha em branco (ou de outra forma inutilizável). O passwords.dat preseed se parece com isso:

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

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

Não importa se eu adicionei alguma coisa no campo de valor - o Couch falha de qualquer maneira ao tentar digitar a senha do administrador.

Como faço para pré-configurar as informações de senha no debconf?

    
por Zach Smith 23.08.2017 / 20:14

2 respostas

1

Não tenho certeza se você encontrou uma solução ainda, mas parece não haver uma maneira excelente ou intuitiva de fazer isso. Existem algumas soluções, embora ....

Primeiro, você pode tentar debconf-set-selections ( página do manual (não é tão útil)) do debconf package . Isto parece ter sido destinado a espelhar as configurações de uma máquina para outra. Ele aceita um arquivo com comandos linha por linha (presumivelmente criados com debconf-get-selections > my-conf.debconf ) ou STDIN input (presumivelmente canalizado de debconf-get-selections em outra máquina). Você também pode ativá-lo via sudo debconf-set-selections e entregar comandos (usando ctrl-d para sair), ou você pode enviar comandos através do echo.

A sintaxe de entrada para isso parece ser algo como

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

Por exemplo, para configurar o servidor openssh para negar senhas root por padrão sempre que alguém instala sshd via debconf, você poderia rodar

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

Como alternativa, você pode usar o programa debconf-communicate , que é semelhante a debconf-set-selections , exceto pelo fato de permitir uma sessão mais interativa usando os comandos encontrados aqui . Você pode usar isto assim:

$ 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

Isso parece um território maduro para alguém entrar e escrever um front end melhor do debconf ....

Obviamente, se você estiver criando scripts, sua melhor aposta seria a debconf-set-selections route.

Como nota final, infelizmente, descobrir quais opções estão disponíveis para um pacote é ainda mais difícil. Suas opções incluem:

  1. Baixando o pacote via sudo apt-get download [package-name] [dir] , descompactando-o via dpkg-deb -R [filename] [unpacked-dirname] e inspecionando o arquivo [unpacked-dirname]/DEBIAN/templates ; ou
  2. Usando sudo debconf-show [package-name] para exibir perguntas de configuração para pacotes já instalados. (Observe que os pacotes NÃO precisam registrar as perguntas sob seu próprio nome.)

De qualquer forma, espero que ajude ...

    
por 07.02.2018 / 22:54
0

Como mencionado na resposta aceita, debconf-set-selections foi o melhor caminho para isso.

Basicamente você precisa instalar o pacote manualmente primeiro e então olhar através do banco de dados debconf para ver quais entradas são criadas (não me lembro de como eu fiz isso, desculpe).

Em seguida, você pode criar um script .sh que pré-propagará essas entradas para você. Este é o código que mostra como pré-semear o instalador do pacote do CouchDB 2.0:

HOST = aaa
USER = bbb
COUCH_PSWD = ccc

debconf-set-selections <<< 'couchdb couchdb/bindaddress string 0.0.0.0';
debconf-set-selections <<< 'couchdb couchdb/cookie string monster';
debconf-set-selections <<< 'couchdb couchdb/mode string clustered';
debconf-set-selections <<< 'couchdb couchdb/nodename string couchdb@#{HOST}';
debconf-set-selections <<< 'couchdb couchdb/adminpass password #{COUCH_PSWD}';
debconf-set-selections <<< 'couchdb couchdb/adminpass_again password #{COUCH_PSWD}';
    
por 08.02.2018 / 08:38