Package: dpkg
Version: 1.10.28
Severity: important
Tags: sarge
when upgrading passwd (and similarly with login) from 4.0.3-31sarge5 to
4.0.3-31sarge8, dpkg aborts with an error ("failed to rmdir/unlink
`//usr/bin/chage.dpkg-tmp': Operation not permitted"), returns an exit
status indicating an error, but dpkg lists the upgraded package as being
installed fine ("ii passwd 4.0.3-31sarge8 change and administer
password and group dat").
the expected behavior is that dpkg should not list the new version's status
as "installed" when none of the new version's files have been installed due
to a recognized error during installation.
i chose a severity of "important" because the behavior is very misleading,
especially in the case of security updates. (i now have to go back and
audit all previous security updates that included setuid/gid files to
insure that they truly did get upgraded.)
i set a tag of "sarge" because this behavior was observed on sarge, and
though it might also be present in etch/sid and the problem resolved
there, i want to point out that this bug exists in sarge (and imho should
remain open until fixed there).
dpkg encounters the error because it tries to chmod 600 a setuid/setgid
file before unlinking it, but cannot as the file exists within a vserver
where it is immutable (but unlinkable). this error does not occur with
other files because dpkg does not try to chmod non-setuid/setgid files, but
instead immediately unlinks them.
please see the attached session log and strace log for more information.
the below "system information" was manually modified to reflect the server
on which the problems occurs and not the workstation on which i ran
reportbug and composed this bug report.
corey