demo_net/users_add.sh
2026-11-06 09:47:22 +05:00

105 lines
4.7 KiB
Bash
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "=== Готово ==="