ceph/debian/ceph-base.postinst
Max Carrara 6fc96426d0 debian: recursively adjust permissions of /var/lib/ceph/crash
A rather recent PR made ceph-crash run as "ceph" user instead of
root [0]. However, because /var/lib/ceph/crash/posted belongs to root,
ceph-crash cannot actually post any crash logs now.

This commit fixes this by recursively updating the permissions of
'/var/lib/ceph/crash', which ensures that all files and directories
used by 'ceph-crash.service' are actually owned by the user configured
for Ceph. This also accounts for existing installations.

Additionally, quote interpolated variables and use curly braces [1].

[0]: #48713
[1]: https://www.shellcheck.net/wiki/SC2086

Fixes: https://tracker.ceph.com/issues/64548
Signed-off-by: Max Carrara <m.carrara@proxmox.com>
(cherry picked from commit 97a1ec4b52)
2024-07-18 17:07:16 +07:00

64 lines
1.7 KiB
Bash

#!/bin/sh
# vim: set noet ts=8:
# postinst script for ceph
#
# 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>]
#
# The current action is to simply remove the mistakenly-added
# /etc/init/ceph.conf file; this could be done in any of these cases,
# although technically it will leave the system in a different state
# than the original install that included that file. So instead we
# only remove on "configure", since that's the only time we know we're
# successful in installing a newer package than the erroneous version.
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
[ -f "/etc/default/ceph" ] && . /etc/default/ceph
[ -z "$SERVER_USER" ] && SERVER_USER=ceph
[ -z "$SERVER_GROUP" ] && SERVER_GROUP=ceph
case "$1" in
configure)
rm -f /etc/init/ceph.conf
[ -x /sbin/start ] && start ceph-all || :
# adjust file and directory permissions
for DIR in /var/lib/ceph/* ; do
if ! dpkg-statoverride --list "${DIR}" >/dev/null
then
chown "${SERVER_USER}:${SERVER_GROUP}" "${DIR}"
fi
done
chown "${SERVER_USER}:${SERVER_GROUP}" -R /var/lib/ceph/crash/*;
;;
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