Bagaimana saya mendapatkan kembali file konfigurasi Samba default (sistem berbasis Debian)?

10

Saya baru-baru ini menginstal Samba dan saya mengacaukan /etc/samba/smb.conffile. Bagaimana saya mendapatkan konfigurasi asli kembali?

Frew Schmidt
sumber
1
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
ThorSummoner

Jawaban:

8

Diedit :

Melihat ini pada pertanyaan kesalahan server . Jika dpkg-reconfigure footidak berhasil, gunakan ini:

  1. Hapus atau ganti nama file konfigurasi yang rusak.

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. Minta penggantian dari dpkg.

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

Ini memberitahu Anda dpkguntuk mengganti file konfigurasi yang hilang dengan yang dari deb. Anda mungkin menemukan paket asli .deb di /var/cache/apt/archives, atau Anda dapat menggunakan salinan baru dari versi yang sama dari repositori distribusi Anda.

dpkg -i --force-confnew foo.deb

Ini memberitahu Anda dpkguntuk menimpa file konfigurasi yang ada dengan file .deb. Anda mungkin menemukan paket asli .deb di /var/cache/apt/archives, atau Anda dapat menggunakan salinan baru dari versi yang sama dari repositori distribusi Anda.

quack quixote
sumber
Bendera itu hanya memaksa dpkguntuk menimpa file konfigurasi jika jika tidak meminta izin untuk melakukannya . Itu tidak membuatnya secara ajaib membuat kembali file konfigurasi asli dari paket.
Teddy
aku percaya kamu benar ok, jadi Anda ingin yang --force-confmisssebaliknya. dalam kasus khusus ini, misalnya samba, saya pikir --force-confnewakan melakukan overwrite, tetapi Anda benar bahwa itu tergantung pada rincian skrip konfigurasi paket.
quack quixote
7

Jawaban singkat: /usr/share/samba/smb.confadalah versi asli dari file smb.conf.

Ketika dihadapkan pada situasi ini untuk paket apa pun, apa yang saya lakukan adalah salah satu dari yang berikut:

  1. Periksa file cadangan versi asli dari editor Anda. Saya menggunakan Emacs, yang biasanya meninggalkan foo~file, dan saya telah mengatur opsi kontrol versi numerik sehingga versi aslinya selalu foo.~1~. Tapi mungkin Anda melakukannya dengan cara lain, atau menggunakan editor lain. Pertimbangkan untuk memeriksa konfigurasi editor Anda untuk mengaktifkan fitur ini jika Anda belum melakukannya; itu kebiasaan yang baik untuk masuk.

  2. Konfigurasikan ulang paket dengan dpkg-reconfigure PACKAGENAME. Terkadang ini berhasil. Dalam pengalaman saya itu jarang berhasil; itu tergantung pada bagaimana paket membuat file konfigurasinya.

  3. Bersihkan dan instal ulang paket (dengan apt-get purge packagenamediikuti oleh apt-get install packagename). Ini harus selalu berhasil.

    Dalam kasus ekstrem Anda harus, setelah membersihkan, secara manual memburu dan menghapus file konfigurasi sebelum menginstal ulang paket, tetapi ini jarang terjadi. Namun, ini akan menghilangkan data dan / atau file konfigurasi lainnya untuk paket, dan itu tidak selalu dapat diterima.

  4. Unduh kode sumber untuk paket ( apt-get source foo) dan lihat apakah file konfigurasi asli ada sebagai file di sana. Namun, mungkin file config tidak ada sebelumnya, tetapi dibuat saat instalasi oleh skrip post-install paket.

  5. Periksa skrip postinst untuk paket ( /var/lib/dpkg/info/foo.postinst) untuk mencari tahu di mana ia menciptakan file konfigurasi dan bagaimana melakukannya. Kemudian coba ulangi proses secara manual. Ini sedikit kerja, dan tidak selalu mudah.

Teddy
sumber
Ini harus lebih tinggi. Bagi saya itu hanya kasus sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confuntuk menimpa file conf trash saya dengan yang asli.
edzillion
2

dpkg-reconfigure <package> tidak akan mengubah file conf yang diubah secara default.

Mungkin cara termudah untuk melakukan ini, jika Anda masih memiliki paket di cache apt adalah menjalankan

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

di mana nama file paket biasanya kira-kira seperti <package name>_<version>.deb(gunakan saja penyelesaian tab). Ini akan berjalan melalui proses yang sama dengan apt-upgrade, dan menanyakan apa yang ingin Anda lakukan ketika menemukan file conf yang diubah. Cukup masukkan Ndi setiap prompt. dpkg akan menginstal versi paket dari file conf dengan .dpkg-distdi akhir nama file. Anda kemudian dapat menggunakan vimdiffatau beberapa alat penggabung lainnya untuk membandingkan perbedaan, dan memodifikasi file read conf.

tidak ada apa-apa101
sumber
1

Anda dapat mengekstrak deb dan mengambil file asli:

ar p packagename.deb data.tar.gz | tar zx
John T
sumber
Menggunakan dpkg-sourcelebih mudah, dan menggunakan apt-get source PACKAGEadalah jauh lebih mudah.
Teddy
1
@Teddy: hanya jika file konfigurasi default disertakan dalam paket sumber untuk memulai. banyak paket menginstal file konfigurasi khusus vendor; beberapa otomatis menghasilkan file konfigurasi mereka dalam packagename.postinstskrip.
Quack quixote
1

Anda dapat mengunduh dan mengekstrak isi paket deb

Mahmoud Hossam
sumber
1
Ini adalah cara yang terlalu rendah untuk melakukannya
Frew Schmidt
4
tidak berarti itu tidak akan berhasil
John T
1

Cara terbaik (didapat dari #ubuntu) adalah dengan melakukan ini:

dpkg-reconfigure <package>

Dalam hal ini artinya

dpkg-reconfigure samba-common
Frew Schmidt
sumber
1

Anda dapat mengembalikan smb.conffile konfigurasi asli seperti ini:

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

Ini pada dasarnya adalah apa yang dilakukan proses instalasi paket asli (pada Debian Squeeze).

Ini akan menimpa Anda saat ini smb.conf, jadi buat cadangan terlebih dahulu jika Anda tidak ingin kehilangannya.

Totor
sumber
Terima kasih telah menyediakan nama paket yang berisi file ini. "sudo aptitude purge samba-common; sudo aptitude install samba" adalah pilihan saya, tetapi jawaban Totor terlihat paling menakutkan dan paling Debian dari pilihan.
Martin Dorey
-1
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf

dan

$ sudo dpkg --configure -a

akan melakukan pekerjaan itu.

Kushagra Karira
sumber
Ini hampir identik dengan semua jawaban lain di sini. Itu juga pada posting dari '14.
var firstName