[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#919344: adequate reports obsolete-conffile in openssh-client



Hi,

> This file now lives in openssh-server, since it's only needed by sshd.
> Unfortunately I'd forgotten that moving conffiles between packages
> requires some non-trivial effort, and so this is going to involve some
> complexity in maintainer scripts.

How about the attached approach?

It uses dpkg-maintscript-helper in openssh-client to remove the
conffile. dpkg-maintscript=helper does all the magic to determine
whether the file was changed by the user. Here, we use the fact that in
preinst, it only moves the file to a backup location, and this location
is different when the file is user-modified.

In postinst of openssh-server, we then check for the backup file and
move it back in place if it exists. This…

 …fixes the obsolete conffile,
 …avoids an annoying question on upgrade whether to overwrite the file,
  is it was user-modified,
 …still keeps user modifications intact.

I tested the following:


1. Only openssh-client, upgrading from 1:7.9p1-4 to 1:7.9p1-6.1
---------------------------------------------------------------

File gets correctly removed. If it was user-modified, it remains as
moduli.dpkg-bak unless purged.


2. openssh-client and openssh-server installed, file not modified
-----------------------------------------------------------------

Ownership is correctly transferred to openssh-server, purging this
removes the conffile.


3. openssh-client and openssh-server installed, file user-modified
------------------------------------------------------------------

Ownership is correctly transferred to openssh-server, purging this
removes the conffile, user modifications remain intact.


If you like this approach, feel free to take it, or add me to the team
to do a team upload ;).

Cheers,
Nik
diff -Nru openssh-7.9p1/debian/changelog openssh-7.9p1/debian/changelog
--- openssh-7.9p1/debian/changelog	2019-02-08 17:26:35.000000000 +0100
+++ openssh-7.9p1/debian/changelog	2019-02-26 23:54:57.000000000 +0100
@@ -1,3 +1,10 @@
+openssh (1:7.9p1-6.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Correctly handle conffile move to openssh-server. (Closes: #919344)
+
+ -- Dominik George <natureshadow@debian.org>  Tue, 26 Feb 2019 23:54:57 +0100
+
 openssh (1:7.9p1-6) unstable; urgency=medium
 
   * CVE-2019-6109: Apply upstream patches to sanitize scp filenames via
diff -Nru openssh-7.9p1/debian/openssh-client.maintscript openssh-7.9p1/debian/openssh-client.maintscript
--- openssh-7.9p1/debian/openssh-client.maintscript	1970-01-01 01:00:00.000000000 +0100
+++ openssh-7.9p1/debian/openssh-client.maintscript	2019-02-26 23:54:10.000000000 +0100
@@ -0,0 +1 @@
+rm_conffile /etc/ssh/moduli 1:7.9p1-6.1~
diff -Nru openssh-7.9p1/debian/openssh-server.postinst openssh-7.9p1/debian/openssh-server.postinst
--- openssh-7.9p1/debian/openssh-server.postinst	2019-02-08 17:26:35.000000000 +0100
+++ openssh-7.9p1/debian/openssh-server.postinst	2019-02-26 23:54:50.000000000 +0100
@@ -148,6 +148,11 @@
 	    # restart it under systemd.
 	    start-stop-daemon --stop --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd || true
 	fi
+	if dpkg --compare-versions "$2" lt-nl 1:7.9p1-5 && \
+	   [ -f /etc/ssh/moduli.dpkg-bak ]; then
+	    # move backup made by preinst of openssh-client back in place
+	    mv /etc/ssh/moduli.dpkg-bak /etc/ssh/moduli
+	fi
 fi
 
 #DEBHELPER#

Attachment: signature.asc
Description: PGP signature


Reply to: