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
Hallo Hilmar,
Am Sonntag, dem 25. Februar 2001 um 20:05:04, schrieb Hilmar Preusse:
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.
Du solltest aber ein #!/bin/sh Skript schreiben, dass die Zeile #DEBHELPER# enthaelt, dann wird postinst.debhelper automatisch dort eingefuegt:
Automatic generation of debian install scripts Some debhelper commands will automatically generate parts of debian install scripts. If you want these automatically generated things included in your debian install scripts, then you need to add "#DEB HELPER#" to your scripts, in the place the code should be added. "#DEBHELPER#" will be replaced by any auto-generated code when you run dh_installdeb.
zitiert aus debhelper(1)
dpkg (subprocess): unable to execute post-installation script: Exec format errordpkg: error processing bmv (--install):
Sieht nach fehlendem #!/bin/sh aus.
Neuerdings wird mit dpkg-statoverride gearbeitet und der suid-manager ist eigentlich obsolet.
Tschuess Torsten
On 26.02.01 Torsten Werner (twerner@intercomm.de) wrote:
Hallo Torsten,
Am Sonntag, dem 25. Februar 2001 um 20:05:04, schrieb Hilmar Preusse:
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.
Du solltest aber ein #!/bin/sh Skript schreiben, dass die Zeile #DEBHELPER# enthaelt, dann wird postinst.debhelper automatisch dort eingefuegt:
Das will ich ja gar nicht. Dein Vorschlag wäre also: Ich baue mein Skript, als erste Zeile kommt #DEBHELPER#, danach der Teil, der von dh_suidregister erzeugt und von mir manuell modifiziert wurde (0755 -> 04755). Ergebnis wäre ein Monsterskript, bei dem 2-mal chmod'ed wird. Beim ersten mal, der von dh_suidregister nochmals erzeugte Teil und dann der Teil, der schon existierte. Darum nenne ich das Teil postinst, lasse #DEBHELPER# weg und debhelper spuckt mir nicht in die Suppe. Mir ist sowieso nicht ganz klar, wieso dh_suidregister ein Skript mit chmod 755 /bin/binary erzeugt, obwohl es ja eigentlich dazu gedacht ist, Skripte zu generieren, die SUID-bins erzeugen.
dpkg (subprocess): unable to execute post-installation script: Exec format errordpkg: error processing bmv (--install):
Sieht nach fehlendem #!/bin/sh aus.
Genau das. Danke!
Neuerdings wird mit dpkg-statoverride gearbeitet und der suid-manager ist eigentlich obsolet.
Gibts hier noch nicht.
H.
lug-dd@mailman.schlittermann.de