[IMPROVED] Agregar escalamiento de privilegios para actualización de paquetes

- Crear funciones is_root y escalate_privileges en base.lib
- Modificar update.sh para verificar y escalar privilegios antes de actualizar Python y pip
- Mejorar manejo de errores cuando no es posible obtener privilegios
- Agregar verificación de existencia de sudo

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-03-12 09:24:43 -05:00
parent e5b51d37e1
commit 2a1ef713cc
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26
2 changed files with 70 additions and 0 deletions

View file

@ -45,6 +45,49 @@ DOCKER_ENTRY=entrypoint.sh
VERSION="$(cat < ${BIN_HOME}/${BIN_CONF}/version)" VERSION="$(cat < ${BIN_HOME}/${BIN_CONF}/version)"
# Verificar si el script se está ejecutando como usuario root (superusuario)
function is_root() {
if [ "$(id -u)" -eq 0 ]; then
return 0 # Es root
else
return 1 # No es root
fi
}
# Escalar privilegios a superusuario si es necesario
function escalate_privileges() {
if ! is_root; then
echo -e "\n${head_info}: Se requieren privilegios de administrador para esta operación."
# Verificar si sudo está instalado
command -v sudo >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${head_error}: El comando 'sudo' no está instalado. No se pueden escalar privilegios."
return 1
fi
# Intentar escalar privilegios con sudo
echo -e "${head_info}: Ingrese su contraseña si se solicita."
# Verificar que sudo funciona
sudo -n true 2>/dev/null
if [ $? -ne 0 ]; then
# Sudo requiere contraseña, informar al usuario
echo -e "${head_info}: Elevando privilegios con sudo..."
fi
# Ejecutar el script actual con sudo
sudo "$0" "$@"
EXIT_CODE=$?
# Salir con el código devuelto por el comando sudo
exit $EXIT_CODE
fi
# Ya es root, no necesita hacer nada
return 0
}
# Test library # Test library
function baselib_test() { function baselib_test() {
echo "Base Library loaded!" echo "Base Library loaded!"

View file

@ -61,6 +61,33 @@ fi
# Load bootstrap library for update functions # Load bootstrap library for update functions
source $BIN_HOME/$BIN_LIBS/bootstrap.lib source $BIN_HOME/$BIN_LIBS/bootstrap.lib
# Verificar si se necesita ser superusuario para actualizar Python y pip
UPDATE_PACKAGES=false
# Verificar si Python está instalado y necesitamos actualizarlo
command_installed python3
if [ $? -eq 0 ]; then
UPDATE_PACKAGES=true
fi
# Verificar si pip está instalado y necesitamos actualizarlo
command_installed pip3
if [ $? -eq 0 ]; then
UPDATE_PACKAGES=true
fi
# Si necesitamos actualizar paquetes, verificar privilegios
if [ "$UPDATE_PACKAGES" = true ]; then
# Escalar privilegios para actualizar Python y pip
escalate_privileges "$@"
# Si llegamos aquí, es porque ya somos superusuario
if ! is_root; then
echo -e "\n${head_error}: No se pudieron obtener privilegios de administrador."
echo -e "Las actualizaciones de Python y pip no se realizarán."
fi
fi
# Update Python and pip separately # Update Python and pip separately
echo -e "\n${head_info}: Verificando actualizaciones de Python y pip..." echo -e "\n${head_info}: Verificando actualizaciones de Python y pip..."