더 이상 필요하지 않은 일부 서버를 삭제하고 삭제된 소프트웨어 패키지의 사용자 및 그룹을 제거한 후 패키지 설치를 시도했습니다. 새 패키지를 가져와 설치했는데 다음 오류가 발생했습니다.
user@localhost~$ sudo apt-get install any-package
... package installation output omitted for brevity ...
dpkg: unrecoverable fatal error, aborting:
syntax error: unknown user 'puppet' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)
따라서 /usr/bin/dpkg-statoverride에는 경로를 제거하는 옵션이 있지만 전체 apt-get 설치 컨텍스트 외부에서 실행하려고 하면 바이너리에서 동일한 오류가 발생합니다.
그런 다음 방금 사용자 인형을 추가하고 패키지를 다시 다운로드할 수 있지만 개발 시스템에서 불필요한 요소를 제거하려고 합니다. 제가 아는 한 이것은 단지 작동하기 때문에 해결책이 아닙니다. .
내가 알 수 있는 한, statoverride는 패키지 관리자에게 특정 항목을 특정 경로에 설치하도록 지시하고 setuid 플래그를 엉망으로 만듭니다. 따라서 잠재적으로 공동 소유한 프로그램을 설치하여 많은 보안 허점을 열 수 있습니다. 사용하지 않는 사용자 및 그룹. 사용자가 제거될 때 dpkg-statoverride가 시스템의 나머지 부분으로 업데이트되지 않는 이유가 있습니까? 그리고 패키지를 설치하려고 할 때마다 :adduser -> install -> deluser: 를 수행할 필요가 없도록 이를 우회할 수 있는 방법이 있습니까?
답변1
다음을 시도해 볼 수 있습니다.
sudo sed -i '/puppet/d' /var/lib/dpkg/statoverride
statoverride에서 사용자를 제거하고 다시 설치할 수 있는 액세스 권한을 부여해야 합니다.