89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| set -xo 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}"
 | |
| else
 | |
| 	cp /etc/exports.mnt /etc/exports
 | |
| 	grep -vi "^[[:space:]]*#" /etc/exports | while read -r line; do
 | |
| 			if [ -n "${line}" ]; then
 | |
| 				trimmed="${line##*([[:space:]])}"
 | |
| 				# shellcheck disable=SC2001
 | |
| 				rcdir="$(eval "declare -a str=($( echo "$trimmed" | sed 's/[][`~!@#$%^&*():;<>.,?|{}=+-]/\\&/g' )); echo \${str[0]}")"
 | |
| 				cdir="${rcdir##*(\")}"
 | |
| 				echo "${cdir}"
 | |
| 				mkdir -p "/exports${cdir}"
 | |
| 				mount --bind -o rw "${cdir}" "/exports${cdir}"
 | |
| 				chmod 777 "/exports${cdir}"
 | |
| 			fi
 | |
| 	done
 | |
| 	sed -i -r '/^[[:space:]]*#/!s/^("?)/\1\/exports/' /etc/exports
 | |
| 	# root entry
 | |
| 	echo -e "\n/exports *(rw,no_root_squash,insecure,no_subtree_check,nohide,fsid=0,sync,sec=krb5p:krb5i:krb5)" >> /etc/exports
 | |
| fi
 | |
| 
 | |
| # setup logging
 | |
| syslogd 
 | |
| 
 | |
| ./common.sh
 | |
| 
 | |
| exportfs -rvaf
 | |
| 
 | |
| 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 |