Como recupero o arquivo de configuração padrão do Samba (sistema baseado em Debian)?

10

Eu instalei recentemente o Samba e estraguei o /etc/samba/smb.confarquivo. Como recupero a configuração original?

Frew Schmidt
fonte
11
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
ThorSummoner

Respostas:

8

Editado :

Detectou isso em uma pergunta de falha no servidor . Se dpkg-reconfigure foonão funcionar, use o seguinte:

  1. Remova ou renomeie o arquivo de configuração quebrado.

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. Solicitar substituições de dpkg.

    sudo dpkg -i --force-confmiss /path/to/samba-common.deb
    

Isso indica dpkgpara substituir os arquivos de configuração ausentes pelos do .deb. Você pode encontrar o pacote original .deb /var/cache/apt/archivesou pode usar uma cópia nova da mesma versão dos repositórios da sua distribuição.

dpkg -i --force-confnew foo.deb

Isso indica dpkgpara substituir os arquivos de configuração existentes pelos do .deb. Você pode encontrar o pacote original .deb /var/cache/apt/archivesou pode usar uma cópia nova da mesma versão dos repositórios da sua distribuição.

charlatão quixote
fonte
Esse sinalizador força apenas dpkga sobrescrever o arquivo de configuração, caso contrário, ele teria pedido permissão para fazê-lo . Isso não o faz recriar magicamente os arquivos de configuração originais do pacote.
Teddy
Eu acredito que você está certo. ok, então você quer o --force-confmisslugar. neste caso em particular, por exemplo, samba, acho --force-confnewque executaria a substituição, mas você está certo de que depende das informações dos scripts de configuração do pacote.
quack quixote
7

Resposta curta: /usr/share/samba/smb.confé a versão original do arquivo smb.conf.

Quando confrontado com esta situação para qualquer pacote, o que faço é um dos seguintes:

  1. Verifique se há arquivos de backup da versão original em seu editor. Eu uso o Emacs, que normalmente deixa foo~arquivos, e configurei a opção de controle numérico de versão para que a versão original seja sempre foo.~1~. Mas talvez você tenha feito de outra maneira ou usado outro editor. Considere verificar a configuração do seu editor para ativar esse recurso, se você ainda não o tiver; é um bom hábito de entrar.

  2. Reconfigure o pacote com dpkg-reconfigure PACKAGENAME. Às vezes isso faz o truque. Na minha experiência, raramente funciona; isso depende de como o pacote está criando seus arquivos de configuração.

  3. Limpe e reinstale o pacote (com apt-get purge packagenameseguido de apt-get install packagename). Isso sempre deve funcionar.

    Em casos extremos, após a limpeza, você deve procurar e excluir manualmente os arquivos de configuração antes de reinstalar o pacote, mas isso é raro. No entanto, isso eliminará quaisquer outros dados e / ou arquivos de configuração do pacote, e isso nem sempre é aceitável.

  4. Faça o download do código-fonte do pacote ( apt-get source foo) e veja se o arquivo de configuração original existe como um arquivo lá. No entanto, pode ser que o arquivo de configuração não exista anteriormente, mas seja criado na instalação pelo script de pós-instalação do pacote.

  5. Verifique o script postinst do pacote ( /var/lib/dpkg/info/foo.postinst) para descobrir onde ele cria o arquivo de configuração e como ele é feito. Em seguida, tente repetir o processo manualmente. Isso é um pouco de trabalho e nem sempre é fácil.

Urso de pelúcia
fonte
Isso deve ser maior. Para mim, foi apenas um caso de sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confsobrescrever meu arquivo conf no lixo com o original.
precisa saber é o seguinte
2

dpkg-reconfigure <package> não modificará os arquivos conf alterados por padrão.

Provavelmente, a maneira mais fácil de fazer isso, se você ainda tiver o pacote no cache do apt, é executar

dpgk -i --force-confask /var/cache/apt/archives/<package file name>

onde o nome do arquivo do pacote geralmente é algo como <package name>_<version>.deb(basta usar a conclusão de tabulação). Isso executará o mesmo processo que um apt-upgrade e perguntará o que você deseja fazer quando encontrar um arquivo conf alterado. Basta entrar Na cada prompt. O dpkg instalará a versão do pacote do arquivo conf .dpkg-distno final do nome do arquivo. Você pode usar vimdiffou alguma outra ferramenta de mesclagem para comparar diferenças e modificar o arquivo conf de leitura.

naught101
fonte
1

Você pode extrair o deb e pegar o arquivo original:

ar p packagename.deb data.tar.gz | tar zx
John T
fonte
Usar dpkg-sourceé mais fácil e usar apt-get source PACKAGEé muito mais fácil.
Teddy
11
@Teddy: somente se o arquivo de configuração padrão estiver incluído no pacote de origem, para começar. muitos pacotes instalam um arquivo de configuração específico do fornecedor; alguns geram automaticamente seus arquivos de configuração no packagename.postinstscript.
quack quixote
1

Você pode baixar novamente e extrair o conteúdo do pacote deb

Mahmoud Hossam
fonte
11
Este é demasiado baixo nível de uma maneira de fazê-lo
Frew Schmidt
4
não significa que ele não vai funcionar
John T
1

A melhor maneira (obtida do #ubuntu) é fazer isso:

dpkg-reconfigure <package>

Nesse caso, isso significa

dpkg-reconfigure samba-common
Frew Schmidt
fonte
1

Você pode restaurar o smb.confarquivo de configuração original assim:

# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common

Isto é basicamente o que o processo de instalação original do pacote faz (no Debian Squeeze).

Isso substituirá você atual smb.conf; portanto, faça um backup primeiro se não quiser perdê-lo.

Totor
fonte
Obrigado por fornecer o nome do pacote que contém este arquivo. "sudo aptitude purge samba-common; sudo aptitude install samba" foi minha escolha, mas a resposta de Totor parece a menos assustadora e mais Debian das opções.
Martin Dorey
-1
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf

e

$ sudo dpkg --configure -a

fará o trabalho.

Kushagra Karira
fonte
Isso é quase idêntico a todas as outras respostas aqui. Também está em um post de '14.
var firstName