#!/bin/sh set -e VAR_PATH='/var/samba' INIT_FLAG_FILE='initialized' user_aG() { UNAME="$1" GNAME="$2" GRP_LINE=$(grep -E "^${GNAME}:" /etc/group 2>/dev/null) if [[ ! ${GRP_LINE} =~ ':$' ]]; then UNAME=",$UNAME" fi sed -i "s/${GRP_LINE}/${GRP_LINE}${UNAME}/" /etc/group } FLAG_PATH="$VAR_PATH/$INIT_FLAG_FILE" if [ ! -f "$FLAG_PATH" ]; then addgroup -S -g "$GID_PUBLIC" public addgroup -S -g "$GID_PROTECT" protect addgroup -S -g "$GID_PRIVATE" private if [ $(id -u guest) -ne $UID_GUEST ]; then deluser --remove-home guest 2>/dev/null adduser -SHD -s /sbin/nologin -G public -u "$UID_GUEST" guest fi adduser -SHD -s /sbin/nologin -G private -u "$UID_ADMIN" "$ADMIN_NAME" user_aG "$ADMIN_NAME" protect user_aG "$ADMIN_NAME" public cat <<-EOF | smbpasswd -a "$ADMIN_NAME" $ADMIN_PASSWD $ADMIN_PASSWD EOF sed "s/%SAMBA_ADMIN%/$ADMIN_NAME/g" /etc/samba/smb.conf.temp > /etc/samba/smb.conf rm /etc/samba/smb.conf.temp mkdir -p "$VAR_PATH" touch "$FLAG_PATH" fi exec smbd --foreground --no-process-group