dpkg는 설치된 패키지에서 파일을 확인할 수 있습니까?


30

rpm -qV openssh-server나는 기본에 비해 변경된 파일의 목록을 얻을 것이다.

~$ rpm -qV openssh-server
S.?....T.  c /etc/ssh/sshd_config
~$ 

dpkg우분투에서도 똑같이 할 수 있습니까 ?

답변:


21

나는 그렇게 생각하지 않는다. 우분투에서 md5 체크섬은 특정 파일에 대해서만 저장된다. 특정 패키지에 대해 체크섬이있는 파일 목록은

/var/lib/dpkg/info/<package>.md5sums

예 :

/var/lib/dpkg/info/openssh-server.md5sums

이들은 일반적으로 패키지에 의해 설치된 전체 파일 목록을 포함하지 않습니다 (예 : 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

debsums 명령 (sudo apt-get install debsum)을 사용하여 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

md5sum은 설정 파일 (/ etc에있는 파일)을 생략하므로 설정 파일을 생략합니다.
psusi

예, 예를 들어 / etc / ssh / sshd_config 파일은 스크립트에 의해 생성됩니다. CentOS에서는 기본 구성 파일에 md5sum이 있습니다.
user9517은 GoFundMonica를 지원합니다.

5
구성 파일의 md5 체크섬은 / var / lib / dpkg / status에 저장 됩니다. "dpkg -V" 는 conf 파일을 포함하여 시스템에있는 모든 파일의 체크섬을 확인합니다.
bain

25

dpkg / 1.17.2에서와 같이이 데비안 버그 보고서--verify 에 따라 옵션 을 구현 합니다.

이것은 dpkg의 비교적 새로운 변경 사항입니다. Date: Thu, 05 Dec 2013 04:56:31 +0100dpkg v1.17.2 패키지의 line은 이것을 보여줍니다.

다음은 --verifydpkg의 맨 페이지에서 인용 된 동작에 대한 간략한 설명입니다 .

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

따라서 yum검증 과 비슷한 구문을 사용 하여 rpm 형식으로 결과를 얻을 수 있습니다. 예를 들면 다음과 같습니다.

dpkg --verify openssh-server

또는 dpkg --verify시스템에 설치된 모든 단일 패키지를 확인 하는 데 사용하십시오 .


추신

dpkg --verify bash내 컴퓨터에서 실행하면 이런 식으로 나에게 주었다. (dpkg / 1.17.5를 실행 중입니다)

??5?????? c /etc/bash.bashrc
??5?????? c /etc/skel/.bashrc

.deb 패키지에는 확인을 위해 md5sums 메타 데이터 만 포함되어있는 것 같습니다.


이 선은 무엇을 의미합니까? ??5?????? c...
rubo77

@ rubo77 암호화 형식 은 ftp.rpm.org/max-rpm/s1-rpm-verify-output.html 을 참조하십시오 .
pallxk

좋아, 그래서 ??5??????수단 다음 MD5 체크섬이 다른와 C했다 = "이 설정 파일입니다"
rubo77

수정 된 패키지에 대한 경고 만 원한다면 (구성 파일이 아닌)sudo dpkg -V | grep -v '??5?????? c'
rubo77

4

체크 아웃 할 수있는 도구 debsum이 있습니다.

# apt-cache search debsums
debsums - tool for verification of installed package files against MD5 checksums

2

일반적으로 확인하려는 파일 목록이 있습니다.
다음은 원하는 것을 다소간 수행하는 간단한 bash 함수입니다.

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
}

다음과 같이 사용하십시오.

dpkg-verify /bin/ls /usr/bin/ld

내 환경에서의 출력 :

/bin/ls: ok
/usr/bin/ld: UNKNOWN

물론 특정 패키지에서 파일을 확인하기 위해 비슷한 별칭 / 스크립트를 작성하는 것이 매우 간단해야합니다.



2

이 명령을 사용하여 모든 패키지를 확인합니다.
dpkg -l | awk {'print $2'} | xargs | debsums | grep -v 'OK'

debsumbs, gawk 및 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)
rubo77
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.