обновление
This commit is contained in:
184
ib.sh
184
ib.sh
@@ -264,23 +264,182 @@ status_all() {
|
|||||||
echo "📅 Время: $(date)"
|
echo "📅 Время: $(date)"
|
||||||
pause
|
pause
|
||||||
}
|
}
|
||||||
|
install_smb_interactive() {
|
||||||
|
echo "${GREEN}🗄️ SAMBA/SMB СЕРВЕР${NC}"
|
||||||
|
pkg_install samba smbclient cifs-utils
|
||||||
|
|
||||||
|
# Создание папок для шар
|
||||||
|
mkdir -p /srv/samba
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo ""
|
||||||
|
echo "${YELLOW}➕ НОВАЯ ШАРА${NC}"
|
||||||
|
read -p "Путь к папке (ex: /srv/samba/docs): " SHARE_PATH
|
||||||
|
[ -z "$SHARE_PATH" ] && break
|
||||||
|
|
||||||
|
read -p "Имя шары (ex: docs): " SHARE_NAME
|
||||||
|
read -p "Пользователи (ex: user1,user2 или guest): " SHARE_USERS
|
||||||
|
|
||||||
|
# Создание папки
|
||||||
|
mkdir -p "$SHARE_PATH"
|
||||||
|
|
||||||
|
if [[ "$SHARE_USERS" == *"guest"* ]]; then
|
||||||
|
chmod 777 "$SHARE_PATH"
|
||||||
|
GUEST_OK="yes"
|
||||||
|
VALID_USERS=""
|
||||||
|
else
|
||||||
|
chmod 770 "$SHARE_PATH"
|
||||||
|
GUEST_OK="no"
|
||||||
|
VALID_USERS="valid users = $SHARE_USERS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Добавление в smb.conf
|
||||||
|
cat >> /etc/samba/smb.conf << EOF
|
||||||
|
|
||||||
|
[${SHARE_NAME}]
|
||||||
|
path = $SHARE_PATH
|
||||||
|
browsable = yes
|
||||||
|
writable = yes
|
||||||
|
guest ok = $GUEST_OK
|
||||||
|
read only = no
|
||||||
|
create mask = 0664
|
||||||
|
directory mask = 0775
|
||||||
|
$VALID_USERS
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "${GREEN}✅ Шара '$SHARE_NAME' → '$SHARE_PATH'${NC}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Базовый smb.conf
|
||||||
|
cat > /etc/samba/smb.conf << 'EOF'
|
||||||
|
[global]
|
||||||
|
workgroup = WORKGROUP
|
||||||
|
server string = %h server (Samba, v5.2)
|
||||||
|
security = user
|
||||||
|
map to guest = bad user
|
||||||
|
socket options = TCP_NODELAY IPTOS_LOWDELAY
|
||||||
|
EOF
|
||||||
|
|
||||||
|
service_restart smbd nmbd
|
||||||
|
service_enable smbd nmbd
|
||||||
|
|
||||||
|
echo "${GREEN}✅ SMB перезапущен!${NC}"
|
||||||
|
echo "📡 IP: $(hostname -I | awk '{print $1}')"
|
||||||
|
echo "📁 Подключение: //IP/share_name"
|
||||||
|
pause
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_disks_advanced() {
|
||||||
|
clear
|
||||||
|
echo "${GREEN}💾 НОВЫЕ ДИСКИ${NC}"
|
||||||
|
|
||||||
|
# Список дисков с размерами
|
||||||
|
echo "=============================================="
|
||||||
|
echo "ДИСКИ (непримонтированные):"
|
||||||
|
lsblk -dno NAME,SIZE,TYPE,ROTA | grep disk | while read name size type rota; do
|
||||||
|
disk="/dev/$name"
|
||||||
|
if ! mount | grep -q "$disk"; then
|
||||||
|
echo " 📦 $disk [$size] ($(blockdev --getsize64 "$disk" | numfmt --to=iec))"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "=============================================="
|
||||||
|
read -p "Диск для настройки (/dev/sdb): " SELECTED_DISK
|
||||||
|
|
||||||
|
if [ -z "$SELECTED_DISK" ] || [ ! -b "$SELECTED_DISK" ]; then
|
||||||
|
echo "${RED}❌ Диск не найден${NC}"
|
||||||
|
pause
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "${YELLOW}⚙️ НАСТРОЙКА $SELECTED_DISK${NC}"
|
||||||
|
echo "1) ext4 (Linux)"
|
||||||
|
echo "2) xfs (RHEL/CentOS)"
|
||||||
|
echo "3) btrfs (современный)"
|
||||||
|
echo "4) ntfs (Windows совместимость)"
|
||||||
|
read -p "Файловая система: " FS_CHOICE
|
||||||
|
|
||||||
|
case $FS_CHOICE in
|
||||||
|
1) FS="ext4";;
|
||||||
|
2) FS="xfs";;
|
||||||
|
3) FS="btrfs";;
|
||||||
|
4) FS="ntfs";;
|
||||||
|
*) echo "Отмена"; return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Форматирование
|
||||||
|
echo "${YELLOW}⚠️ ВНИМАНИЕ: Данные будут УДАЛЕНЫ!${NC}"
|
||||||
|
read -p "ПРОДОЛЖИТЬ? (y/N): " CONFIRM
|
||||||
|
[ "$CONFIRM" != "y" ] && return
|
||||||
|
|
||||||
|
parted "$SELECTED_DISK" --script mklabel gpt
|
||||||
|
parted "$SELECTED_DISK" --script mkpart primary "$FS" 1MiB 100%
|
||||||
|
partprobe "$SELECTED_DISK"
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
PARTITION="${SELECTED_DISK}1"
|
||||||
|
|
||||||
|
case $FS in
|
||||||
|
ext4) mkfs.ext4 -F "$PARTITION" ;;
|
||||||
|
xfs) mkfs.xfs -f "$PARTITION" ;;
|
||||||
|
btrfs) mkfs.btrfs -f "$PARTITION" ;;
|
||||||
|
ntfs) mkfs.ntfs -Q "$PARTITION" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Монтирование
|
||||||
|
echo ""
|
||||||
|
read -p "Точка монтирования (ex: /srv/data): " MOUNT_POINT
|
||||||
|
MOUNT_POINT=${MOUNT_POINT:-/srv/data}
|
||||||
|
|
||||||
|
mkdir -p "$MOUNT_POINT"
|
||||||
|
mount "$PARTITION" "$MOUNT_POINT"
|
||||||
|
|
||||||
|
# FSTAB
|
||||||
|
UUID=$(blkid -s UUID -o value "$PARTITION")
|
||||||
|
case $FS in
|
||||||
|
ntfs) FSTAB_OPTS="defaults,uid=1000,gid=1000" ;;
|
||||||
|
*) FSTAB_OPTS="defaults" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "UUID=$UUID $MOUNT_POINT $FS $FSTAB_OPTS 0 2" >> /etc/fstab
|
||||||
|
|
||||||
|
# Проверка
|
||||||
|
mount -a
|
||||||
|
df -h "$MOUNT_POINT"
|
||||||
|
|
||||||
|
echo "${GREEN}✅ $PARTITION → $MOUNT_POINT ($FS)${NC}"
|
||||||
|
echo "📝 Добавлено в /etc/fstab"
|
||||||
|
pause
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# --- ГЛАВНОЕ МЕНЮ ---
|
# --- ГЛАВНОЕ МЕНЮ ---
|
||||||
detect_os
|
detect_os
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
clear
|
clear
|
||||||
echo "=============================================="
|
printf "==============================================\n"
|
||||||
echo " 🚀 SERVER ULTIMATE v1.2.1 ($OS_ID $OS_VERSION) 🚀"
|
printf " 🚀 SERVER ULTIMATE v5.2 (%s %s) 🚀\n" "$OS_ID" "$OS_VERSION"
|
||||||
echo "=============================================="
|
printf "==============================================\n"
|
||||||
echo "1) 📛 Hostname 2) 🌍 Часовой пояс + база"
|
printf "1) 📛 Hostname \n"
|
||||||
echo "3) 👤 Пользователь 4) 🔒 SSH безопасность"
|
printf "2) 🌍 Часовой пояс + база \n"
|
||||||
echo "5) 📊 Аудит + ротация 6) 🐳 Docker + Compose"
|
printf "3) 👤 Пользователь \n"
|
||||||
echo "7) 🌐 WireGuard 8) 🔐 OpenVPN (Angristan)"
|
printf "4) 🔒 SSH безопасность \n"
|
||||||
echo "9) 📈 Мониторинг 10) 🛡️ Fail2Ban"
|
printf "5) 📊 Аудит \n"
|
||||||
echo "11) 🧹 Очистка пакетов 12) 🔄 Автообновления"
|
printf "6) 🐳 Docker \n"
|
||||||
echo "S) 📊 Статус всех сервисов 0) ❌ Выход"
|
printf "7) 🌐 WireGuard \n"
|
||||||
echo "=============================================="
|
printf "8) 🔐 OpenVPN \n"
|
||||||
|
printf "9) 📈 Мониторинг \n"
|
||||||
|
printf "10) 🛡️ Fail2Ban \n"
|
||||||
|
printf "11) 🧹 Очистка \n"
|
||||||
|
printf "12) 🔄 Автообновления \n"
|
||||||
|
printf "13) 🗄️ SAMBA (шары+пользователи) \n"
|
||||||
|
printf "14) 💾 Диски (выбор+форматирование)\n"
|
||||||
|
printf "15) 📈 Расширение дисков \n"
|
||||||
|
printf "S) 📊 Статус \n"
|
||||||
|
printf "0) ❌ Выход \n"
|
||||||
|
printf "==============================================\n"
|
||||||
read -p "► " opt
|
read -p "► " opt
|
||||||
|
|
||||||
case $opt in
|
case $opt in
|
||||||
@@ -296,6 +455,9 @@ while true; do
|
|||||||
10) pkg_install fail2ban; service_enable fail2ban; pause ;;
|
10) pkg_install fail2ban; service_enable fail2ban; pause ;;
|
||||||
11) $PKG_MGR autoremove -y && $PKG_MGR autoclean -y; pause ;;
|
11) $PKG_MGR autoremove -y && $PKG_MGR autoclean -y; pause ;;
|
||||||
12) install_unattended_upgrades ;;
|
12) install_unattended_upgrades ;;
|
||||||
|
13) install_smb_interactive ;;
|
||||||
|
14) setup_disks_advanced ;;
|
||||||
|
15) extend_disk_space ;;
|
||||||
[Ss]) status_all ;;
|
[Ss]) status_all ;;
|
||||||
0) break ;;
|
0) break ;;
|
||||||
*) echo "❌ Неверный пункт!"; sleep 1 ;;
|
*) echo "❌ Неверный пункт!"; sleep 1 ;;
|
||||||
|
|||||||
Reference in New Issue
Block a user