这个dpkg命令到底做了什么?

我修正了像这里描述的 nagios的许可问题。

命令是:

sudo dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3 

好吧,很显然,这是某种权限的改变。 但是它发生在哪里? 它在哪里存储? 它只是一个chmod修改?

dpkg-statoverride是由dpkg维护的数据库的pipe理工具,包含给定文件path的所有者和模式设置。

在你的问题中调用,它会做两件事情:如果给定的文件存在( --update )立即设置OWENERShip /模式,并在覆盖文件( – --add )中存储一个新的条目。 后者确保进一步创build或修改列出的文件的dpkg操作将使用覆盖值而不是包中定义的值。

这些重写是永久的。 它们通常会击败正常的chmod/chown因为它可以节省您在更新或重新安装软件包时必须手动重置权限的function。

现有的覆盖可以通过运行dpkg-statoverride --list来列出。

可以手动完成。 这只是一个权限的改变。 使用dpkg-statoverride的原因是,它会记住更新等。

这是一个告诉dpkg使用这些权限的工具。 您实际上也可以在安装软件包之前进行设置。

在通过dpkg-statoverride对已存在的文件更改权限时使用–update标志。