[Pkg-monitoring-maintainers] Bug#815615: ganglia-monitor: Improper user/group removal in maintainer scripts

Dave Rawks dave at pandora.com
Mon Feb 22 22:24:35 UTC 2016


Package: ganglia-monitor
Version: 3.6.0-6
Severity: important
Tags: patch

Dear Maintainer,

The ganglia-monitor package has some troublesome user/group management routines in it's
maintainer scripts.

Contrary to the recommended practice here: https://wiki.debian.org/AccountHandlingInMaintainerScripts

The maintainer scripts use unguarded userdel and groupdel commands which will fail when the 
ganglia user and group are not defined locally in the /etc/passwd and /etc/group. See inlined patch
which follows recommendations from debian wiki for managing user accounts.



   * What led up to the situation?

Attempts to purge ganglia-monitor on my system fail as I use ldap for central management of user accounts.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

Attempts at purging ganglia-monitor via `dpkg -P` as well as `apt-get remove --purge` fail.

   * What was the outcome of this action?

'''
$ sudo apt-get remove --purge ganglia-monitor
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libapr1 libconfuse-common libconfuse0 libganglia1 python-sysadtoolkit-sb
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  ganglia-monitor*
0 upgraded, 0 newly installed, 1 to remove and 140 not upgraded.
After this operation, 241 kB disk space will be freed.
Do you want to continue? [Y/n] 
(Reading database ... 60324 files and directories currently installed.)
Removing ganglia-monitor (3.6.0-6) ...
Purging configuration files for ganglia-monitor (3.6.0-6) ...
userdel: cannot remove entry 'ganglia' from /etc/passwd
dpkg: error processing package ganglia-monitor (--purge):
 subprocess installed post-removal script returned error exit status 1
Processing triggers for man-db (2.7.0.2-5) ...
Errors were encountered while processing:
 ganglia-monitor
E: Sub-process /usr/bin/dpkg returned an error code (1)
'''
 
  * What outcome did you expect instead?

package to be removed with all data and configuration purged.


--PATCH--

Index: a/debian/ganglia-monitor.postinst
===================================================================
--- a/debian/ganglia-monitor.postinst
+++ b/debian/ganglia-monitor.postinst
@@ -1,10 +1,7 @@
 #!/bin/sh
 set -e

-if ! getent passwd ganglia >/dev/null; then
-       echo Adding system user: ganglia.
-       useradd -r -c "Ganglia Monitor" -d "/var/lib/ganglia" -s "/bin/false" -U ganglia
-fi
+adduser --system --gecos "Ganglia Monitor" --home "/var/lib/ganglia" --shell "/bin/false" --group ganglia

 #if we have an old 2.5.x gmond
 if [ -f /etc/gmond.conf ]; then
Index: a/debian/ganglia-monitor.postrm
===================================================================
--- a/debian/ganglia-monitor.postrm
+++ b/debian/ganglia-monitor.postrm
@@ -2,17 +2,16 @@

 if [ "$1" = "purge" ] ; then
    # rm the rrds if this is the last ganglia package being removed.
+   # Only remove ganglia user if gmetad isn't installed
    if [ ! -f /usr/sbin/gmetad ] ; then
         if [ -d /var/lib/ganglia ]; then
                # Remove rrd dir
                rm -rf /var/lib/ganglia/rrds
         fi
-   # Only remove ganglia user if gmetad isn't installed
-        if getent passwd ganglia >/dev/null; then
-                userdel ganglia
-        fi
-        if getent group ganglia >/dev/null; then
-                groupdel ganglia
+        if [ -x "$(command -v deluser)" ]; then
+            deluser --quiet --system ganglia > /dev/null || true
+        else
+            echo >&2 "not removing ganglia system account because deluser command was not found"
         fi
     fi
 fi

--END PATCH--


-- System Information:
Debian Release: 8.1
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages ganglia-monitor depends on:
ii  adduser      3.113+nmu3
ii  libapr1      1.5.1-3
ii  libc6        2.19-18
ii  libconfuse0  2.7-5
ii  libexpat1    2.1.0-6+b3
ii  libganglia1  3.6.0-6
ii  libpcre3     2:8.35-3.3
ii  zlib1g       1:1.2.8.dfsg-2+b1

ganglia-monitor recommends no packages.

ganglia-monitor suggests no packages.

-- no debconf information



More information about the Pkg-monitoring-maintainers mailing list