Bagaimana cara memeriksa file konfigurasi yang dimodifikasi pada sistem Debian?


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

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


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).


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)


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.


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.


1
FYI, git logsekarang memiliki --invert-grepopsi yang memungkinkan menyaring komitmen yang tidak menarik tanpa menggunakan sed.
Neil Mayhew
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.