如何强制Debian软件包覆盖权限?

如何强制Debian软件包覆盖权限?,debian,package,packages,file-permissions,Debian,Package,Packages,File Permissions,我已经构建了一个debian包,它只是将文件放入/etc/sensu/plugins,这样我的支票就可以通过这种方式分发 现在我写了一个新的检查,建立了软件包,并在任何地方安装了它,但我注意到我忘记了将文件+x 因此,我创建了文件+x并再次构建了包,但当我在任何地方安装它时,它都不会覆盖该文件上的权限 如何强制它这样做?主要问题是/etc中的文件被dh_installdeb视为ConfFile,您可能在包构建期间使用这些文件,因此打包系统会以特定的方式处理这些文件,因为假定用户可以编辑这些文件,

我已经构建了一个debian包,它只是将文件放入/etc/sensu/plugins,这样我的支票就可以通过这种方式分发

现在我写了一个新的检查,建立了软件包,并在任何地方安装了它,但我注意到我忘记了将文件+x

因此,我创建了文件+x并再次构建了包,但当我在任何地方安装它时,它都不会覆盖该文件上的权限


如何强制它这样做?

主要问题是/etc中的文件被dh_installdeb视为ConfFile,您可能在包构建期间使用这些文件,因此打包系统会以特定的方式处理这些文件,因为假定用户可以编辑这些文件,并且应该保留这些更改。因此,除非您明确清除包,否则它们不会随包一起删除,并且它们将保留其权限。我不知道有什么方法可以让您使用包中相同文件的权限更改配置文件的权限(例如,
--force confnew
dpkg的选项不起作用)

从管理员的角度来看,您应该清除包(以便删除配置文件),然后重新安装包或手动更改权限

从packager的角度来看,您可以修复脚本中的权限,因此升级包将修复权限。作为替代方案,您还可以按照说明调整conffiles:一旦安装了新软件包,权限将设置为软件包中的文件的权限


通常,您可能还希望检查在打包过程中是否正在更改文件的权限,并最终使其不作用于这些文件(情况并非如此).

是的,我想清除它,但我不想在1,5 k主机上清除一个重要的软件包,让它们不受监控,直到我为安装后脚本重新安装它:这是一个自动构建,jenkins使用了一个模板,我不想每次有人忘记更改我所需文件的权限时都使用该模板postinst的意思是中提到的postinst脚本。您只需在此处添加一个chmod行即可授予文件的适当权限。这将在安装后由软件包管理器自动执行,不需要人工参与。我只是更新了答案,解释了问题和其他可能的解决方案。考虑到您的需求和上述评论,这个新的解决方案很可能更适合您的用例。