Debian
無法在 debian 包中設置 setuid 位和文件所有者
我有以下結構:
./inst/opt/test/ls
: 一個二進制的副本/bin/ls
,只是為了簡單起見。
./inst/DEBIAN/changelog
:test (1) unstable; urgency=low * test 1 -- test <test@test.com> April 28, 2020
./inst/DEBIAN/control
:Package: test Version: 1 Architecture: amd64 Section: unknown Priority: optional Maintainer: test <test@test.com> 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
由 set setuid 位擁有root
並使用 set 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
在我的情況下,這不是一個選項。
您正在直接建構二進制包;
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
應該顯示-rwsr-xr-x root/root ... ./opt/test/ls