#!/bin/bash echo "=== SAMBA WEB DIRECTORY CONFIGURATION SCRIPT ===" DEF_WWW="/srv/www" read -p "Путь до веб-каталога [$DEF_WWW]: " WWW_DIR WWW_DIR=${WWW_DIR:-$DEF_WWW} # Проверка существования каталога if [ ! -d "$WWW_DIR" ]; then echo "Каталог не существует, создаю..." mkdir -p "$WWW_DIR" fi # Выбор пользователя Samba read -p "Введите имя пользователя Samba (Linux user): " SMB_USER if ! id "$SMB_USER" >/dev/null 2>&1; then echo "Пользователь $SMB_USER не найден!" read -p "Создать пользователя $SMB_USER? (y/n): " CREATE if [[ "$CREATE" == "y" ]]; then sudo adduser "$SMB_USER" else echo "Без пользователя идти дальше нельзя." exit 1 fi fi echo echo "=== Добавление пользователя в группу www-data ===" usermod -aG www-data "$SMB_USER" echo echo "=== Настройка пароля Samba ===" smbpasswd -a "$SMB_USER" echo echo "=== Установка прав на каталог ===" chown -R www-data:www-data "$WWW_DIR" chmod -R 775 "$WWW_DIR" # setgid чтобы новые файлы наследовали группу www-data chmod g+s "$WWW_DIR" # ACL для корректного доступа setfacl -R -m g:www-data:rwx "$WWW_DIR" setfacl -dR -m g:www-data:rwx "$WWW_DIR" echo echo "=== Добавление секции в smb.conf ===" SMB_CONF="/etc/samba/smb.conf" # Проверяем, есть ли уже секция if grep -q "^\[www\]" "$SMB_CONF"; then echo "Секция [www] уже существует — пропускаю." else cat <> "$SMB_CONF" [www] path = $WWW_DIR browseable = yes writable = yes read only = no valid users = $SMB_USER force group = www-data force create mode = 0664 force directory mode = 0775 EOF fi echo echo "=== Перезапуск Samba ===" systemctl restart smbd # systemctl restart nmbd 2>/dev/null || true echo echo "=== ГОТОВО! ===" echo "Каталог: $WWW_DIR" echo "Доступ по Samba: [www]" echo "Пользователь: $SMB_USER"