[Pkg-net-snmp-commits] [pkg-net-snmp] 04/05: fix #794641, #794647, #781257

Hideki Yamane henrich at moszumanska.debian.org
Fri Jan 29 23:46:16 UTC 2016


This is an automated email from the git hooks/post-receive script.

henrich pushed a commit to branch master
in repository pkg-net-snmp.

commit deed97ccd6178302f2cda6e98dc2db6416fba3c0
Author: Hideki Yamane <henrich at debian.org>
Date:   Thu Jan 28 21:47:25 2016 +0900

    fix #794641, #794647, #781257
---
 debian/changelog      |  7 +++++++
 debian/snmp.preinst   | 33 +++++++++++++++------------------
 debian/snmpd.postinst | 36 ++++++++++--------------------------
 debian/snmpd.postrm   | 51 ++++++++++++++++++++++++++++++---------------------
 debian/snmpd.preinst  |  2 +-
 5 files changed, 63 insertions(+), 66 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 9b26ae8..0aed08e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,13 @@ net-snmp (5.7.3+dfsg-2) UNRELEASED; urgency=medium
     - add Bug-788964-net-snmp-snmp_pdu_parse-DoS.patch (Closes: #788964)
     - add 0026-fix-Bug-785380-incorrect-date-format.patch (Closes: #785380)
       Thanks to Gabor Kiss <kissg at ssg.ki.iif.hu>
+  * debian/snmpd.{preinst,postinst,postrm}
+    - change SNMP user from "snmp" to "Debian-snmp" to avoid confusion with
+      non-system user. It satisfy to work with some LDAP system. Thanks to
+      Vincent Bernat <bernat at debian.org> for suggestions.
+      (Closes: #794641, #794647)
+  * debian/snmp.preinst
+    - revert "killall", it is unnecessary anymore (Closes: #781257)
 
  -- Hideki Yamane <henrich at debian.org>  Thu, 18 Jun 2015 06:43:28 +0900
 
diff --git a/debian/snmp.preinst b/debian/snmp.preinst
index 8f8c754..603b6ce 100644
--- a/debian/snmp.preinst
+++ b/debian/snmp.preinst
@@ -4,24 +4,21 @@ set -e
 
 case "$1" in
 
-install|upgrade)
-  if [ -L /usr/share/doc/snmp ]; then
-    rm -f /usr/share/doc/snmp
-  fi
-  if [ -d /usr/doc/snmp ]; then
-    rm -rf /usr/doc/snmp
-  fi
-
-  killall -u snmp 2>/dev/null || true
-
-  ;;
-abort-upgrade)
-  ;;
-
-*)
-  echo "preinst called with unknown argument \`$1'" >&2
-  exit 1
-  ;;
+    install|upgrade)
+      if [ -L /usr/share/doc/snmp ]; then
+          rm -f /usr/share/doc/snmp
+      fi
+
+      rm -rf /usr/doc/snmp || true
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+      echo "preinst called with unknown argument \`$1'" >&2
+      exit 1
+    ;;
 
 esac
 
diff --git a/debian/snmpd.postinst b/debian/snmpd.postinst
index c4c559e..67f4712 100644
--- a/debian/snmpd.postinst
+++ b/debian/snmpd.postinst
@@ -1,6 +1,9 @@
-#! /bin/sh
+#!/bin/sh
 
-SNMPDIR=/var/lib/snmp
+SNMP_DIR="/var/lib/snmp"
+SNMP_USER="Debian-snmp"
+SNMP_GROUP="$SNMP_USER"
+SNMP_SHELL="/bin/false"
 
 set -e
 
@@ -10,31 +13,12 @@ case "$1" in
 	. /usr/share/debconf/confmodule
 	db_version 2.0
 
-	if [ ! `getent passwd snmp >/dev/null` ]; then
+        adduser --quiet --system --group --home "$SNMP_DIR" \
+                --disabled-password  --disabled-login \
+                --shell "$SNMP_SHELL" "$SNMP_USER"
 
-	  if [ ! `getent group snmp >/dev/null` ]; then
-	     # no snmp user & group
-	     adduser --quiet --system --group --home $SNMPDIR \
-	             --shell /usr/sbin/nologin snmp
-	  else
-	     # no snmp user, but snmp group exists
-	     adduser --quiet --system --ingroup snmp --home $SNMPDIR \
-	             --shell /usr/sbin/nologin snmp
-	  fi
-
-	elif [ ! `getent group snmp >/dev/null` ]; then
-
-	  # snmp user exists but no snmp group
-	  addgroup --quiet --system snmp
-
-	  # if user is local system user (not LDAP or so), then exec usermod
-	  # see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482041#25
-	  if [ ! `getent passwd snmp | cut -d':' -f3` -ge 1000 ]; then
-	    mkdir -p $SNMPDIR || true
-	    usermod -d $SNMPDIR -m -g snmp -s /usr/sbin/nologin snmp
-	  fi
-
-	fi
+        # care if SNMP_DIR is used by previous "snmp" user
+        chown -R "$SNMP_USER"."$SNMP_GROUP" "$SNMP_DIR"
 
 	# Bug#709087
         DOCDIR=/usr/share/doc/snmpd
diff --git a/debian/snmpd.postrm b/debian/snmpd.postrm
index b23db23..8305e3c 100644
--- a/debian/snmpd.postrm
+++ b/debian/snmpd.postrm
@@ -1,27 +1,36 @@
-#! /bin/sh
+#!/bin/sh
+
+SNMP_USER="Debian-snmp"
+SNMP_GROUP="$SNMP_USER"
 
 set -e
 
-#DEBHELPER#
+case "$1" in
+     purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+         # if "snmp" is system user, it means Debian package created it.
+         deluser --quiet --system snmp || true
+         delgroup --quiet --system snmp || true
+
+         # after 5.7.3+dfsg-2, Debian-snmp is used
+         deluser --quiet --system $SNMP_USER || true
+         delgroup --quiet --system $SNMP_GROUP || true
+
+         if [ $1 = purge ]; then
+             rm -rf /var/lib/snmp/snmpd.conf* \
+                    /var/run/agentx /var/agentx/master \
+                    /var/run/snmpd.pid
+         fi
+    ;;
 
-if [ $1 = purge ]; then  
-    rm -f /var/lib/snmp/snmpd.conf*
-    rm -rf /var/run/agentx /var/agentx/master
-    rm -f /var/run/snmpd.pid
-    if getent passwd snmp >/dev/null; then
-	if [ -x /usr/sbin/deluser ]; then
-	    deluser --quiet --system snmp
-	else
-	    echo "Can't remove user snmp. Please remove this user by hand."
-	fi
-    fi
-    if getent group snmp >/dev/null; then
-	if [ -x /usr/sbin/delgroup ]; then
-	    delgroup --quiet --system snmp
-	else
-	    echo "Can't remove group snmp. Please remove this group by hand."
-	fi
-    fi
-fi 
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
 
 exit 0
diff --git a/debian/snmpd.preinst b/debian/snmpd.preinst
index 993dd6b..1e7e615 100644
--- a/debian/snmpd.preinst
+++ b/debian/snmpd.preinst
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
 
 set -e
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-net-snmp/pkg-net-snmp.git



More information about the Pkg-net-snmp-commits mailing list