You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
#!/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
|
|
|