105 lines
4.7 KiB
Bash
Executable file
105 lines
4.7 KiB
Bash
Executable file
#!/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 "=== Готово ==="
|