retitle 718624 transmission-daemon: segfaults with systemd due to erroneous maintainer scripts tags 718624 patch thanks
On 07.04.2014 12:10, Andrei POPESCU wrote: [...] > If you build a package with your patch applied I'll try to do some > testing. > Hello Andrei and Antoine, thanks for offering a helping hand with this bug. I have prepared a patch which I'm attaching to this bug report. I could also build a binary package but I recommend to apply the patch yourself and then to build everything from source. Here is the changelog: * transmission-daemon.postinst: - Change home directory of transmission-daemon to /var/lib/transmission-daemon from /home/debian-transmission. Thanks to Alex Peters for the report. (Closes: #734467) - Disable password authentication for debian-transmission user for improved security. Logins with e.g. SSH RSA keys are still possible. - Check existence of debian-transmission user with getent passwd debian-transmission instead of id. * Add transmission-daemon.preinst: - Fix permissions in /var/lib/transmission-daemon and use /var/lib/transmission-daemon as the new home directory. - Move old configuration files to appropriate config directory /var/lib/transmission-daemon/.config/transmission-daemon. All together this ensures that transmission-daemon will not segfault when systemd is the default init system. Thanks to Andrei Popescu and Antoine Legonidec for the report and additional tests. (Closes: #718624) * transmission-daemon.links: - Link settings.json from /etc/transmission-daemon/settings.json to /var/lib/transmission-daemon/.config/transmission-daemon. - Link /var/lib/transmission-daemon/.config/transmission-daemon to /var/lib/transmission-daemon/info due to compatibility reasons with the old sysv-rc init script settings. * transmission-daemon.dirs: - Do not create /var/lib/transmission-daemon/info anymore. * transmission-daemon.postrm: - Also delete debian-transmission user when purging the daemon. Regards, Markus
From 6e5cf54fd27da04e71d7010a1621be3d3d8144f3 Mon Sep 17 00:00:00 2001 From: Markus Koschany <a...@gambaru.de> Date: Mon, 7 Apr 2014 16:34:04 +0200 Subject: [PATCH] fix 718624 and 734467 --- debian/changelog | 33 +++++++++++++++++++++++++++++++++ debian/transmission-daemon.dirs | 1 - debian/transmission-daemon.links | 3 ++- debian/transmission-daemon.postinst | 9 ++++++--- debian/transmission-daemon.postrm | 4 ++++ debian/transmission-daemon.preinst | 23 +++++++++++++++++++++++ 6 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 debian/transmission-daemon.preinst diff --git a/debian/changelog b/debian/changelog index 780b145..4ec85ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,36 @@ +transmission (2.82-1.2) unstable; urgency=medium + + * Non-maintainer upload. + * transmission-daemon.postinst: + - Change home directory of transmission-daemon to + /var/lib/transmission-daemon from /home/debian-transmission. + Thanks to Alex Peters for the report. (Closes: #734467) + - Disable password authentication for debian-transmission user for improved + security. Logins with e.g. SSH RSA keys are still possible. + - Check existence of debian-transmission user with getent passwd + debian-transmission instead of id. + * Add transmission-daemon.preinst: + - Fix permissions in /var/lib/transmission-daemon and use + /var/lib/transmission-daemon as the new home directory. + - Move old configuration files to appropriate config directory + /var/lib/transmission-daemon/.config/transmission-daemon. + All together this ensures that transmission-daemon will not segfault when + systemd is the default init system. + Thanks to Andrei Popescu and Antoine Legonidec for the report and + additional tests. (Closes: #718624) + * transmission-daemon.links: + - Link settings.json from /etc/transmission-daemon/settings.json to + /var/lib/transmission-daemon/.config/transmission-daemon. + - Link /var/lib/transmission-daemon/.config/transmission-daemon to + /var/lib/transmission-daemon/info due to compatibility reasons with the + old sysv-rc init script settings. + * transmission-daemon.dirs: + - Do not create /var/lib/transmission-daemon/info anymore. + * transmission-daemon.postrm: + - Also delete debian-transmission user when purging the daemon. + + -- Markus Koschany <a...@gambaru.de> Mon, 07 Apr 2014 19:34:39 +0200 + transmission (2.82-1.1) unstable; urgency=medium * Non-maintainer upload. diff --git a/debian/transmission-daemon.dirs b/debian/transmission-daemon.dirs index 7d6fc68..0fe0558 100644 --- a/debian/transmission-daemon.dirs +++ b/debian/transmission-daemon.dirs @@ -1,2 +1 @@ -/var/lib/transmission-daemon/info /var/lib/transmission-daemon/downloads diff --git a/debian/transmission-daemon.links b/debian/transmission-daemon.links index 1a4d956..327ae46 100644 --- a/debian/transmission-daemon.links +++ b/debian/transmission-daemon.links @@ -1,2 +1,3 @@ usr/share/doc/transmission-common usr/share/doc/transmission-daemon -etc/transmission-daemon/settings.json var/lib/transmission-daemon/info/settings.json +etc/transmission-daemon/settings.json var/lib/transmission-daemon/.config/transmission-daemon/settings.json +var/lib/transmission-daemon/.config/transmission-daemon /var/lib/transmission-daemon/info diff --git a/debian/transmission-daemon.postinst b/debian/transmission-daemon.postinst index a27960c..cfc23f6 100644 --- a/debian/transmission-daemon.postinst +++ b/debian/transmission-daemon.postinst @@ -15,22 +15,25 @@ chperms() { } case "$1" in - configure|upgrade) - if ! id -u debian-transmission > /dev/null; then + configure) + if ! getent passwd debian-transmission > /dev/null; then adduser --quiet \ --system \ --group \ --no-create-home \ + --disabled-password \ + --home /var/lib/transmission-daemon \ debian-transmission fi - chperms debian-transmission debian-transmission 4750 /var/lib/transmission-daemon/info + chperms debian-transmission debian-transmission 4750 /var/lib/transmission-daemon/.config/transmission-daemon chperms debian-transmission debian-transmission 4775 /var/lib/transmission-daemon/downloads chperms debian-transmission debian-transmission 0660 /etc/transmission-daemon/settings.json chperms root debian-transmission 2775 /etc/transmission-daemon + ;; esac diff --git a/debian/transmission-daemon.postrm b/debian/transmission-daemon.postrm index b3ecb55..7a9c86b 100644 --- a/debian/transmission-daemon.postrm +++ b/debian/transmission-daemon.postrm @@ -4,9 +4,13 @@ set -e case "$1" in purge) + deluser --quiet --system debian-transmission > /dev/null || true if [ -d /var/lib/transmission-daemon/info ]; then rm -rf /var/lib/transmission-daemon/info/* fi + if [ -d /var/lib/transmission-daemon/.config ]; then + rm -rf /var/lib/transmission-daemon/.config/* + fi ;; esac diff --git a/debian/transmission-daemon.preinst b/debian/transmission-daemon.preinst new file mode 100644 index 0000000..27ee9ae --- /dev/null +++ b/debian/transmission-daemon.preinst @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +case "$1" in + upgrade) + if dpkg --compare-versions "$2" lt "2.82-1.2~"; then + mkdir -p /var/lib/transmission-daemon/.config/transmission-daemon + chown -R debian-transmission:debian-transmission /var/lib/transmission-daemon/* + usermod debian-transmission -d /var/lib/transmission-daemon + mv /var/lib/transmission-daemon/info/* /var/lib/transmission-daemon/.config/transmission-daemon + rmdir /var/lib/transmission-daemon/info + fi + ;; + install|abort-upgrade) + ;; + *) + echo "preinst called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# -- 1.9.1
signature.asc
Description: OpenPGP digital signature