#!/bin/bash

# Скрипт для создания папки в /opt и настройки прав доступа для указанного пользователя.
# Имя пользователя должно быть передано как аргумент командной строки.
# ВНИМАНИЕ: Этот скрипт должен быть запущен от имени пользователя root.

# --- Начало обработки аргументов ---
# Проверяем, был ли передан аргумент
if [ -z "$1" ]; then
  echo "Использование: ./script_name.sh <имя_пользователя>"
  echo "Пример: ./script_name.sh ivan"
  exit 1
fi

# Имя пользователя берется из первого аргумента командной строки
setup_user="$1"
# --- Конец обработки аргументов ---


# Проверяем, запущен ли скрипт от имени root
if [ "$EUID" -ne 0 ]; then
  echo "Ошибка: Этот скрипт должен быть запущен от имени root."
  exit 1
fi

# Проверяем, существует ли указанный пользователь в системе
if ! id "$setup_user" &>/dev/null; then
    echo "Ошибка: Пользователь '$setup_user' не существует в системе."
    echo "Пожалуйста, убедитесь, что пользователь существует."
    exit 1
fi

# Определяем путь к создаваемой папке
TARGET_DIR="/opt/$setup_user"

echo "Создание папки: $TARGET_DIR"
# Создаем папку. Опция -p гарантирует, что родительские каталоги будут созданы, если они не существуют.
mkdir -p "$TARGET_DIR"

# Проверяем, успешно ли создана папка
if [ $? -eq 0 ]; then
    echo "Папка '$TARGET_DIR' успешно создана."
else
    echo "Ошибка: Не удалось создать папку '$TARGET_DIR'."
    exit 1
fi

echo "Настройка владельца папки '$TARGET_DIR' на пользователя '$setup_user'."
# Изменяем владельца папки на указанного пользователя и его группу.
# Предполагается, что группа пользователя имеет то же имя, что и пользователь (стандартное поведение в Linux).
chown "$setup_user":"$setup_user" "$TARGET_DIR"

# Проверяем, успешно ли изменен владелец
if [ $? -eq 0 ]; then
    echo "Владелец папки '$TARGET_DIR' успешно изменен."
else
    echo "Ошибка: Не удалось изменить владельца папки '$TARGET_DIR'."
    exit 1
fi

echo "Настройка прав доступа (rwx для пользователя '$setup_user')."
# Устанавливаем права доступа:
# 7 (rwx) для владельца (read, write, execute)
# 0 (---) для группы
# 0 (---) для остальных
chmod 700 "$TARGET_DIR"

# Проверяем, успешно ли изменены права доступа
if [ $? -eq 0 ]; then
    echo "Права доступа для папки '$TARGET_DIR' успешно настроены на 700."
    echo "Скрипт выполнен успешно."
else
    echo "Ошибка: Не удалось настроить права доступа для папки '$TARGET_DIR'."
    exit 1
fi
