#!/bin/bash # Скрипт управления пользователями redOS # Запускать от имени root: sudo ./user_manage.sh DISK_DIR="/mnt/disk" SRC_USER="user" PYCHARM_DIR="pycharm-community-2024.1.1" # --- 1. Показать всех пользователей системы --- echo "=== Список пользователей системы (UID >= 1000) ===" awk -F: '$3 >= 1000 && $3 < 65534 {print $1 " (UID: " $3 ", Home: " $6 ")"}' /etc/passwd echo "" # --- 2. Запрос имени пользователя для удаления --- read -p "Введите имя пользователя для удаления (или оставьте пустым для пропуска): " DEL_USER if [ -n "$DEL_USER" ]; then if id "$DEL_USER" &>/dev/null; then echo "Удаление пользователя $DEL_USER и его домашней директории..." userdel -r "$DEL_USER" if [ -d "$DISK_DIR/$DEL_USER" ]; then echo "Удаление папки $DISK_DIR/$DEL_USER..." rm -rf "$DISK_DIR/$DEL_USER" fi echo "Пользователь $DEL_USER и связанные данные удалены." else echo "Ошибка: Пользователь $DEL_USER не найден." fi else echo "Удаление пропущено." fi echo "" # --- 3. Создание нового пользователя --- read -p "Введите имя нового пользователя (или оставьте пустым для пропуска): " NEW_USER if [ -n "$NEW_USER" ]; then if id "$NEW_USER" &>/dev/null; then echo "Ошибка: Пользователь $NEW_USER уже существует." else echo "Создание пользователя $NEW_USER..." useradd -m "$NEW_USER" echo "Установите пароль для $NEW_USER:" passwd "$NEW_USER" # --- Копирование рабочего стола (включая ярлыки .desktop) --- if [ -d "/home/$SRC_USER/Desktop" ]; then echo "Копирование рабочего стола от $SRC_USER..." mkdir -p "/home/$NEW_USER/Desktop" cp -a "/home/$SRC_USER/Desktop/." "/home/$NEW_USER/Desktop/" chown -R "$NEW_USER:$NEW_USER" "/home/$NEW_USER/Desktop" # Заменяем пути старого пользователя на нового в ярлыках find "/home/$NEW_USER/Desktop" -name "*.desktop" -type f -exec \ sed -i "s|/home/$SRC_USER/|/home/$NEW_USER/|g" {} \; # Обновляем кэш .desktop-файлов (если доступно) sudo -u "$NEW_USER" update-desktop-database "/home/$NEW_USER/Desktop" 2>/dev/null else echo "Предупреждение: /home/$SRC_USER/Desktop не найден." fi # --- Копирование папки PyCharm (с подтверждением) --- if [ -d "/home/$SRC_USER/$PYCHARM_DIR" ]; then read -p "Копировать директорию $PYCHARM_DIR для $NEW_USER? [y/N]: " COPY_PYCHARM case "$COPY_PYCHARM" in [yY]|[yY][eE][sS]) echo "Копирование $PYCHARM_DIR..." cp -a "/home/$SRC_USER/$PYCHARM_DIR" "/home/$NEW_USER/" chown -R "$NEW_USER:$NEW_USER" "/home/$NEW_USER/$PYCHARM_DIR" # Заменяем старые пути внутри конфигов PyCharm grep -rl "/home/$SRC_USER" "/home/$NEW_USER/$PYCHARM_DIR" 2>/dev/null | while read -r f; do sed -i "s|/home/$SRC_USER|/home/$NEW_USER|g" "$f" done echo "Директория $PYCHARM_DIR скопирована." ;; *) echo "Копирование $PYCHARM_DIR пропущено." ;; esac else echo "Предупреждение: /home/$SRC_USER/$PYCHARM_DIR не найден." fi # --- Создание папки в /mnt/disk --- if [ ! -d "$DISK_DIR/$NEW_USER" ]; then echo "Создание папки $DISK_DIR/$NEW_USER..." mkdir -p "$DISK_DIR/$NEW_USER" chown "$NEW_USER:$NEW_USER" "$DISK_DIR/$NEW_USER" else echo "Папка $DISK_DIR/$NEW_USER уже существует." fi echo "Пользователь $NEW_USER успешно создан." fi else echo "Создание пользователя пропущено." fi echo "" echo "=== Готово ==="