不要になったサーバーをいくつか削除し、削除したソフトウェア パッケージのユーザーとグループを削除した後、パッケージをインストールしようとしました。新しいパッケージを取得してインストールしようとしたところ、次のエラーが発生しました。
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 から削除し、再度インストールするためのアクセス権を付与する必要があります。