我正在尝试做与此中描述的类似的事情问答,除了我正在使用setfacl
.
我有以下内容debian/rules
:
...
override_dh_fixperms:
dh_fixperms
setfacl -m u:applicationX:rw /etc/NetworkManager/
该包构建在 Jenkins 服务器上。它返回错误:
make[2]: setfacl: Command not found
我预计这些命令将在安装过程中运行,我知道安装该软件包的设备将具有setfacl
.相反,该命令似乎在构建过程中在 Jenkins 服务器上运行。
我是否误解了如何执行上述操作?是否有我可以在目标计算机上运行的规则?
另请注意,正在修改的文件不是我的包本身的一部分。
答案1
您无法在包构建期间存储 ACL,您需要在安装包后在包的postinst
.为此,请postinst
在您的debian
目录中创建一个名为的文件,并setfacl
在其中添加命令。您还需要在文件acl
中添加对的依赖项control
。
不属于您的软件包的事实/etc/NetworkManager
确实增加了额外的麻烦,但我想您的软件包注定不会被上传到 Debian 档案...您通常还必须跳过一些麻烦来处理这种可能性在没有 ACL 的情况下删除并重新创建该/etc/NetworkManager
文件,但这在实践中似乎不太可能。