Bagaimana cara memeriksa file konfigurasi yang dimodifikasi pada sistem Debian?

62

Bagaimana menemukan semua file konfigurasi yang dikelola Debian yang telah diubah dari default?

malclocke
sumber
1
Pertanyaannya ada di sini. Jawabannya ada di bawah.
Dennis Williamson
Saya memindahkan jawaban yang Anda berikan ke jawaban Anda.
Zoredache

Jawaban:

78

Untuk menemukan semua file konfigurasi yang dikelola Debian yang telah diubah dari default, Anda dapat menggunakan perintah seperti ini.

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print $2,$1}' | md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}'

Edit (berfungsi dengan sistem terlokalisasi):

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}' | sort | less

Edit (berfungsi dengan paket dengan OK di nama file):

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK$/{print $1}' | sort | less
malclocke
sumber
Bekerja seperti pesona di Ubuntu 10.4, saya akan mendukung Anda ribuan kali :-)
Ludwig Weinzierl
bekerja dengan baik. Anda dapat menggunakan md5sum --quietmeskipun untuk menghindari pemfilteran file OK dengan awk(dan dengan demikian masalah pelokalan?). Omong-omong: Anda tidak tahu cara memasukkan file yang tidak terlacak dalam / etc? Seperti yang ada di / etc / apache2 / sites-available misalnya?
sfussenegger
Akan menarik untuk mengetahui bagaimana jawaban saya ( debsums -ec) benar-benar berfungsi, karena tampaknya mendapatkan hasil yang jauh lebih sedikit daripada ini.
naught101
Selain itu, tampaknya hanya file conf yang diperiksa untuk versi paket kemudian yang muncul debsums -ec: jika saya menggunakan metode ini untuk menginstal ulang versi paket , maka beberapa file yang terdaftar melalui metode ini tidak berubah.
naught101
Sebagai pemeriksaan tambahan untuk melihat perubahan konfigurasi apa yang mungkin tertunda atau usangfind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka
47

dari man debsums:

  debsums -ce
          List changed configuration files.
tidak ada apa-apa101
sumber
1
Sejauh ini, inilah jawaban yang paling sederhana dan terbaik.
mfisch
1
Hanya debsums yang tidak diinstal secara default dan Anda mungkin tidak ingin menginstalnya.
Alexis Wilke
1
@AlexisWilke: 218kb dan memiliki dependensi minimal ...
naught101
11

Maaf necro, tetapi sementara jawaban @ naught101 benar untuk file yang dimodifikasi , itu tidak membantu untuk file yang ditambahkan . @ Graeme's solusinya bagus, tetapi tergantung pada dllkeeper; Saya tidak ingin memodifikasi sistem file.

find /etc -type f | grep -vFf <(debsums -e -r /etc | sed 's/[[:space:]]*OK$//')

Cari file di / etc / yang debsumstidak tidak melaporkan sebagai valid. Ini berarti file yang tidak dilacak atau file yang bukan "OK" (hash tidak cocok).

blast_hardcheese
sumber
Satu juga harus dijalankan debsums --list-missinguntuk memeriksa apakah satu atau lebih paket tidak ada checksum dari file yang disertakan. Saat ini hasilnya harus kosong.
Mikko Rantalainen
6

Atau debsums -e | grep GAGAL yang juga akan menampilkan semua file yang hilang

(dari paket debsums)

Wookey
sumber
2

Ini mungkin berlebihan tetapi karena seseorang menyebutkan penjaga dll dan ketika saya sedang menyelidiki bahwa saya menemukan permata lain ini yang mungkin lebih berguna jika Anda mencoba untuk mencari tahu hal-hal "setelah fakta".

http://devstructure.com/blueprint/

Blueprint adalah alat manajemen konfigurasi sederhana yang merekayasa balik server. Itu mengetahui apa yang telah Anda lakukan secara manual, menyimpannya secara lokal di repositori Git, menghasilkan kode yang dapat menciptakan kembali upaya Anda, dan membantu Anda menyebarkan perubahan itu ke produksi.

dragon788
sumber
Tidak jelas dari beranda mereka (terlihat agak ketinggalan jaman) jika Python-3 didukung. Adakah yang mencoba?
sphakka
Menilai dari repo GitHub yang terakhir aktif beberapa tahun yang lalu, saya tidak akan bertaruh terlalu banyak uang untuk itu bekerja di Python3 di luar kotak, tetapi tampaknya ditulis dengan cukup baik, jadi mungkin bukan upaya yang sangat besar untuk menambahkan Python3 dukung.
dragon788
1

Ini menyimpang sedikit dari pertanyaan awal karena ia juga akan memberikan file konfigurasi ADDED sebagai ganti hanya yang dimodifikasi. Meskipun file tidak termasuk dalam paket deb juga akan ditangkap. Kedua perilaku mungkin diinginkan.

Itu tergantung pada telah menggunakan dllkeeper dengan git vcs idealnya dari awal, meskipun juga harus bekerja jika Anda secara khusus menambahkan dan melakukan file yang sebelumnya diubah setelah komit pertama. Perhatikan bahwa satu yang didapat di sini adalah Ubuntu mengonfigurasi etckeeper untuk menggunakan Bazaar secara default (Canonical sponsor Bazaar), daripada git default yang ditetapkan oleh pengembang etckeeper.

Idenya adalah untuk mendapatkan daftar semua komit yang tidak dibuat secara otomatis setelah dan tepat dijalankan. Kemudian buat daftar file yang diubah di semua kecuali komit pertama:

filter_sed="/committing changes in \/etc after apt run\$/d"

etckeeper vcs log --oneline |
  sed "$filter_sed; \$d; s/ .*//" |
  xargs etckeeper vcs show --name-only --format=format: |
  sort |
  uniq |
  sed "/^\$/d"

String filter juga dapat diperluas untuk mencakup komit lainnya jika diberi nama secara konsisten. Mungkin baik untuk menginstal langsung dari file deb atau dari kode sumber.

File penting yang saya ambil ini milik saya xorg.conf- Anda saat ini harus menambahkan ini ke / etc / X11 sendiri jika Anda membutuhkannya. default/grubPerubahan saya juga diambil, sepertinya ini disalin dari / usr / share oleh skrip instalasi pos daripada terdaftar sebagai bagian dari paket. Jika ada perubahan pada file seperti ini, metode terkait dpkg tidak akan mengungkapkannya.

Graeme
sumber
1
FYI, git logsekarang memiliki --invert-grepopsi yang memungkinkan menyaring komitmen yang tidak menarik tanpa menggunakan sed.
Neil Mayhew