尝试在删除一些不再需要的服务器并删除已删除软件包的用户和组后安装软件包。去获取并安装新软件包,但出现以下错误。
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 install 上下文之外运行它时,二进制文件会抛出相同的错误。
所以我刚刚添加了用户傀儡,我可以再次下载包,但我正试图从我的开发系统中删除任何无关的元素,所以就我而言,这不是一个仅仅因为它有效的解决方案。
据我所知,statoverride 会告诉包管理器将某些东西安装到某个路径,并干扰 setuid 标志,因此,它可能会通过安装未使用的用户和组共同拥有的程序而打开一堆安全漏洞。当用户被删除时,dpkg-statoverride 不会与系统其余部分一起更新,这是为什么?有没有办法绕过这个问题,这样我就不必每次想要安装包时都执行 :adduser -> install -> deluser: 了?
答案1
您可以尝试以下操作:
sudo sed -i '/puppet/d' /var/lib/dpkg/statoverride
应该从 statoverride 中删除用户并授予您再次安装的权限