Hallo Debianer,
Wieder ein Problem: Ich will ein Paket bauen, in dem ein programm setuid root laufen muß. Dazu habe ich im Unterverzeichnis debian eine File namens suid angelegt und rufe im rules-File dh_suidregister auf. Ergebnis ist ein postinstall-Skript, was mir debhelper geschrieben hat:
<uninteresting stuff deleted> # Automatically added by dh_suidregister if command -v suidregister >/dev/null 2>&1 && [ -e /etc/suid.conf ]; then suidregister -s bmv /usr/bin/bmv root root 0755 elif [ -e /usr/bin/bmv ]; then chown root.root /usr/bin/bmv chmod 0755 /usr/bin/bmv fi # End automatically added section
Das Paket suidmanager habe ich explizit deinstalliert, da es ja unter Priority optional zu stehen hat und also nicht auf allen Systemen zu finden ist. Die obigen Rechte sind natürlich nicht korrekt, darum habe ich 0755 durch 04755 ersetzt und postinst.debhelper nach postinst umbenannt, damit es nicht wieder überschrieben wird. fakeroot dpkg-buildpackage, Paket steht und soll installiert werden. Fehlermeldung:
drachi:[/home/hille/t] #dpkg -i -D2 bmv_1.2-3_i386.deb (Reading database ... 55083 files and directories currently installed.) Preparing to replace bmv 1.2-3 (using bmv_1.2-3_i386.deb) ... D000002: fork/exec /var/lib/dpkg/info/bmv.prerm ( prerm upgrade 1.2-3 ) D000002: maintainer_script_new nonexistent preinst `/var/lib/dpkg/tmp.ci/preinst' Unpacking replacement bmv ... D000002: fork/exec /var/lib/dpkg/info/bmv.postrm ( postrm upgrade 1.2-3 ) D000002: process_archive info installed /var/lib/dpkg/tmp.ci/postinst as /var/lib/dpkg/info//bmv.postinst D000002: process_archive info installed /var/lib/dpkg/tmp.ci/prerm as /var/lib/dpkg/info//bmv.prerm D000002: process_archive info installed /var/lib/dpkg/tmp.ci/postrm as /var/lib/dpkg/info//bmv.postrm D000002: process_archive info installed /var/lib/dpkg/tmp.ci/md5sums as /var/lib/dpkg/info//bmv.md5sums D000002: process_archive tmp.ci script/file .' contains dot D000002: process_archive tmp.ci script/file ..' contains dot D000002: process_archive tmp.ci script/file /var/lib/dpkg/tmp.ci/control' is control Setting up bmv (1.2-3) ... D000002: fork/exec /var/lib/dpkg/info/bmv.postinst ( postinst configure 1.2-3 ) dpkg (subprocess): unable to execute post-installation script: Exec format errordpkg: error processing bmv (--install): subprocess post-installation script returned error exit status 2 Errors were encountered while processing: bmv
und das Programm ist nicht suid-root.
Wenn ich das postinst-Skript nach der Installation manuell ausführe wird das Flag ordentlich gesetzt und alles geht. Wenn ich die 04775 wieder in 0755 verwandele geht alles gut, aber das setuid-flag fehlt natürlich. Was mache ich falsch?
drachi:[hille] >dpkg -l dpkg Desired=Unknown/Install/Remove/Purge/Hold |Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii dpkg 1.6.14 Package maintenance system for Debian
Hilmar