summaryrefslogtreecommitdiffstats
path: root/debian/ceph-common.postinst
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/ceph-common.postinst140
1 files changed, 140 insertions, 0 deletions
diff --git a/debian/ceph-common.postinst b/debian/ceph-common.postinst
new file mode 100644
index 00000000..5535e9de
--- /dev/null
+++ b/debian/ceph-common.postinst
@@ -0,0 +1,140 @@
+#!/bin/sh
+# vim: set noet ts=8:
+# postinst script for ceph-common
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# 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>
+# postinst abort-remove
+# deconfigured's-postinst abort-deconfigure in-favour <failed-install-package> <version> [<removing conflicting-package> <version>]
+#
+
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+# Let the admin override these distro-specified defaults. This is NOT
+# recommended!
+[ -f "/etc/default/ceph" ] && . /etc/default/ceph
+
+[ -z "$SERVER_HOME" ] && SERVER_HOME=/var/lib/ceph
+[ -z "$SERVER_USER" ] && SERVER_USER=ceph
+[ -z "$SERVER_NAME" ] && SERVER_NAME="Ceph storage service"
+[ -z "$SERVER_GROUP" ] && SERVER_GROUP=ceph
+[ -z "$SERVER_UID" ] && SERVER_UID=64045 # alloc by Debian base-passwd maintainer
+[ -z "$SERVER_GID" ] && SERVER_GID=$SERVER_UID
+
+
+# Groups that the user will be added to, if undefined, then none.
+[ -z "$SERVER_ADDGROUP" ] && SERVER_ADDGROUP=
+
+# Custom dpkg-maintscript-helper type function to deal with
+# nested /etc/default/ceph/ceph
+finish_mv_ceph_defaults() {
+ rm -rf "/etc/default/ceph.dpkg-backup/ceph.dpkg-remove"
+
+ [ -e "/etc/default/ceph.dpkg-backup/ceph" ] || return 0
+
+ echo "Preserving user changes to /etc/default/ceph (renamed from /etc/default/ceph/ceph)..."
+ if [ -f "/etc/default/ceph" ]; then
+ mv -f "/etc/default/ceph" "/etc/default/ceph.dpkg-new"
+ fi
+ mv -f "/etc/default/ceph.dpkg-backup/ceph" "/etc/default/ceph"
+}
+
+case "$1" in
+ configure)
+ # create user to avoid running server as root
+ # 1. create group if not existing
+ if ! getent group | grep -q "^$SERVER_GROUP:" ; then
+ echo -n "Adding group $SERVER_GROUP.."
+ addgroup --quiet --system --gid $SERVER_GID \
+ $SERVER_GROUP 2>/dev/null ||true
+ echo "..done"
+ fi
+ # 2. create user if not existing
+ if ! getent passwd | grep -q "^$SERVER_USER:"; then
+ echo -n "Adding system user $SERVER_USER.."
+ adduser --quiet \
+ --system \
+ --no-create-home \
+ --disabled-password \
+ --uid $SERVER_UID \
+ --gid $SERVER_GID \
+ --home $SERVER_HOME \
+ $SERVER_USER 2>/dev/null || true
+ echo "..done"
+ fi
+ # 3. adjust passwd entry
+ echo -n "Setting system user $SERVER_USER properties.."
+ usermod -c "$SERVER_NAME" \
+ -d $SERVER_HOME \
+ -g $SERVER_GROUP \
+ $SERVER_USER
+
+ # Unlock $SERVER_USER in case it is locked from an uninstall
+ if [ -f /etc/shadow ]; then
+ usermod -U -e '' $SERVER_USER
+ else
+ usermod -U $SERVER_USER
+ fi
+ echo "..done"
+
+ # 5. adjust file and directory permissions
+ if ! dpkg-statoverride --list $SERVER_HOME >/dev/null
+ then
+ chown $SERVER_USER:$SERVER_GROUP $SERVER_HOME
+ chmod u=rwx,g=rx,o= $SERVER_HOME
+ fi
+ if ! dpkg-statoverride --list /var/log/ceph >/dev/null
+ then
+ chown -R $SERVER_USER:$SERVER_GROUP /var/log/ceph
+ # members of group ceph can log here, but cannot remove
+ # others' files. non-members cannot read any logs.
+ chmod u=rwx,g=rwxs,o=t /var/log/ceph
+ fi
+
+ # 6. fix /var/run/ceph
+ if [ -d /var/run/ceph ]; then
+ echo -n "Fixing /var/run/ceph ownership.."
+ chown $SERVER_USER:$SERVER_GROUP /var/run/ceph
+ echo "..done"
+ fi
+
+ # create /run/ceph. fail softly if systemd isn't present or
+ # something.
+ [ -x /bin/systemd-tmpfiles ] && systemd-tmpfiles --create || true
+
+ # Complete renames of /etc/default/ceph
+ if [ -n "$2" ] &&
+ dpkg --compare-versions -- "$2" le-nl 10.2.1-0ubuntu1; then
+ finish_mv_ceph_defaults
+ # Preserve dpkg-backup directory if it still contains
+ # any file
+ if ! ls -1qA "/etc/default/ceph.dpkg-backup" | grep -q . ; then
+ rm -rf "/etc/default/ceph.dpkg-backup"
+ fi
+ fi
+ ;;
+ abort-upgrade|abort-remove|abort-deconfigure)
+ :
+ ;;
+
+ *)
+ echo "postinst 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