데비안 패키지에서 setuid 비트 및 파일 소유자를 설정할 수 없습니다.

데비안 패키지에서 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

여태까지는 그런대로 잘됐다.

내가 달성하고 싶은 것은 설치 후 setuid 비트를 ls자체적 으로 설정하고 설정하는 것입니다 root. 이를 수행하려는 나의 많은 시도 중 하나는 다음과 같습니다.

./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

그런 다음 파일이 루트 소유로 저장되었는지 확인하려면 다음을 dpkg-deb실행하십시오 fakeroot.

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

dpkg-deb -c생성된 패키지 콘텐츠를 검사하려면 표시되어야 합니다.

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

관련 정보