82 lines
1.7 KiB
Bash
82 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo -e "\033[31mThis script requires superuser rights.\033[0m"
|
|
exit 0
|
|
fi
|
|
|
|
if [ -z "$1" ] || [ -z "$2" ]; then
|
|
echo "Please provide both the username and password as arguments."
|
|
exit 1
|
|
fi
|
|
|
|
trap 'echo -e "\033[31mSomething went wrong\033[0m"; exit 1' EXIT
|
|
set -e
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
SMB_CONF="/etc/samba/smb.conf"
|
|
USERNAME="$1"
|
|
PASSWORD="$2"
|
|
|
|
apt update -y
|
|
apt install -y samba
|
|
systemctl enable smbd
|
|
systemctl start smbd
|
|
|
|
mkdir -p /data
|
|
(echo "$PASSWORD"; echo "$PASSWORD") | smbpasswd -a -s "$USERNAME"
|
|
|
|
smbpasswd -e "$USERNAME"
|
|
chown "$USERNAME":"$USERNAME" /data/
|
|
chmod 770 /data/
|
|
|
|
# Backup existing configuration file
|
|
cp "$SMB_CONF" "${SMB_CONF}.bak"
|
|
|
|
# New section
|
|
NEW_SECTION=$(cat << EOM
|
|
|
|
# data folder access
|
|
[data]
|
|
path = /data
|
|
read only = no
|
|
browseable = yes
|
|
create mask = 0777
|
|
force create mode = 0777
|
|
directory mask = 0777
|
|
force directory mode = 0777
|
|
force user = root
|
|
force group = root
|
|
|
|
[backups]
|
|
path = /backups
|
|
read only = no
|
|
browseable = yes
|
|
create mask = 0777
|
|
force create mode = 0777
|
|
directory mask = 0777
|
|
force directory mode = 0777
|
|
force user = root
|
|
force group = root
|
|
|
|
EOM
|
|
)
|
|
|
|
# Adding a new section to the end of the configuration file
|
|
echo "$NEW_SECTION" | tee -a "$SMB_CONF" > /dev/null
|
|
|
|
if grep -q "^obey pam restrictions = yes" "$SMB_CONF"; then
|
|
sed -i 's/^obey pam restrictions = yes/obey pam restrictions = no/' "$SMB_CONF"
|
|
echo "Param 'obey pam restrictions' changed to 'no'"
|
|
else
|
|
echo "Param 'obey pam restrictions = yes' not found."
|
|
fi
|
|
|
|
echo "Samba configuration updated and saved to $SMB_CONF."
|
|
|
|
systemctl restart smbd nmbd
|
|
|
|
trap - EXIT
|
|
echo "Samba configured complete."
|