예를 들어, 빌드나 서버 시스템을 깨끗하게 유지하려면 다음을 수행하세요.모든 파일이 존재하고 설명되었는지 확인하십시오.패키지 메타데이터를 통해. 직장에서 우리는 인수 없이 실행하면 rm
어떤 패키지에서도 언급되지 않은 모든 파일/디렉터리(일부 트리 제외)에 대해 / 문이 있는 파일을 생성하는 매우 훌륭한 도구를 가지고 있습니다. 이것은rmdir
/home
다른~에서rpm -V
그리고debsums
, 패키지에서 이미 언급한 파일만 확인합니다.
DEB/RPM/포트/기타 패키징 시스템에 대한 유사한 도구가 있습니까? DEB가 가장 좋지만 다른 시스템(또는 다른 시스템이 없는 경우 자체 시스템)에서 포팅하는 것이 가능할 수 있습니다.
PS: 저는요아니요대체 아키텍처를 찾고 있습니다. 여기서 문제는 시스템의 모든 파일을 고려하는 것입니다. VM 등은 해당되지 않습니다.
답변1
원하는 것이 파일 무결성 검사기라면 RPM이 귀하의 요구에 적합할 것입니다. rpm -qaV
(대문자 V에 주목하세요). 이것은 통과하고 확인합니다:
- 파일 크기
- 모드(권한 및 파일 형식)
- MD5 체크섬
- 장치 번호(다른 파티션을 마운트하여 누군가 숨겨진 파일이 있는지 확인)
- readlink 경로(기호 링크가 다른 파일을 가리키는 경우)
- 사용자 소유권
- 그룹 소유권
- 시간 변경
이는 상당히 포괄적인 목록이어야 합니다.
rpm -qa --filesbypkg | awk '{print $2}'
시스템에 기록된 모든 파일이 나열됩니다.
find / | grep -vf /tmp/files-on-system.txt
RPM 데이터베이스에 없는 시스템의 모든 파일이 검색됩니다. 하나의 명령으로 두 명령을 모두 수행하는 또 다른 방법은 다음과 같습니다.rpm -qf 'find /'#replace single quote with backtick
참고: 이는 또한 디렉터리에 오류 파일을 표시합니다.
/dev
/home
/proc
/var/run
/var/log
/var/lib
/tmp
답변2
Debian 및 dpkg를 사용하는 기타 시스템에서는 sort -u /var/lib/dpkg/info
패키지에서 제공하는 모든 파일 목록이 제공됩니다. 시스템에 실제로 존재하는 파일 목록과 비교해 보면 많은 수의 파일을 제공하는 패키지는 없음을 알 수 있습니다. 이 목록은 데비안 스퀴저를 간략히 살펴본 것이며 결코 완전한 것은 아닙니다.
- 명백한 용의자:
/etc
,/usr/local
,/opt
,/var
,/home
,/srv
, 다양한 마운트 지점. - 패키지 설치 스크립트에 의해 생성된 많은 기호 링크. 일반적으로 이는 파일이 패키지에 있었고 이제 대안으로 대체되었기 때문입니다. 먼저 새 패키지의 압축을 푼 다음 대체된 이전 패키지가 삭제되고 마지막으로 새 패키지의 postinst 스크립트가 링크를 생성합니다.
- 일부 용도
dpkg-divert
. - in
/boot
,initrd-*
(설치된 커널 및 추가 모듈에서 자동으로 재생성됨) 및 부트로더 파일(/boot/grub/*
). - 에서는
/lib/modules/*
모듈 종속성 파일과 기호 맵 및자동으로 모듈 컴파일(dkms에서). - 패키지를 설치할 때 유일하게 승인된 소스에서 다운로드되는 재배포 불가능한 다양한 콘텐츠입니다. 대부분 문서이지만 일부 글꼴도 있습니다.
- X11 글꼴은
/usr/X11R6/lib/X11/fonts
. - CUPS 백엔드가 에서 으로 복사
/usr/lib/cups/backend-available/
됩니다/usr/lib/cups/backend/http/
. - 설치 중에 컴파일된 다양한 파일:
*.pyc
(Python),*.elc
(Emacs),*.dll
(Mono)... - 생성된 문서 색인
/usr/share/doc/HTML
(에서돕다).
각 파일을 이해하려면 해당 기록을 추적해야 합니다. 즉, 감사를 통과하려면 자신이 소유한 문서만 보여주는 것이 아니라, 피감사인으로서 각 문서의 유효성에 대한 증거도 제시해야 합니다.
고전적인 접근 방식은 다음과 같은 도구를 사용하는 것입니다.인계철선, 파일이 변경되면 경고해 줍니다. 변경 사항을 추적할 수 있는 더 강력한 기능을 찾고 있다면 바로 이것이다.버전 관리. 데비안은 /etc
다음을 통해 턴키 버전 제어를 제공합니다.관리자를 기다려주세요. (불행히도) 기본 설치의 일부가 아닙니다. 패키지를 설치하고 원하는 버전 제어 시스템을 선택한 /etc/etckeeper/etckeeper.conf
다음 실행하십시오 etckeeper init
. 아래의 모든 변경 사항은 매일 밤 /etc
실행 또는 기타 APT 프런트엔드 전후에 자동으로 커밋됩니다 . apt-get
이러한 자동 커밋을 비활성화하여 관리자가 수동으로 실행 etckeeper commit
하고 로그 메시지를 입력하도록 할 수 있습니다.
답변3
깨끗하고 일관된 빌드 시스템을 정말로 원한다면 LVM에서 제공하는 것과 같은 파일 시스템 스냅샷을 사용하는 것이 더 나을 것입니다. LVM에 /usr과 같은 파일 시스템을 사용하여 시스템을 설치할 수 있습니다. 그런 다음 명령을 통해 원래 상태로 복원하려는 파일 시스템의 스냅샷을 생성할 수 있습니다 lvsnapshot
. 이러한 스냅샷을 정상적으로 마운트하는 대신 쓰기 가능으로 마운트할 수 있습니다. 이전 상태로 되돌리려면 스냅샷을 마운트 해제하고 삭제한 후 다시 생성한 다음 새 스냅샷을 다시 마운트하면 됩니다. /home 또는 기타 파일 시스템을 현재 상태로 유지하려는 경우 이를 LVM에 배치할 수 있지만 해당 시스템의 스냅샷을 생성하지 마십시오.
소프트웨어 배포 또는 사용자 정의 설치 디스크를 테스트할 때 사용하는 또 다른 방법은 VirtualBox 또는 VMware Workstation과 같은 가상 머신을 사용하는 것입니다. 전체 디스크의 스냅샷을 찍고 요청 시 복원할 수 있습니다. 또한 호스트 재부팅 시 시스템을 일시 중지하는 등의 장점도 있습니다. 가상 머신이 시작된 후에는 일시 중지된 상태에서 다시 시작됩니다. 특히 VirtualBox는 여러 디스크 스냅샷을 찍은 다음 이를 보존하면서 이전 스냅샷으로 복원할 수 있습니다. 필요한 경우 두 개 이상의 행 스냅샷 간에 전환할 수 있습니다.