Câu trả lời:
Tôi không nghĩ vậy, trong tổng kiểm tra md5 của Ubuntu chỉ được lưu trữ cho một số tệp nhất định. Đối với bất kỳ gói nào, danh sách các tệp có tổng kiểm tra có thể được tìm thấy trong
/var/lib/dpkg/info/<package>.md5sums
ví dụ
/var/lib/dpkg/info/openssh-server.md5sums
Chúng thường không chứa một danh sách đầy đủ các tệp đã được cài đặt bởi một gói, ví dụ: openssh-server.md5sums
bb5096cf79a43b479a179c770eae86d8 usr/lib/openssh/sftp-server
42da5b1c2de18ec8ef4f20079a601f28 usr/sbin/sshd
8c5592e0d522fa0f8f55f3c104479ef5 usr/share/lintian/overrides/openssh-server
cfcb67f58bcd1edcaa5a770863e49304 usr/share/man/man5/sshd_config.5.gz
71a51cbb514da3044b277e05a3ceaf0b usr/share/man/man8/sshd.8.gz
222d4da61fcb3c65b4e6e83944752f20 usr/share/man/man8/sftp-server.8.gz
Bạn có thể sử dụng lệnh debsums (sudo apt-get install debsums) để kiểm tra các tệp có chữ ký md5
debsums openssh-server
/usr/lib/openssh/sftp-server OK
/usr/sbin/sshd OK
/usr/share/lintian/overrides/openssh-server OK
/usr/share/man/man5/sshd_config.5.gz OK
/usr/share/man/man8/sshd.8.gz OK
/usr/share/man/man8/sftp-server.8.gz OK
Như trong dpkg / 1.17.2, nó thực hiện --verify
tùy chọn, theo báo cáo lỗi debian này .
Lưu ý đây là một thay đổi tương đối mới đối với dpkg. Date: Thu, 05 Dec 2013 04:56:31 +0100
dòng trong gói dpkg v1.17.2 cho thấy điều này.
Dưới đây là một mô tả ngắn gọn về --verify
hành động được trích dẫn từ trang man của dpkg.
-V, --verify [package-name...] Verifies the integrity of package-name or all packages if omit‐ ted, by comparing information from the installed paths with the database metadata. The output format is selectable with the --verify-format option, which by default uses the rpm format, but that might change in the future, and as such programs parsing this command output should be explicit about the format they expect.
Vì vậy, bạn có thể chỉ cần sử dụng cú pháp tương tự như yum
để thực hiện xác minh và nhận kết quả ở định dạng vòng / phút . Ví dụ:
dpkg --verify openssh-server
hoặc chỉ sử dụng dpkg --verify
để xác minh mọi gói đơn được cài đặt trên hệ thống của bạn.
PS
Chạy, nói dpkg --verify bash
, trên máy của tôi đã cho tôi một cái gì đó như thế này. (Tôi đang chạy dpkg / 1.17.5)
??5?????? c /etc/bash.bashrc
??5?????? c /etc/skel/.bashrc
Có vẻ như các gói .deb chỉ chứa siêu dữ liệu md5sums để xác minh.
??5?????? c
...
??5??????
có nghĩa là: MD5 Checksum khác và c = "đó là tệp cấu hình"
sudo dpkg -V | grep -v '??5?????? c'
Có công cụ gỡ lỗi bạn có thể kiểm tra.
# apt-cache search debsums
debsums - tool for verification of installed package files against MD5 checksums
Thông thường tôi có một danh sách các tập tin mà tôi muốn xác minh.
Vì vậy, đây là một hàm bash đơn giản thực hiện nhiều hơn hoặc ít hơn những gì bạn muốn:
dpkg-verify() {
exitcode=0
for file in $*; do
pkg=`dpkg -S "$file" | cut -d: -f 1`
hashfile="/var/lib/dpkg/info/$pkg.md5sums"
if [ -s "$hashfile" ]; then
rfile=`echo "$file" | cut -d/ -f 2-`
phash=`grep -E "$rfile\$" "$hashfile" | cut -d\ -f 1`
hash=`md5sum "$file" | cut -d\ -f 1`
if [ "$hash" = "$phash" ]; then
echo "$file: ok"
else
echo "$file: CHANGED"
exitcode=1
fi
else
echo "$file: UNKNOWN"
exitcode=1
fi
done
return $exitcode
}
Sử dụng như thế này:
dpkg-verify /bin/ls /usr/bin/ld
Đầu ra trên môi trường của tôi:
/bin/ls: ok
/usr/bin/ld: UNKNOWN
Tất nhiên, khá đơn giản để viết một bí danh / tập lệnh tương tự để kiểm tra các tệp từ một gói cụ thể.
Tôi sử dụng lệnh này để kiểm tra tất cả các gói:
dpkg -l | awk {'print $2'} | xargs | debsums | grep -v 'OK'
Bạn nên cài đặt các gói debsumbs, gawk và findutils.
debsums: can't open fwupd file /var/lib/polkit-1/localauthority/10-vendor.d/fwupd.pkla (Permission denied) debsums: can't open geoclue-2.0 file /var/lib/polkit-1/localauthority/10-vendor.d/geoclue-2.0.pkla (Permission denied)