slackware-current/source/n/openssh/doinst.sh
Patrick J Volkerding 81210e717c Sun Jul 7 19:32:19 UTC 2024
d/gdb-15.1-x86_64-1.txz:  Upgraded.
n/openssh-9.8p1-x86_64-3.txz:  Rebuilt.
  As upstream refactors this into smaller binaries, we could easily run into
  another update that causes an sshd lockout if the listener process isn't
  restarted. So, let's try to prevent that. After the package is upgraded,
  we'll use "sshd -t" to make sure that we have a sane configuration, and if
  so then we'll restart the listener process automatically.
  If you don't like this idea, you may turn it off in /etc/default/sshd.
n/wpa_supplicant-2.10-x86_64-5.txz:  Rebuilt.
  Use more normal permissions for the documentation and examples.
  Thanks to Didier Spaier.
2024-07-07 21:59:59 +02:00

59 lines
1.7 KiB
Bash

config() {
NEW="$1"
OLD="`dirname $NEW`/`basename $NEW .new`"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
preserve_perms() {
NEW="$1"
OLD="$(dirname ${NEW})/$(basename ${NEW} .new)"
if [ -e ${OLD} ]; then
cp -a ${OLD} ${NEW}.incoming
cat ${NEW} > ${NEW}.incoming
touch -r ${NEW} ${NEW}.incoming
mv ${NEW}.incoming ${NEW}
fi
config ${NEW}
}
if [ -r etc/pam.d/sshd.new ]; then
config etc/pam.d/sshd.new
fi
config etc/default/sshd.new
config etc/ssh/ssh_config.new
config etc/ssh/sshd_config.new
preserve_perms etc/rc.d/rc.sshd.new
if [ -e etc/rc.d/rc.sshd.new ]; then
mv etc/rc.d/rc.sshd.new etc/rc.d/rc.sshd
fi
# If the sshd user/group/shadow don't exist, add them:
if ! grep -q "^sshd:" etc/passwd ; then
echo "sshd:x:33:33:sshd:/:" >> etc/passwd
fi
if ! grep -q "^sshd:" etc/group ; then
echo "sshd::33:sshd" >> etc/group
fi
if ! grep -q "^sshd:" etc/shadow ; then
echo "sshd:*:9797:0:::::" >> etc/shadow
fi
# Add a btmp file to store login failure if one doesn't exist:
if [ ! -r var/log/btmp ]; then
( cd var/log ; umask 077 ; touch btmp )
fi
# Restart sshd if it is safe to do so:
. etc/default/sshd
if [ ! "$SSHD_LISTENER_AUTO_RESTART_ON_UPGRADE" = "no" -a ! -x /usr/lib/setup/setup ]; then
chroot . /bin/bash -c "if sshd -t 1> /dev/null 2> /dev/null ; then if [ -x /etc/rc.d/rc.sshd ]; then sh /etc/rc.d/rc.sshd restart 1> /dev/null 2>/dev/null; fi; fi"
fi
unset SSHD_OPTS SSHD_LISTENER_AUTO_RESTART_ON_UPGRADE