nfs-krb/entrypoint.sh

75 lines
1.6 KiB
Bash

#!/bin/bash
set -xuo pipefail
trap "stop; exit 0;" SIGTERM SIGINT
stop()
{
echo "signal caught, stopping the world..."
exportfs -uav
rc-service krb5kdc stop
rc-service kadmin stop
rc-service nfs stop
echo "bye!"
exit
}
DEFALUT_TIMEZONE="America/New York"
DEFAULT_PERMITTED="*"
RW_MODE="rw"
UID=${NFS_UID:-0}
apk add --no-cache --update alpine-conf
setup-timezone -z "${SRV_TZ:-${DEFALUT_TIMEZONE}}"
apk del alpine-conf
cat > /etc/chrony/chrony.conf << 'EOF'
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
EOF
rc-service chronyd start && rc-update add chronyd default
if [ -n "${SHARED_DIRECTORY}" ]; then
mkdir -p /exports"${SHARED_DIRECTORY}"
options="(${RW_MODE:-rw},no_root_squash,sync,no_subtree_check,insecure,sec=krb5p:krb5i:krb5)"
mount --bind "${SHARED_DIRECTORY}" /exports"${SHARED_DIRECTORY}"
cat > /etc/exports <<- EOE
/exports ${PERMITTED:-${DEFAULT_PERMITTED}}(${RW_MODE:-rw},no_root_squash,insecure,no_subtree_check,hide,fsid=0,sync,sec=krb5p:krb5i:krb5)
/exports${SHARED_DIRECTORY} ${PERMITTED:-${DEFAULT_PERMITTED}}${options%?},fsid=1)
EOE
chmod 777 "${SHARED_DIRECTORY}"
fi
# setup logging
syslogd
./common.sh
exportfs -rvaf
echo "${NFS_KRB_REALM}" > /etc/hostname
export OPTS_RPC_MOUNTD='--debug all -t 8 -N 3'
cat >> /etc/conf.d/nfs <<EOC
OPTS_RPC_MOUNTD="${OPTS_RPC_MOUNTD}"
OPTS_RPC_NFSD="--debug --syslog"
EXPORTFS_TIMEOUT=30
EOC
rc-service krb5kdc start
rc-service krb5kadmind start
rc-service nfs start
# shellcheck disable=SC2046
kill -9 $(pidof rpc.svcgssd)
rpc.gssd -vf &> /var/log/rpc-gssd.log &
rpc.svcgssd -vf &> /var/log/gssd.log &
cat /etc/krb5.conf
while true; do
sleep 360
done