[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:
parent
e5b51d37e1
commit
2a1ef713cc
2 changed files with 70 additions and 0 deletions
|
@ -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!"
|
||||||
|
|
|
@ -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..."
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue