KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 31 insertions, 9 deletions
install.sh
| @@ -158,14 +158,14 @@ install_packages() { | |||
| 158 | 158 | htop btop iftop mtr ioping | |
| 159 | 159 | git jq yq pwgen | |
| 160 | 160 | bind9-dnsutils net-tools ssh-audit | |
| 161 | - | cloud-guest-utils qemu-guest-agent | |
| 161 | + | qemu-guest-agent | |
| 162 | 162 | console-setup | |
| 163 | 163 | cloud-guest-utils gnupg | |
| 164 | 164 | ) | |
| 165 | 165 | ||
| 166 | 166 | echo -e "${ANSI_GREEN}Installing packages...${ANSI_RESET}" | |
| 167 | 167 | apt-get update | |
| 168 | - | apt-get install -y "${packages[@]}" | |
| 168 | + | apt-get install -y --ignore-missing "${packages[@]}" | |
| 169 | 169 | } | |
| 170 | 170 | ||
| 171 | 171 | install_qemu_geest_agent() { | |
| @@ -220,13 +220,35 @@ create_user() { | |||
| 220 | 220 | local username=$1 | |
| 221 | 221 | local password=$2 | |
| 222 | 222 | ||
| 223 | - | useradd -m "$username" && echo "$username:$password" | chpasswd && passwd -e "$username" | |
| 224 | - | usermod -aG sudo "$username" | |
| 225 | - | ||
| 226 | - | touch "/home/$username/.Xauthority" | |
| 227 | - | chown "$username:$username" "/home/$username/.Xauthority" | |
| 228 | - | ||
| 229 | - | echo -e "${ANSI_GREEN}Пользователь $username с паролем '${ANSI_YELLOW}$password${ANSI_GREEN}' создан${ANSI_RESET}" | |
| 223 | + | # Создание с явным указанием оболочки и копированием скелета | |
| 224 | + | useradd -m -s /bin/bash -k /etc/skel "$username" || { | |
| 225 | + | echo -e "${ANSI_RED}Ошибка создания пользователя${ANSI_RESET}" | |
| 226 | + | return 1 | |
| 227 | + | } | |
| 228 | + | ||
| 229 | + | # Установка пароля | |
| 230 | + | echo "$username:$password" | chpasswd | |
| 231 | + | ||
| 232 | + | # Добавление в sudo (явно проверяем) | |
| 233 | + | usermod -aG sudo "$username" || true | |
| 234 | + | ||
| 235 | + | # Убеждаемся, что группа sudo имеет права | |
| 236 | + | if ! grep -q "^%sudo" /etc/sudoers; then | |
| 237 | + | echo "%sudo ALL=(ALL:ALL) ALL" >> /etc/sudoers | |
| 238 | + | fi | |
| 239 | + | ||
| 240 | + | # Копируем базовые файлы, если скелет не сработал | |
| 241 | + | if [ ! -f "/home/$username/.bashrc" ]; then | |
| 242 | + | cp /etc/skel/.bashrc "/home/$username/.bashrc" 2>/dev/null || true | |
| 243 | + | cp /etc/skel/.profile "/home/$username/.profile" 2>/dev/null || true | |
| 244 | + | cp /etc/skel/.bash_logout "/home/$username/.bash_logout" 2>/dev/null || true | |
| 245 | + | fi | |
| 246 | + | ||
| 247 | + | # Устанавливаем правильные права | |
| 248 | + | chown -R "$username:$username" "/home/$username" | |
| 249 | + | chmod 755 "/home/$username" | |
| 250 | + | ||
| 251 | + | echo -e "${ANSI_GREEN}Пользователь $username создан${ANSI_RESET}" | |
| 230 | 252 | } | |
| 231 | 253 | ||
| 232 | 254 | # Настройка истории для пользователя | |
KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 1 insertion, 1 deletion
install.sh
| @@ -160,7 +160,7 @@ install_packages() { | |||
| 160 | 160 | bind9-dnsutils net-tools ssh-audit | |
| 161 | 161 | cloud-guest-utils qemu-guest-agent | |
| 162 | 162 | console-setup | |
| 163 | - | cloud-guest-utils | |
| 163 | + | cloud-guest-utils gnupg | |
| 164 | 164 | ) | |
| 165 | 165 | ||
| 166 | 166 | echo -e "${ANSI_GREEN}Installing packages...${ANSI_RESET}" | |
KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 21 insertions, 5 deletions
install.sh
| @@ -106,19 +106,34 @@ add_mephi_repository() { | |||
| 106 | 106 | [ -z "$VERSION_CODENAME" ] && echo "VERSION_CODENAME not found" && exit 1 | |
| 107 | 107 | ||
| 108 | 108 | local conf_file="/etc/apt/sources.list.d/debian_mephi.list" | |
| 109 | + | local components | |
| 110 | + | ||
| 111 | + | # Определяем компоненты в зависимости от версии | |
| 112 | + | case "$VERSION_CODENAME" in | |
| 113 | + | bookworm) | |
| 114 | + | components="main non-free-firmware" | |
| 115 | + | ;; | |
| 116 | + | bullseye) | |
| 117 | + | components="main non-free" | |
| 118 | + | ;; | |
| 119 | + | *) | |
| 120 | + | echo "Warning: Unknown codename '$VERSION_CODENAME', using 'main non-free'" | |
| 121 | + | components="main non-free" | |
| 122 | + | ;; | |
| 123 | + | esac | |
| 109 | 124 | ||
| 110 | 125 | if grep -qs "mirror.mephi.ru.*$VERSION_CODENAME" "$conf_file" 2>/dev/null; then | |
| 111 | 126 | echo -e "Repository for $VERSION_CODENAME already exists in $conf_file" | |
| 112 | 127 | else | |
| 113 | - | echo -e "Adding repository for Debian $VERSION_CODENAME" | |
| 128 | + | echo -e "Adding repository for Debian $VERSION_CODENAME with components: $components" | |
| 114 | 129 | cat >> "$conf_file" << EOF | |
| 115 | 130 | ||
| 116 | 131 | # Added $(date '+%Y-%m-%d') | |
| 117 | - | deb http://mirror.mephi.ru/debian/ $VERSION_CODENAME main non-free-firmware | |
| 118 | - | deb-src http://mirror.mephi.ru/debian/ $VERSION_CODENAME main non-free-firmware | |
| 132 | + | deb http://mirror.mephi.ru/debian/ $VERSION_CODENAME $components | |
| 133 | + | deb-src http://mirror.mephi.ru/debian/ $VERSION_CODENAME $components | |
| 119 | 134 | ||
| 120 | - | deb http://mirror.mephi.ru/debian/ $VERSION_CODENAME-updates main non-free-firmware | |
| 121 | - | deb-src http://mirror.mephi.ru/debian/ $VERSION_CODENAME-updates main non-free-firmware | |
| 135 | + | deb http://mirror.mephi.ru/debian/ $VERSION_CODENAME-updates $components | |
| 136 | + | deb-src http://mirror.mephi.ru/debian/ $VERSION_CODENAME-updates $components | |
| 122 | 137 | ||
| 123 | 138 | EOF | |
| 124 | 139 | echo "Repository added, updating package list..." | |
| @@ -145,6 +160,7 @@ install_packages() { | |||
| 145 | 160 | bind9-dnsutils net-tools ssh-audit | |
| 146 | 161 | cloud-guest-utils qemu-guest-agent | |
| 147 | 162 | console-setup | |
| 163 | + | cloud-guest-utils | |
| 148 | 164 | ) | |
| 149 | 165 | ||
| 150 | 166 | echo -e "${ANSI_GREEN}Installing packages...${ANSI_RESET}" | |
KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 7 insertions
install.sh
| @@ -152,6 +152,12 @@ install_packages() { | |||
| 152 | 152 | apt-get install -y "${packages[@]}" | |
| 153 | 153 | } | |
| 154 | 154 | ||
| 155 | + | install_qemu_geest_agent() { | |
| 156 | + | apt-get install -y qemu-guest-agent | |
| 157 | + | sudo systemctl start qemu-guest-agent | |
| 158 | + | sudo systemctl status qemu-guest-agent | |
| 159 | + | } | |
| 160 | + | ||
| 155 | 161 | # Настройка SSH | |
| 156 | 162 | configure_ssh() { | |
| 157 | 163 | echo -e "${ANSI_GREEN}Allowing SSH root login${ANSI_RESET}" | |
| @@ -646,6 +652,7 @@ main() { | |||
| 646 | 652 | add_mephi_repository | |
| 647 | 653 | update_system | |
| 648 | 654 | install_packages | |
| 655 | + | install_qemu_geest_agent | |
| 649 | 656 | configure_ssh | |
| 650 | 657 | configure_locale | |
| 651 | 658 | configure_journald | |
KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 4 insertions
install.sh
| @@ -116,6 +116,10 @@ add_mephi_repository() { | |||
| 116 | 116 | # Added $(date '+%Y-%m-%d') | |
| 117 | 117 | deb http://mirror.mephi.ru/debian/ $VERSION_CODENAME main non-free-firmware | |
| 118 | 118 | deb-src http://mirror.mephi.ru/debian/ $VERSION_CODENAME main non-free-firmware | |
| 119 | + | ||
| 120 | + | deb http://mirror.mephi.ru/debian/ $VERSION_CODENAME-updates main non-free-firmware | |
| 121 | + | deb-src http://mirror.mephi.ru/debian/ $VERSION_CODENAME-updates main non-free-firmware | |
| 122 | + | ||
| 119 | 123 | EOF | |
| 120 | 124 | echo "Repository added, updating package list..." | |
| 121 | 125 | apt update | |
KarelWintersky ревизій цього gist 1 month ago. До ревизії
Без змін
KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 1 insertion, 1 deletion
install.sh
| @@ -72,7 +72,6 @@ ask_proxy() { | |||
| 72 | 72 | read -e -p "Proxy URL: " -i "http://192.168.111.87:3142" PROXY_URL | |
| 73 | 73 | if [ -n "$PROXY_URL" ]; then | |
| 74 | 74 | configure_proxy "$PROXY_URL" | |
| 75 | - | fix_debian_keys | |
| 76 | 75 | fi | |
| 77 | 76 | fi | |
| 78 | 77 | } | |
| @@ -634,6 +633,7 @@ main() { | |||
| 634 | 633 | fi | |
| 635 | 634 | ||
| 636 | 635 | ask_proxy | |
| 636 | + | fix_debian_keys | |
| 637 | 637 | ||
| 638 | 638 | # Выполнение настроек | |
| 639 | 639 | configure_root_history | |
KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 1 insertion, 1 deletion
install.sh
| @@ -66,7 +66,7 @@ ask_password() { | |||
| 66 | 66 | # Запрос настройки прокси | |
| 67 | 67 | ask_proxy() { | |
| 68 | 68 | echo -e "\n${ANSI_YELLOW}Использовать прокси-сервер apt-cacher-ng? (y/n):${ANSI_RESET}" | |
| 69 | - | read -p -e "Use proxy? " USE_PROXY | |
| 69 | + | read -p "Use proxy? " USE_PROXY | |
| 70 | 70 | if [[ "$USE_PROXY" =~ ^[Yy]$ ]]; then | |
| 71 | 71 | echo -e "${ANSI_YELLOW}Введите URL прокси-сервера (например: http://192.168.111.87:3142):${ANSI_RESET}" | |
| 72 | 72 | read -e -p "Proxy URL: " -i "http://192.168.111.87:3142" PROXY_URL | |
KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 1 insertion, 1 deletion
install.sh
| @@ -66,7 +66,7 @@ ask_password() { | |||
| 66 | 66 | # Запрос настройки прокси | |
| 67 | 67 | ask_proxy() { | |
| 68 | 68 | echo -e "\n${ANSI_YELLOW}Использовать прокси-сервер apt-cacher-ng? (y/n):${ANSI_RESET}" | |
| 69 | - | read -p -e "Use proxy? " -i "N" USE_PROXY | |
| 69 | + | read -p -e "Use proxy? " USE_PROXY | |
| 70 | 70 | if [[ "$USE_PROXY" =~ ^[Yy]$ ]]; then | |
| 71 | 71 | echo -e "${ANSI_YELLOW}Введите URL прокси-сервера (например: http://192.168.111.87:3142):${ANSI_RESET}" | |
| 72 | 72 | read -e -p "Proxy URL: " -i "http://192.168.111.87:3142" PROXY_URL | |
KarelWintersky ревизій цього gist 1 month ago. До ревизії
1 file changed, 3 insertions, 4 deletions
install.sh
| @@ -66,14 +66,13 @@ ask_password() { | |||
| 66 | 66 | # Запрос настройки прокси | |
| 67 | 67 | ask_proxy() { | |
| 68 | 68 | echo -e "\n${ANSI_YELLOW}Использовать прокси-сервер apt-cacher-ng? (y/n):${ANSI_RESET}" | |
| 69 | - | read -p "Use proxy? " USE_PROXY | |
| 69 | + | read -p -e "Use proxy? " -i "N" USE_PROXY | |
| 70 | 70 | if [[ "$USE_PROXY" =~ ^[Yy]$ ]]; then | |
| 71 | 71 | echo -e "${ANSI_YELLOW}Введите URL прокси-сервера (например: http://192.168.111.87:3142):${ANSI_RESET}" | |
| 72 | 72 | read -e -p "Proxy URL: " -i "http://192.168.111.87:3142" PROXY_URL | |
| 73 | 73 | if [ -n "$PROXY_URL" ]; then | |
| 74 | 74 | configure_proxy "$PROXY_URL" | |
| 75 | - | else | |
| 76 | - | echo -e "${ANSI_RED}URL прокси не введен, пропускаем${ANSI_RESET}" | |
| 75 | + | fix_debian_keys | |
| 77 | 76 | fi | |
| 78 | 77 | fi | |
| 79 | 78 | } | |
| @@ -638,7 +637,7 @@ main() { | |||
| 638 | 637 | ||
| 639 | 638 | # Выполнение настроек | |
| 640 | 639 | configure_root_history | |
| 641 | - | fix_debian_keys | |
| 640 | + | ||
| 642 | 641 | set_hostname "$NEW_HOSTNAME" | |
| 643 | 642 | add_mephi_repository | |
| 644 | 643 | update_system | |