Skip to content

Instantly share code, notes, and snippets.

@gabanox
Created September 5, 2025 01:07
Show Gist options
  • Select an option

  • Save gabanox/dfe9209bd2f92d3cf1db216d85219e88 to your computer and use it in GitHub Desktop.

Select an option

Save gabanox/dfe9209bd2f92d3cf1db216d85219e88 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
set -euo pipefail
# === Configuración de usuarios y grupos ===
declare -A OWNER_BY_GROUP=(
[Personnel]="emcbath"
[HR]="ctee"
[Finance]="dolberdi"
)
GROUPS=("Personnel" "HR" "Finance")
USERS=("emcbath" "ctee" "dolberdi")
# === Funciones auxiliares idempotentes ===
ensure_group() {
local g="$1"
if ! getent group "$g" >/dev/null; then
sudo groupadd "$g"
echo "Creado grupo: $g"
fi
}
ensure_user() {
local u="$1"
if ! getent passwd "$u" >/dev/null; then
# Crea usuario con home y shell por defecto
sudo useradd -m "$u"
echo "Creado usuario: $u"
fi
}
ensure_user_in_group() {
local u="$1" g="$2"
# Añade al grupo secundario si no está
if ! id -nG "$u" | tr ' ' '\n' | grep -qx "$g"; then
sudo usermod -aG "$g" "$u"
echo "Añadido $u al grupo $g"
fi
}
# === Determinar carpeta base: companyA o CompanyA ===
BASE="/home/ec2-user/companyA"
if [ ! -d "$BASE" ]; then
if [ -d "/home/ec2-user/CompanyA" ]; then
BASE="/home/ec2-user/CompanyA"
else
# Si no existe ninguna, creamos en minúsculas
sudo mkdir -p "$BASE"
fi
fi
# === Asegurar subcarpetas requeridas ===
sudo mkdir -p "$BASE/HR/Finance"
# === Crear grupos y usuarios, y asociarlos ===
for g in "${GROUPS[@]}"; do
ensure_group "$g"
done
for u in "${USERS[@]}"; do
ensure_user "$u"
done
for g in "${!OWNER_BY_GROUP[@]}"; do
ensure_user_in_group "${OWNER_BY_GROUP[$g]}" "$g"
done
# === Cambiar propiedad según las instrucciones ===
# 1) companyA -> dueño: emcbath (CEO), grupo: Personnel
sudo chown -R emcbath:Personnel "$BASE"
# 2) HR -> dueño: ctee (HR admin), grupo: HR
sudo chown -R ctee:HR "$BASE/HR"
# 3) HR/Finance -> dueño: dolberdi (Finance manager), grupo: Finance
sudo chown -R dolberdi:Finance "$BASE/HR/Finance"
# (Opcional) Permisos razonables para trabajo en grupo
# Descomenta si quieres dar lectura/escritura a los grupos
# sudo chmod -R g+rwX "$BASE"
# === Validación ===
echo
echo "Validación de propiedad y permisos:"
sudo ls -laR "$BASE"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment