Bir Debian sistemindeki değiştirilmiş yapılandırma dosyaları nasıl kontrol edilir?


Yanıtlar:


78

Varsayılandan değiştirilen tüm Debian yönetilen konfigürasyon dosyalarını bulmak için böyle bir komut kullanabilirsiniz.

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

Düzenleme (yerelleştirilmiş sistemlerle çalışır):

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

Düzenle (dosya adında Tamam olan paketlerle çalışır):

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

Ubuntu 10.4'te cazibeye benziyor, sizi binlerce kez büyütürüm :-)
Ludwig Weinzierl

harika çalışıyor md5sum --quietTamam dosyalarını filtrelemekten kaçınmak için kullanabilirsiniz awk(ve böylece yerelleştirme sorunları?). Bu arada: / etc içine izlenmeyen dosyaları nasıl ekleyeceğinizi bilmiyor musunuz? Örneğin / etc / apache2 / sites'de bulunanlar gibi mi?
sfussenegger

Cevabımın ( debsums -ec) gerçekte nasıl çalıştığını bilmek ilginç olurdu , çünkü bundan daha az sonuç alıyor gibi görünüyor.
naught101

Ayrıca, görünüşe göre sadece conf dosyaları paket sürümleri için kontrol edilir ve sonra gelenler de gelir debsums -ec: bu yöntemi paket sürümlerini yeniden kurmak için kullanırsam, bu yöntemle listelenen dosyaların bazıları değişmez.
naught101

Hangi yapılandırma değişikliklerinin beklemede ya da eskimiş olabileceğini görmek için ek bir kontrol olarakfind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka

47

from man debsums:

  debsums -ce
          List changed configuration files.

1
Bu, bugüne kadarki en basit ve en iyi cevap.
mfisch

1
Yalnızca debsums'lar varsayılan olarak yüklenmez ve yüklemek istemeyebilirsiniz.
Alexis Wilke

1
@AlexisWilke: 218kb ve minimum bağımlılığı var ...
naught101

11

Necro için üzgünüm, fakat @ naught101 adlı kullanıcının yanıtı değiştirilmiş dosyalar için doğru olsa da, eklenen dosyalar için yardımcı olmadı . @ Graeme'nin çözümü iyi, ancak eteeper'a bağlı; Dosya sistemini değiştirmek istemiyorum.

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

/ Etc / içinde debsumsgeçerli olmayan raporları bulun . Bu, izlenmemiş dosyalar veya "Tamam" olmayan dosyalar (hash'ler eşleşmiyor) anlamına gelir.


Ayrıca debsums --list-missingbir veya daha fazla paketin içerilen dosyaların sağlama toplamı olup olmadığını kontrol etmek için de çalıştırılması gerekir . Günümüzde çıktı boş olmalıdır.
Mikko Rantalainen


5

Veya debsums -e | grep FAILED, aynı zamanda tüm eksik karışımları da gösterecektir.

(debsums paketinden)


2

Bu fazlaca olabilir, ancak biri eterden bahsettiğinden ve araştırma yaparken, "gerçekte sonra" bazı şeyleri anlamaya çalışıyorsanız, daha yararlı olabilecek diğer gemiyle karşılaştığımdan beri.

http://devstructure.com/blueprint/

Blueprint, sunucuları tersine işleyen basit bir konfigürasyon yönetim aracıdır. El ile yaptığınızı tespit eder, yerel olarak Git deposunda saklar, çabalarınızı yeniden yaratabilecek kod üretir ve bu değişiklikleri üretime dağıtmanıza yardımcı olur.


Python-3 destekleniyorsa, ana sayfalarından (biraz modası geçmiş görünüyor) net değil. Kimse denedi mi?
sphakka

GitHub deposundan en son birkaç yıl önce aktif olduğuna bakılırsa, kutudan çıkarılmış Python3'te çalışırken çok fazla para yatırmazdım, ancak oldukça iyi yazılmış görünüyor, bu yüzden Python3'e eklemek çok büyük bir çaba olmayabilir. destek.
dragon788

1

Bu, sadece değiştirilmiş olanların aksine, ADDED yapılandırma dosyalarını da vereceği yönündeki asıl sorudan biraz uzaklaşıyor. Her ne kadar deb paketinde bulunmayan dosyalar da yakalanacak. Her iki davranış da arzu edilebilir.

Etckeeper'ı git vcs ile en baştan ideal olarak kullanmaya bağlıdır, ancak ilk işlemden sonra daha önce değiştirilmiş dosyaları ekleyip eklerseniz de çalışması gerekir . Buradakilerin, Ubuntu'nun etckeeper geliştiricileri tarafından ayarlanan git varsayılanı yerine varsayılan olarak Bazaar'ı (Canonical sponsoru Bazaar) kullanması için etckeeper'ı yapılandırdığını unutmayın.

Buradaki fikir, otomatik olarak yapılmayan ve apt çalıştırılmamış tüm taahhütlerin bir listesini almaktır. Ardından, değiştirilen dosyaları, ilk işin dışında listele:

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"

Filtre dizgisi, eğer tutarlı bir şekilde adlandırılırlarsa, diğer taahhütleri kapsayacak şekilde genişletilebilir. Doğrudan bir deb dosyasından veya kaynak koddan kurulum için iyi olabilir.

Bunun benim için aldığı önemli bir dosya benim. xorg.conf- İhtiyacınız olursa, şu anda / etc / X11 dosyasına kendiniz eklemelisiniz. Ayrıca default/grubdeğişikliklerim toplandı, görünüşe göre bir paketin parçası olarak listelenmek yerine / usr / share'ten post install betiği ile kopyalanıyor. Böyle bir dosyada değişiklik yapılmışsa, dpkg ile ilgili yöntemler onu ortaya çıkarmaz.


1
Bilginize, git logşimdi --invert-grepilginç olmayan komisyonların kullanılmadan filtrelenmesini sağlayan bir seçenek var sed.
Neil Mayhew
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.