无法在 debian 软件包中设置 setuid 位和文件所有者

无法在 debian 软件包中设置 setuid 位和文件所有者

我有以下结构:

./inst/opt/test/ls:二进制文件的副本/bin/ls,只是为了简单起见。

./inst/DEBIAN/changelog

test (1) unstable; urgency=low

  * test 1

 -- test <[email protected]> April 28, 2020

./inst/DEBIAN/control

Package: test
Version: 1
Architecture: amd64
Section: unknown
Priority: optional
Maintainer: test <[email protected]>
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.4
Homepage: https://www.test.com/
Depends: libappindicator1
Description: Test

./inst/DEBIAN/compat

9

到目前为止,一切都很好。

我想要实现的是在安装后让其ls拥有root并设置 setuid 位。这是我这样做的众多尝试之一:

./inst/DEBIAN/rules

#!/usr/bin/make -f

%:
        dh $@

override_dh_fixperms:
        dh_fixperms --exclude ls
        find . -name ls -exec chmod +s {} \;

但有或没有这个文件的结果根本没有改变。

使用以下命令构建 deb 包

dpkg-deb --build ~/test/inst/ ~/test/

我显然错过了一些大事。有人能告诉我什么吗?

请注意,这postinst对我来说不是一个选择。

答案1

您直接构建一个二进制包;debian/rules仅在从源包构建时进行处理。

要使用带有 setuid 位的文件构建二进制包(chmod +s设置 setuid 位,而不是粘性位),请在运行之前在文件系统中设置它dpkg-deb

chmod 4755 inst/opt/test/ls

然后,为了确保文件存储为 root 所有,请dpkg-deb运行fakeroot

fakeroot dpkg-deb -b ~/test/inst ~/test

dpkg-deb -c使用should show检查生成的包内容

-rwsr-xr-x root/root ... ./opt/test/ls

相关内容