[Pkg-mlmmj-devel] Bug#862258: [PATCH] add/remove user mlmmj in maintainer scripts
Geert Stappers
stappers at debian.org
Tue May 23 18:57:02 UTC 2017
Closes: #862258
debian/mlmmj.postinst and debian/mlmmj.postrm rewrite based
upon maintainer scripts from the sbuild package.
Plus some minor changes.
---
debian/control | 4 ++-
debian/cron.d | 2 +-
debian/mlmmj.postinst | 73 ++++++++++++++++++++++++++++++++++++++-
debian/mlmmj.postrm | 57 ++++++++++++++++++------------
debian/patches/mlmmj_user_added | 36 +++++++++++++++++++
debian/patches/series | 1 +
6 files changed, 148 insertions(+), 25 deletions(-)
create mode 100644 debian/patches/mlmmj_user_added
diff --git a/debian/control b/debian/control
index 198b7de..7fc48c7 100644
--- a/debian/control
+++ b/debian/control
@@ -12,7 +12,9 @@ Homepage: http://mlmmj.org/
Package: mlmmj
Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, postfix | exim4 | mail-transport-agent
+Depends: ${shlibs:Depends}, ${misc:Depends}
+ , postfix | exim4 | mail-transport-agent
+ , adduser
Suggests: mlmmj-php-web, mlmmj-php-web-admin
Description: mail server independent mailing list manager
A mailing list manager with roughly the same functionality as ezmlm.
diff --git a/debian/cron.d b/debian/cron.d
index 97d2c8c..2f34265 100644
--- a/debian/cron.d
+++ b/debian/cron.d
@@ -1 +1 @@
-0 */2 * * * root /usr/bin/test -x /usr/bin/mlmmj-maintd && /usr/bin/mlmmj-maintd -F -d /var/spool/mlmmj
+0 */2 * * * mlmmj /usr/bin/test -x /usr/bin/mlmmj-maintd && /usr/bin/mlmmj-maintd -F -d /var/spool/mlmmj
diff --git a/debian/mlmmj.postinst b/debian/mlmmj.postinst
index 9d168c3..8c2ec9d 100644
--- a/debian/mlmmj.postinst
+++ b/debian/mlmmj.postinst
@@ -1,4 +1,7 @@
#!/bin/sh
+# postinst script for mlmmj
+#
+# see: dh_installdeb(1)
set -e
@@ -9,7 +12,75 @@ else
echo "No debconf installed"
fi
-mkdir -p /var/spool/mlmmj
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see /usr/share/doc/packaging-manual/
+#
+# quoting from the policy:
+# Any necessary prompting should almost always be confined to the
+# post-installation script, and should be protected with a conditional
+# so that unnecessary prompting doesn't happen if a package's
+# installation fails and the `postinst' is called with `abort-upgrade',
+# `abort-remove' or `abort-deconfigure'.
+
+case "$1" in
+ configure)
+ # If mlmmj is a user group, migrate to a system group. Save
+ # a list of group members, then add them back to the new group
+ # once created.
+ SGID="$(grep ^mlmmj: /etc/group | sed -r -e 's/([^:]+):([^:]+):([^:]+):.*/\3/')"
+ if [ -n "$SGID" ] && [ "$SGID" -ge "1000" ]; then
+ SUSR="$(grep ^mlmmj: /etc/group | sed -r -e 's/([^:]+):([^:]+):([^:]+):(.*)$/\4/' -e 's/,/ /g')"
+ delgroup --quiet mlmmj
+ fi
+
+ if ! getent group mlmmj > /dev/null; then
+ addgroup --system --quiet mlmmj
+ fi
+
+ # Restore group membership to users in old user group (if any)
+ for user in $SUSR; do
+ adduser $user mlmmj
+ done
+
+ # Create dedicated mlmmj user
+ if ! getent passwd mlmmj > /dev/null; then
+ adduser --system --quiet \
+ --home /var/spool/mlmmj --no-create-home \
+ --shell /bin/false --ingroup mlmmj \
+ --gecos "Mailing List Management Made Joyful" \
+ mlmmj
+ fi
+ # Unlock account in case it was locked from previous purge.
+ usermod -U -e '' mlmmj || true
+
+ mkdir -p /var/spool/mlmmj
+ chown -R mlmmj:mlmmj /var/spool/mlmmj
+ chmod 02770 /var/spool/mlmmj
+
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 0
+
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
#DEBHELPER#
+exit 0
diff --git a/debian/mlmmj.postrm b/debian/mlmmj.postrm
index cfdcd4e..b2f2b76 100644
--- a/debian/mlmmj.postrm
+++ b/debian/mlmmj.postrm
@@ -1,34 +1,47 @@
#!/bin/sh
+# postrm script for mlmmj
+#
+# see: dh_installdeb(1)
+
set -e
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see /usr/share/doc/packaging-manual/
+
case "$1" in
- purge)
- if [ -e /usr/share/debconf/confmodule ]
- then
- . /usr/share/debconf/confmodule
- db_get mlmmj/remove-on-purge || true
- if [ "$RET" = "true" ]
- then
- echo "Removing /var/spool/mlmmj and /etc/mlmmj/lists."
- rm -rf /var/spool/mlmmj /etc/mlmmj/lists > /dev/null
- fi
- db_purge || true
- fi
- if grep -qs '/usr/bin/mlmmj' /etc/aliases
- then
- echo "Warning /etc/aliases appears to contain references to mlmmj." >&2
- fi
- ;;
-
- remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
- ;;
+
+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade)
+
+ ;;
+
+ purge|disappear)
+
+ # Lock mlmmj account.
+ usermod -L -e 1 mlmmj || true
+
+ # not removing anything else
+
+ ;;
*)
+
echo "postrm called with unknown argument \`$1'" >&2
- exit 1
- ;;
+ exit 0
+
+ ;;
esac
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
#DEBHELPER#
exit 0
diff --git a/debian/patches/mlmmj_user_added b/debian/patches/mlmmj_user_added
new file mode 100644
index 0000000..92f148a
--- /dev/null
+++ b/debian/patches/mlmmj_user_added
@@ -0,0 +1,36 @@
+Description: mlmmj user is created
+Author: Geert Stappers <stappers at debian.org>
+Bug-Debian: https://bugs.debian.org/862258
+Origin: vendor
+Forwarded: no
+Last-Update: 2017-05-15
+
+
+Index: mlmmj/README.exim4
+===================================================================
+--- mlmmj.orig/README.exim4
++++ mlmmj/README.exim4
+@@ -9,6 +9,7 @@ of this can be found on http://plonk.de/
+
+ Notes:
+ - We assume that you have a user and group called mlmmj to use with mlmmj
++ (FYI: it is done by the .deb package)
+ - The exim user needs rx access rights to mlmmj's spool directory. (If you
+ don't want that, see below.) The easiest way is
+ "chmod 755 /path/to/mlmmj/spool", if it's ok that local users can see which
+Index: mlmmj/README.postfix
+===================================================================
+--- mlmmj.orig/README.postfix
++++ mlmmj/README.postfix
+@@ -23,9 +23,11 @@ Postfix virtual domains (so you can host
+ makes sense to make this a 'system' user, with no password and no shell
+ (/usr/false for the shell), and for its home directory to be
+ /var/spool/mlmmj (or wherever you want to put your Mlmmj spool directory).
++ This is done by the packaging system.
+
+ 2) Create your Mlmmj spool directory (we'll assume it's /var/spool/mlmmj)
+ and change its owner to the 'mlmmj' user.
++ This is done by the packaging system.
+
+ 3) Add an 'mlmmj' transport which uses the pipe(8) delivery agent to execute
+ mlmmj-receive as the mlmmj user by adding something like the following to
diff --git a/debian/patches/series b/debian/patches/series
index c6f710e..3da5b8f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,3 +3,4 @@
fixes-path-to-templates-folder-in-php-web-admin
06_fix-php-web-for-php7.diff
07_fix-crontab-suggestions.diff
+mlmmj_user_added
--
1.7.10.4
--
Groeten
Geert Stappers
--
Leven en laten leven
More information about the Pkg-mlmmj-devel
mailing list