데비안 시스템에서 수정 된 설정 파일을 확인하는 방법은 무엇입니까?


답변:


78

기본값에서 변경된 모든 데비안 관리 설정 파일을 찾으려면 다음과 같은 명령을 사용할 수 있습니다.

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

편집 (현지화 된 시스템에서 작동) :

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

편집 (파일 이름에 OK가있는 패키지와 함께 작동) :

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

우분투 10.4에 매력처럼 작동, 나는 당신에게 천 번 :-) upvote에 것
루드비히 Weinzierl

잘 작동합니다. md5sum --quiet그래도 OK 파일을 필터링하지 않기 위해 사용할 수 있습니다 awk(따라서 현지화 문제?). 그건 그렇고 : / etc 내에 추적되지 않은 파일을 포함시키는 방법을 모르십니까? 예를 들어 / etc / apache2 / sites에있는 것들처럼?
sfussenegger

내 답변 ( debsums -ec)이 실제로 어떻게 작동 하는지 아는 것이 흥미로울 것입니다. 왜냐하면 이것이보다 결과가 훨씬 적기 때문입니다.
naught101

또한 패키지 버전을 확인하는 유일한 conf 파일이 있는지 확인하십시오 debsums -ec. 이 방법을 사용 하여 패키지 버전을 복원 하면 이 방법을 통해 나열된 파일 중 일부는 변경되지 않습니다.
naught101

구성 변경이 보류 중이거나 더 이상 사용되지 find /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
않는지

47

부터 man debsums:

  debsums -ce
          List changed configuration files.

1
이것은 지금까지 가장 간단하고 최상의 답변입니다.
mfisch

1
기본적으로 debsum 만 설치되지 않으므로 설치하지 않을 수 있습니다.
Alexis Wilke

1
@AlexisWilke : 218kb이고 최소한의 의존성을 가지고 있습니다.
naught101

11

necro에 죄송하지만 @ naught101의 답변은 수정 파일에 대해서는 정확하지만 추가 된 파일 에는 도움이되지 않았습니다 . @Graeme의 솔루션은 훌륭하지만 etckeeper에 달려 있습니다. 파일 시스템을 수정하고 싶지 않습니다.

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

/ etc /에서 유효한 것으로보고 debsums되지 않은 파일을 찾으십시오 . 이는 추적되지 않은 파일 또는 "확인"이 아닌 파일 (해시가 일치하지 않음)을 의미합니다.


하나는 실행해야 debsums --list-missing하나 개 이상의 패키지가 포함 된 파일의 체크섬을 누락 여부를 확인 할 수 있습니다. 요즘에는 출력이 비어 있어야합니다.
Mikko Rantalainen


5

또는 debsums -e | grep FAILED는 누락 된 모든 conffile도 표시합니다.

(debsums 패키지에서)


2

이것은 과잉 일 수 있지만 누군가가 etckeeper를 언급 한 이후로 내가 다른 사실을 발견했을 때 당신이 "사실 후"사물을 알아 내려고 시도하면 더 유용 할 수있는 다른 보석을 발견했다고 조사했습니다.

http://devstructure.com/blueprint/

Blueprint는 서버를 리버스 엔지니어링하는 간단한 구성 관리 도구입니다. 수동으로 수행 한 작업을 파악하고 Git 리포지토리에 로컬로 저장하며, 노력을 다시 만들 수있는 코드를 생성하고 이러한 변경 사항을 프로덕션에 배포하는 데 도움이됩니다.


Python-3이 지원되는 경우 홈페이지에서 명확하지 않습니다 (조금 오래된 것 같습니다). 아무도 시도하지 않았습니까?
sphakka

GitHub 저장소에서 몇 년 전에 마지막으로 활성화 된 것으로 판단하면 Python3에서 즉시 작동하는 데 너무 많은 돈을 걸지 않을 것입니다. 지원하다.
dragon788

1

이것은 수정 된 파일과 달리 ADDED 구성 파일을 제공한다는 점에서 원래의 질문과 약간 다릅니다. deb 패키지에 포함되지 않은 파일도 포착됩니다. 두 가지 행동 모두 바람직 할 수 있습니다.

그것은 get go에서 이상적으로 git vcs와 etckeeper를 사용했는지에 달려 있지만 , 첫 번째 커밋 후에 이전에 변경된 파일을 특별히 추가하고 커밋하는 경우에도 작동해야합니다 . 여기서 우분투는 etckeeper가 etckeeper 개발자가 설정 한 git default 대신 기본적으로 Bazaar (Canonical sponsor Bazaar)를 사용하도록 etckeeper를 구성한다는 점에 유의하십시오.

아이디어는 자동으로 실행되지 않은 후 실행되는 모든 커밋 목록을 얻는 것입니다. 그런 다음 첫 번째 커밋을 제외한 모든 파일을 변경하십시오.

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"

필터 문자열은 다른 커밋이 일관성있게 명명 된 경우이를 포함하도록 확장 될 수도 있습니다. deb 파일 또는 소스 코드에서 직접 설치하는 것이 좋습니다.

이것이 나를 위해 선택하는 주목할만한 파일은 my입니다. xorg.conf현재 필요한 경우 / etc / X11에 직접 추가해야합니다. 또한 내 default/grub변경 사항이 포착되었으므로 패키지의 일부로 표시되지 않고 설치 후 스크립트로 / usr / share에서 복사 한 것 같습니다. 이와 같은 파일을 변경 한 경우 dpkg 관련 메소드는이를 공개하지 않습니다.


1
참고로, git log이제는을 --invert-grep사용하지 않고 관심없는 커밋을 필터링 할 수 있는 옵션이 있습니다 sed.
Neil Mayhew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.