Làm cách nào để kiểm tra các tệp cấu hình đã sửa đổi trên hệ thống Debian?


62

Làm cách nào để tìm tất cả các tệp cấu hình được quản lý Debian đã được thay đổi từ mặc định?


1
Câu hỏi ở đây. Câu trả lời dưới đây.
Dennis Williamson

Tôi chuyển câu trả lời bạn cung cấp vào câu trả lời của bạn.
Zoredache

Câu trả lời:


78

Để tìm tất cả các tệp cấu hình được quản lý Debian đã được thay đổi từ mặc định, bạn có thể sử dụng một lệnh như thế này.

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

Chỉnh sửa (hoạt động với các hệ thống cục bộ):

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

Chỉnh sửa (hoạt động với các gói có OK trong tên tệp):

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

Hoạt động như bùa mê trên Ubuntu 10,4, tôi sẽ nâng cấp bạn hàng ngàn lần :-)
Ludwig Weinzierl

làm việc tuyệt vời bạn có thể sử dụng md5sum --quietmặc dù để tránh lọc các tệp OK với awk(và do đó các vấn đề nội địa hóa?). Nhân tiện: bạn không biết cách bao gồm các tệp không bị theo dõi trong / etc? Giống như những người trong / etc / apache2 / site-Available chẳng hạn?
sfussalanger

Sẽ rất thú vị khi biết câu trả lời của tôi ( debsums -ec) thực sự hoạt động như thế nào , bởi vì nó dường như nhận được ít kết quả hơn thế này.
ness101

Ngoài ra, rõ ràng các tệp conf duy nhất được kiểm tra cho các phiên bản gói là những tệp xuất hiện debsums -ec: nếu tôi sử dụng phương pháp này để khởi tạo lại các phiên bản gói , thì một số tệp được liệt kê qua phương thức này sẽ không thay đổi.
ness101

Như một kiểm tra bổ sung để xem những thay đổi cấu hình nào có thể đang chờ xử lý hoặc lỗi thờifind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka

47

từ man debsums:

  debsums -ce
          List changed configuration files.

1
Đây là câu trả lời đơn giản và tốt nhất.
mfisch

1
Chỉ có debsums không được cài đặt theo mặc định và bạn có thể không muốn cài đặt nó.
Alexis Wilke

1
@AlexisWilke: đó là 218kb và có sự phụ thuộc tối thiểu ...
naught 101

11

Xin lỗi vì necro, nhưng trong khi câu trả lời của @ naught101 là chính xác cho các tệp đã sửa đổi , thì nó không giúp ích gì cho các tệp được thêm vào . Giải pháp của @ Graeme là tốt, nhưng phụ thuộc vào người quản lý; Tôi không muốn sửa đổi hệ thống tập tin.

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

Tìm tập tin trong / etc / mà debsumskhông không báo cáo là hợp lệ. Điều này có nghĩa là các tệp không được theo dõi hoặc các tệp không "OK" (băm không khớp).


Người ta cũng nên chạy debsums --list-missingđể kiểm tra nếu một hoặc nhiều gói bị thiếu tổng kiểm của các tệp được bao gồm. Ngày nay đầu ra nên trống.
Mikko Rantalainen

8

Tôi thường thích thiết lập etckeeper trên hệ thống ngay lập tức. Với một cái gì đó như vân vân, tôi có thể tìm thấy không chỉ khi tệp khác nhau, mà tôi thực sự có thể nhận được một khác biệt chính xác là nó khác nhau như thế nào.

Xem:


6

Hoặc debsums -e | grep FAILED cũng sẽ hiển thị tất cả các conffile bị thiếu

(từ gói debsums)


2

Điều này có thể là quá mức nhưng vì ai đó đã đề cập đến người quản lý và trong khi tôi đang điều tra rằng tôi đã bắt gặp viên ngọc khác này có thể hữu ích hơn nếu bạn đang cố gắng tìm ra những điều "sau thực tế".

http://devstructure.com/blueprint/

Blueprint là một công cụ quản lý cấu hình đơn giản giúp đảo ngược các máy chủ kỹ sư. Nó chỉ ra những gì bạn đã thực hiện thủ công, lưu trữ cục bộ trong kho Git, tạo mã có thể tạo lại những nỗ lực của bạn và giúp bạn triển khai những thay đổi đó vào sản xuất.


Không rõ ràng từ trang chủ của họ (có vẻ hơi lỗi thời) nếu Python-3 được hỗ trợ. Có ai thử chưa?
sphakka

Đánh giá từ repo GitHub hoạt động cách đây vài năm, tôi sẽ không đặt cược quá nhiều tiền vào nó hoạt động trong Python3, nhưng nó có vẻ được viết khá tốt, vì vậy có thể không phải là một nỗ lực lớn để thêm vào Python3 ủng hộ.
dragon788

1

Điều này khởi hành một chút so với câu hỏi ban đầu ở chỗ nó cũng sẽ cung cấp các tệp cấu hình ADDED thay vì chỉ các tệp được sửa đổi. Mặc dù các tệp không được bao gồm trong bất kỳ gói gỡ lỗi nào cũng sẽ bị bắt. Cả hai hành vi cũng có thể được mong muốn.

Nó phụ thuộc vào việc sử dụng etckeeper với git vcs lý tưởng ngay từ đầu, mặc dù nó cũng hoạt động nếu bạn thêm và cam kết các tệp đã thay đổi trước đó sau lần cam kết đầu tiên. Lưu ý rằng một điều đáng chú ý ở đây là Ubuntu cấu hình etckeeper để sử dụng Bazaar theo mặc định (Bazaar tài trợ Canonical), thay vì mặc định git được đặt bởi các nhà phát triển etckeeper.

Ý tưởng là để có được một danh sách tất cả các cam kết không được thực hiện tự động sau khi chạy apt. Sau đó liệt kê các tệp đã thay đổi trong tất cả trừ lần cam kết đầu tiên:

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"

Chuỗi bộ lọc cũng có thể được mở rộng để bao gồm các cam kết khác nếu chúng được đặt tên nhất quán. Có thể tốt cho việc cài đặt trực tiếp từ tệp deb hoặc từ mã nguồn.

Một tập tin đáng chú ý mà cái này chọn cho tôi là của tôi xorg.conf- bạn hiện phải tự thêm nó vào / etc / X11 nếu bạn cần. Ngoài ra các default/grubthay đổi của tôi được chọn, có vẻ như điều này được sao chép từ / usr / share bởi một tập lệnh cài đặt bài đăng thay vì được liệt kê như một phần của gói. Nếu một thay đổi đã được thực hiện đối với một tệp như thế này, các phương thức liên quan đến dpkg sẽ không tiết lộ nó.


1
FYI, git loghiện có một --invert-greptùy chọn cho phép lọc ra các cam kết không thú vị mà không cần sử dụng sed.
Neil Mayhew
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.