From e208544c6154921fa68bf9aeb855a97b0c9b364d Mon Sep 17 00:00:00 2001 From: user Date: Fri, 6 Nov 2026 09:47:22 +0500 Subject: [PATCH] init commit --- users_add.sh | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100755 users_add.sh diff --git a/users_add.sh b/users_add.sh new file mode 100755 index 0000000..95b4439 --- /dev/null +++ b/users_add.sh @@ -0,0 +1,104 @@ +#!/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 "=== Готово ==="