Created
September 5, 2025 01:07
-
-
Save gabanox/dfe9209bd2f92d3cf1db216d85219e88 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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