#!/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} 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 cat > /etc/krb5.conf << EOL [logging] default = SYSLOG:DEBUG kdc = SYSLOG:DEBUG admin_server = SYSLOG:DEBUG [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false default_realm = ${NFS_KRB_REALM} [realms] ${NFS_KRB_REALM} = { kdc = localhost admin_server = localhost } EOL cat > /etc/idmapd.conf << EOC [General] Domain = ${NFS_KRB_REALM} Verbosity = 5 EOC cat > /etc/nfs.conf << EOC [general] pipefs-directory=/run/rpc_pipefs [exports] [exportfs] debug=1 [gssd] verbosity=5 rpc-verbosity=5 keytab-file=/etc/krb5.keytab [exportd] debug="all" [mountd] debug="all" manage-gids=y port=892 [nfsdcld] debug=1 [nfsdcltrack] debug=1 [nfsd] debug=1 # threads=8 # host= # grace-time=90 # lease-time=90 udp=y tcp=y vers3=y vers4=y vers4.0=y vers4.1=y vers4.2=y EOC touch /var/lib/krb5kdc/kadm5.acl exportfs -rvaf kdb5_util -r "${NFS_KRB_REALM}" create -s << EOL ${NFS_KRB_PWD} ${NFS_KRB_PWD} EOL echo "${NFS_KRB_REALM}" > /etc/hostname # setup logging syslogd rpcdebug -m nfsd -s all rpcdebug -m nfs -s all rpcdebug -m rpc -s all kadmin.local << EOS addprinc ${NFS_KRB_PRINC}@${NFS_KRB_REALM} ${NFS_KRB_PWD} ${NFS_KRB_PWD} ktadd -norandkey ${NFS_KRB_PRINC}@${NFS_KRB_REALM} EOS export OPTS_RPC_MOUNTD='--debug all -t 8 -N 3' cat >> /etc/conf.d/nfs < /var/log/rpc-gssd.log & rpc.svcgssd -vf &> /var/log/gssd.log & cat /etc/krb5.conf while true; do sleep 360 done