Update share-common.func

This commit is contained in:
MacRimi
2025-09-01 14:08:10 +02:00
committed by GitHub
parent e112361b43
commit d201160722

View File

@@ -222,58 +222,47 @@ pmx_choose_or_create_group() {
# Requiere bash
pmx_ensure_host_group() { pmx_ensure_host_group() {
local group_name="$1" local group_name="$1"
local suggested_gid="${2:-}" local suggested_gid="${2:-}"
local base_gid=101000 local base_gid=101000
local new_gid local new_gid gid
# Helper: return 0 if GID is in use, 1 otherwise # Si ya existe, devuelve su GID
local _gid_in_use() {
local gid="$1"
# getent group prints "name:x:GID:members"; check numeric field 3
getent group | awk -F: -v G="$gid" '$3==G {found=1} END{exit !found}'
}
# If the group already exists, return its GID
if getent group "$group_name" >/dev/null 2>&1; then if getent group "$group_name" >/dev/null 2>&1; then
getent group "$group_name" | cut -d: -f3 gid="$(getent group "$group_name" | cut -d: -f3)"
echo "$gid"
return 0 return 0
fi fi
# Create with suggested GID (if provided)
if [[ -n "$suggested_gid" ]]; then if [[ -n "$suggested_gid" ]]; then
if _gid_in_use "$suggested_gid"; then # Verifica que el GID sugerido esté libre
if getent group "$suggested_gid" >/dev/null 2>&1; then
msg_error "$(translate "GID already in use:") $suggested_gid" msg_error "$(translate "GID already in use:") $suggested_gid"
echo "" echo ""
return 1 return 1
fi fi
if groupadd -g "$suggested_gid" "$group_name" >/dev/null 2>&1; then if ! groupadd -g "$suggested_gid" "$group_name" >/dev/null 2>&1; then
msg_ok "$(translate "Group created:") $group_name"
else
msg_error "$(translate "Failed to create group:") $group_name" msg_error "$(translate "Failed to create group:") $group_name"
echo "" echo ""
return 1 return 1
fi fi
msg_ok "$(translate "Group created:") $group_name"
else else
# Auto-pick first free GID >= 101000 # Busca el primer GID libre >= 101000
new_gid="$base_gid" new_gid="$base_gid"
while _gid_in_use "$new_gid"; do while getent group "$new_gid" >/dev/null 2>&1; do
new_gid=$((new_gid+1)) new_gid=$((new_gid+1))
done done
if ! groupadd -g "$new_gid" "$group_name" >/dev/null 2>&1; then
if groupadd -g "$new_gid" "$group_name" >/dev/null 2>&1; then
msg_ok "$(translate "Group created:") $group_name"
else
msg_error "$(translate "Failed to create group:") $group_name" msg_error "$(translate "Failed to create group:") $group_name"
echo "" echo ""
return 1 return 1
fi fi
msg_ok "$(translate "Group created:") $group_name"
fi fi
# Resolve and return the GID
local gid
gid="$(getent group "$group_name" | cut -d: -f3)" gid="$(getent group "$group_name" | cut -d: -f3)"
if [[ -z "$gid" ]]; then if [[ -z "$gid" ]]; then
msg_error "$(translate "Failed to resolve group GID for") $group_name" msg_error "$(translate "Failed to resolve group GID for") $group_name"
@@ -293,6 +282,7 @@ pmx_ensure_host_group() {
pmx_prepare_host_shared_dir() { pmx_prepare_host_shared_dir() {
local dir="$1" group_name="$2" local dir="$1" group_name="$2"