#!/bin/bash echo "=== SAMBA AUTO SETUP FOR DEBIAN 12 ===" # --- Default values --- DEF_SHARE_NAME="share" DEF_SHARE_PATH="/home/user" DEF_SMB_USER="user" # --- Ask user or use defaults --- read -p "Имя общей папки (samba share name) [$DEF_SHARE_NAME]: " SHARE_NAME SHARE_NAME=${SHARE_NAME:-$DEF_SHARE_NAME} read -p "Путь к общей папке [$DEF_SHARE_PATH]: " SHARE_PATH SHARE_PATH=${SHARE_PATH:-$DEF_SHARE_PATH} read -p "Имя Samba пользователя [$DEF_SMB_USER]: " SMB_USER SMB_USER=${SMB_USER:-$DEF_SMB_USER} # Ask password read -s -p "Пароль Samba пользователя: " SMB_PASS echo read -s -p "Повторите пароль: " SMB_PASS2 echo if [ "$SMB_PASS" != "$SMB_PASS2" ]; then echo "Ошибка: пароли не совпадают!" exit 1 fi echo echo "=== Установка пакетов ===" apt update -y apt install -y samba samba-common-bin echo echo "=== Создание каталога ===" mkdir -p "$SHARE_PATH" chmod -R 0777 "$SHARE_PATH" echo echo "=== Создание пользователя Samba ===" # Create system user if not exists if ! id "$SMB_USER" >/dev/null 2>&1; then adduser --disabled-password --gecos "" "$SMB_USER" fi # Add samba password (echo "$SMB_PASS"; echo "$SMB_PASS") | smbpasswd -a "$SMB_USER" echo echo "=== Резервная копия smb.conf ===" mv /etc/samba/smb.conf /etc/samba/smb.conf.bak.$(date +%Y%m%d-%H%M%S) echo echo "=== Настройка Samba ===" cat <> /etc/samba/smb.conf # # Sample configuration file for the Samba suite for Debian GNU/Linux. # #======================= Global Settings ======================= [global] ## Browsing/Identification ### workgroup = WORKGROUP #### Networking #### ; interfaces = 127.0.0.0/8 eth0 ; bind interfaces only = yes #### Debugging/Accounting #### log file = /var/log/samba/log.%m max log size = 1000 logging = file panic action = /usr/share/samba/panic-action %d ####### Authentication ####### server role = standalone server obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user ########## Domains ########### ############ Misc ############ usershare allow guests = yes #======================= Share Definitions ======================= [printers] comment = All Printers browseable = no path = /var/tmp printable = yes guest ok = no read only = yes create mask = 0700 # Windows clients look for this share name as a source of downloadable # printer drivers [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no # Uncomment to allow remote administration of Windows print drivers. # You may need to replace 'lpadmin' with the name of the group your # admin users are members of. # Please note that you also need to set appropriate Unix permissions # to the drivers directory for these users to have write rights in it ; write list = root, @lpadmin [$SHARE_NAME] comment = Samba Shared Folder path = $SHARE_PATH browseable = yes writable = yes read only = no guest ok = no create mask = 0777 directory mask = 0777 valid users = $SMB_USER EOF echo echo "=== Перезапуск Samba ===" systemctl restart smbd.service # systemctl enable smbd nmbd echo echo "=== ГОТОВО ===" echo "Имя общей папки (share): $SHARE_NAME" echo "Путь: $SHARE_PATH" echo "Samba-пользователь: $SMB_USER"