Son aktivite 23 hours ago

Revizyon 02513de097f8d5549e805cea428e7fd96e0fbb4a

install.sh Ham
1#!/bin/bash
2
3set -e
4
5# Цвета для вывода
6ANSI_RED='\033[0;31m'
7ANSI_GREEN='\033[0;32m'
8ANSI_YELLOW='\033[1;33m'
9ANSI_RESET='\033[0m'
10
11# Проверка, что скрипт запущен от root
12if [ "$EUID" -ne 0 ]; then
13 echo -e "${ANSI_RED}Ошибка: скрипт должен запускаться от root${ANSI_RESET}"
14 exit 1
15fi
16
17echo -e "${ANSI_GREEN}=== Настройка системы ===${ANSI_RESET}"
18
19# Запрос имени хоста
20echo -e "${ANSI_YELLOW}Введите новое имя хоста:${ANSI_RESET}"
21read -p "Hostname: " NEW_HOSTNAME
22if [ -z "$NEW_HOSTNAME" ]; then
23 echo -e "${ANSI_RED}Имя хоста не может быть пустым.${ANSI_RESET}"
24 exit 1
25fi
26
27# Запрос имени пользователя
28echo -e "${ANSI_YELLOW}Введите имя нового пользователя:${ANSI_RESET}"
29read -p "Username: " NEW_USER
30if [ -z "$NEW_USER" ]; then
31 echo -e "${ANSI_RED}Имя пользователя не может быть пустым.${ANSI_RESET}"
32 exit 1
33fi
34
35# Запрос пароля для нового пользователя
36echo -e "${ANSI_YELLOW}Введите пароль для пользователя $NEW_USER:${ANSI_RESET}"
37read -s -p "Password: " USER_PASS
38echo
39if [ -z "$USER_PASS" ]; then
40 echo -e "${ANSI_RED}Пароль не может быть пустым.${ANSI_RESET}"
41 exit 1
42fi
43
44echo -e "\n${ANSI_GREEN}=== Установка имени хоста: $NEW_HOSTNAME ===${ANSI_RESET}"
45hostnamectl set-hostname "$NEW_HOSTNAME"
46# Обновление /etc/hosts
47sed -i "s/^127.0.1.1.*/127.0.1.1\t$NEW_HOSTNAME/" /etc/hosts
48echo -e "${ANSI_GREEN}Имя хоста установлено.${ANSI_RESET}"
49
50# Функция добавления репозитория MEPHI
51add_mephi_repository() {
52 # Определение версии Debian
53 . /etc/os-release 2>/dev/null || { echo "Failed to determine release"; exit 1; }
54 [ -z "$VERSION_CODENAME" ] && echo "VERSION_CODENAME not found" && exit 1
55
56 local conf_file="/etc/apt/sources.list.d/debian_mephi.list"
57
58 if grep -qs "mirror.mephi.ru.*$VERSION_CODENAME" "$conf_file" 2>/dev/null; then
59 echo -e "Repository for $VERSION_CODENAME already exists in $conf_file"
60 else
61 echo -e "Adding repository for Debian $VERSION_CODENAME"
62 cat >> "$conf_file" << EOF
63
64# Added $(date '+%Y-%m-%d')
65deb http://mirror.mephi.ru/debian/ $VERSION_CODENAME main non-free-firmware
66deb-src http://mirror.mephi.ru/debian/ $VERSION_CODENAME main non-free-firmware
67EOF
68 echo "Repository added, updating package list..."
69 apt update
70 fi
71}
72
73# Добавляем репозиторий MEPHI
74add_mephi_repository
75
76# Обновление и апгрейд
77apt -y upgrade
78
79# Установка пакетов (включая sudo)
80PACKAGES=(
81 pv nano curl wget sudo lsb-release iptables
82 unzip pigz zstd
83 ncdu gdu
84 screen tmux lynx
85 htop btop iftop mtr ioping
86 git jq yq pwgen
87 bind9-dnsutils net-tools ssh-audit
88 cloud-guest-utils qemu-guest-agent
89 console-setup
90)
91
92echo -e "${ANSI_GREEN}Installing packages...${ANSI_RESET}"
93apt-get update
94apt-get install -y "${PACKAGES[@]}"
95
96# Настройка SSH
97echo -e "${ANSI_GREEN}Allowing SSH root login${ANSI_RESET}"
98sed -i 's/^.*PermitRootLogin.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
99systemctl restart sshd
100echo -e "${ANSI_GREEN}Ok.${ANSI_RESET}"
101
102# Midnight Commander
103apt-get -y install mc
104
105# Настройка таймзоны и локали
106echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
107echo "tzdata tzdata/Zones/Europe select Moscow" | debconf-set-selections
108DEBIAN_FRONTEND=noninteractive dpkg-reconfigure tzdata
109
110cat > /etc/locale.gen << EOF
111ru_RU.UTF-8 UTF-8
112en_US.UTF-8 UTF-8
113EOF
114
115locale-gen
116update-locale LANG=en_US.UTF-8
117locale -a | grep -E "en_US|ru_RU"
118source /etc/default/locale
119
120dpkg-reconfigure console-setup
121dpkg-reconfigure keyboard-configuration
122
123# Настройка journald
124mkdir -p /etc/systemd/journald.conf.d
125cat > /etc/systemd/journald.conf.d/size.conf << EOF
126[Journal]
127SystemMaxUse=1G
128SystemMaxFileSize=50M
129MaxLevelStore=warning
130EOF
131
132systemctl restart systemd-journald
133
134# Создание пользователя
135useradd -m "$NEW_USER" && echo "$NEW_USER:$USER_PASS" | chpasswd && passwd -e "$NEW_USER"
136usermod -aG sudo "$NEW_USER"
137
138# Настройка .Xauthority
139touch "/home/$NEW_USER/.Xauthority"
140chown "$NEW_USER:$NEW_USER" "/home/$NEW_USER/.Xauthority"
141
142echo -e "${ANSI_GREEN}Пользователь $NEW_USER с паролем '${ANSI_YELLOW}$USER_PASS${ANSI_GREEN}' создан${ANSI_RESET}"
143
144# Настройка истории для пользователя
145cat >> "/home/$NEW_USER/.bashrc" << 'EOF'
146export HISTSIZE=10000
147export HISTFILESIZE=50000
148export HISTTIMEFORMAT="%F %T "
149export HISTCONTROL=ignoredups:ignorespace
150shopt -s histappend
151export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
152EOF
153
154chown "$NEW_USER:$NEW_USER" "/home/$NEW_USER/.bashrc"
155
156# Удаление документации git
157rm -rf /usr/share/doc/git/RelNotes
158
159# Настройка истории для root
160cat >> /root/.bashrc << 'EOF'
161export HISTSIZE=10000
162export HISTFILESIZE=50000
163export HISTTIMEFORMAT="%F %T "
164export HISTCONTROL=ignoredups:ignorespace
165shopt -s histappend
166export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
167EOF
168
169source /root/.bashrc
170
171echo -e "${ANSI_GREEN}=== Настройка завершена успешно ===${ANSI_RESET}"