mirror of
https://github.com/ceph/ceph
synced 2026-08-02 07:03:18 +00:00
cephadm.postinst can fail if cephadm was originally installed using a
version that didn't configure a home directory for the user at all.
Newer versions do configure a home directory (as either `/home/cephadm`
or `/var/lib/cephadm`) so if that is configured then nothing needs to be
done. But if the user was created with no home directory then one needs
to be added for the configure step to succeed.
Fixes: https://tracker.ceph.com/issues/72083
commit 90bc036924 added home directories
for new cephadm users created, but didn't add home directories to
cephadm users that already existed.
Signed-off-by: Elliot Courant <me@elliotcourant.dev>
79 lines
2.2 KiB
Bash
79 lines
2.2 KiB
Bash
#!/bin/sh
|
|
# vim: set noet ts=8:
|
|
# postinst script for cephadm
|
|
#
|
|
# 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
|
|
|
|
|
|
case "$1" in
|
|
configure)
|
|
# create cephadm user
|
|
# 1. create user if not existing
|
|
if ! getent passwd | grep -q "^cephadm:"; then
|
|
echo -n "Adding system user cephadm.."
|
|
adduser --quiet \
|
|
--system \
|
|
--disabled-password \
|
|
--home /var/lib/cephadm \
|
|
--shell /bin/bash cephadm 2>/dev/null || true
|
|
usermod --comment "cephadm user for mgr/cephadm" cephadm
|
|
echo "..done"
|
|
fi
|
|
|
|
# 2. make sure user is unlocked
|
|
if [ -f /etc/shadow ]; then
|
|
usermod -U -e '' cephadm
|
|
else
|
|
usermod -U cephadm
|
|
fi
|
|
|
|
# Older versions may not have configured a home directory.
|
|
# If they don't have one configured then add it.
|
|
if ! test ~cephadm = "/nonexistent"; then
|
|
usermod --home /var/lib/cephadm -m cephadm
|
|
fi
|
|
|
|
# set up (initially empty) .ssh/authorized_keys file
|
|
if ! test -d ~cephadm/.ssh; then
|
|
mkdir ~cephadm/.ssh
|
|
chown --reference ~cephadm ~cephadm/.ssh
|
|
chmod 0700 ~cephadm/.ssh
|
|
fi
|
|
if ! test -e ~cephadm/.ssh/authorized_keys; then
|
|
touch ~cephadm/.ssh/authorized_keys
|
|
chown --reference ~cephadm ~cephadm/.ssh/authorized_keys
|
|
chmod 0600 ~cephadm/.ssh/authorized_keys
|
|
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
|