[FIXED] Solicitud de credenciales para escalamiento de privilegios en zettlr_install.sh

- Añadido código para solicitar contraseña para comando sudo vía dialog
- Implementada función run_cmd para ejecutar comandos con privilegios
- Reemplazados todos los comandos sudo por run_cmd para usar el escalamiento controlado
- Mejorado el manejo de errores para contraseñas incorrectas
- Estandarizado con el mismo enfoque utilizado en helix_install.sh

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-04-04 10:23:25 -05:00
parent 95f83d5be3
commit 6c7eda6a8d
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -68,6 +68,24 @@ fi
title="${head_000} ${head_002}"
apps_title="${zl_001}"
# Función para limpiar la pantalla y salir
function finish() {
clear
exit
}
# Función para ejecutar comandos con sudo si es necesario
run_cmd() {
if [ "$EUID" -eq 0 ]; then
"$@"
else
echo "$SUDO_PASS" | sudo -S "$@"
fi
# Devuelve el código de estado del último comando ejecutado
return $?
}
# Verificar si se está solicitando la desinstalación
UNINSTALL=0
if [ "$1" = "-u" ]; then
@ -140,8 +158,8 @@ install_zettlr_debian() {
local arch=$(get_arch)
echo -e "\n${head_info}: Instalando dependencias necesarias..."
sudo apt update
sudo apt install -y wget
run_cmd apt update
run_cmd apt install -y wget
echo -e "\n${head_info}: Descargando Zettlr versión $ZETTLR_VERSION para $arch..."
@ -155,7 +173,7 @@ install_zettlr_debian() {
fi
echo -e "\n${head_info}: Instalando Zettlr..."
sudo apt install -y /tmp/zettlr.deb
run_cmd apt install -y /tmp/zettlr.deb
rm -f /tmp/zettlr.deb
# Verificar la instalación
@ -171,8 +189,8 @@ install_zettlr_debian() {
# Función para desinstalar Zettlr en sistemas basados en Debian/Ubuntu
uninstall_zettlr_debian() {
echo -e "\n${head_info}: Desinstalando Zettlr..."
sudo apt remove --purge -y zettlr
sudo apt autoremove -y
run_cmd apt remove --purge -y zettlr
run_cmd apt autoremove -y
# Eliminar archivos de configuración residuales
echo -e "\n${head_info}: Limpiando archivos de configuración..."
@ -187,8 +205,8 @@ install_zettlr_redhat() {
local arch=$(get_arch)
echo -e "\n${head_info}: Instalando dependencias necesarias..."
sudo dnf check-update
sudo dnf install -y wget
run_cmd dnf check-update
run_cmd dnf install -y wget
echo -e "\n${head_info}: Descargando Zettlr versión $ZETTLR_VERSION para $arch..."
@ -202,7 +220,7 @@ install_zettlr_redhat() {
fi
echo -e "\n${head_info}: Instalando Zettlr..."
sudo dnf install -y /tmp/zettlr.rpm
run_cmd dnf install -y /tmp/zettlr.rpm
rm -f /tmp/zettlr.rpm
# Verificar la instalación
@ -218,7 +236,7 @@ install_zettlr_redhat() {
# Función para desinstalar Zettlr en sistemas basados en Red Hat
uninstall_zettlr_redhat() {
echo -e "\n${head_info}: Desinstalando Zettlr..."
sudo dnf remove -y zettlr
run_cmd dnf remove -y zettlr
# Eliminar archivos de configuración residuales
echo -e "\n${head_info}: Limpiando archivos de configuración..."
@ -231,10 +249,10 @@ uninstall_zettlr_redhat() {
# Función para instalar Zettlr en Arch Linux
install_zettlr_arch() {
echo -e "\n${head_info}: Actualizando repositorios..."
sudo pacman -Sy
run_cmd pacman -Sy
echo -e "\n${head_info}: Instalando dependencias necesarias..."
sudo pacman -S --needed --noconfirm base-devel git
run_cmd pacman -S --needed --noconfirm base-devel git
# Verificar si yay está instalado
if ! command -v yay &>/dev/null; then
@ -265,9 +283,9 @@ install_zettlr_arch() {
uninstall_zettlr_arch() {
echo -e "\n${head_info}: Desinstalando Zettlr..."
if pacman -Qi zettlr-bin &>/dev/null; then
sudo pacman -R --noconfirm zettlr-bin
run_cmd pacman -R --noconfirm zettlr-bin
elif pacman -Qi zettlr &>/dev/null; then
sudo pacman -R --noconfirm zettlr
run_cmd pacman -R --noconfirm zettlr
fi
# Eliminar archivos de configuración residuales
@ -475,6 +493,24 @@ uninstall_zettlr() {
return $result
}
# Si no se ejecuta como root, solicitar contraseña para escalamiento vía dialog
if [ "$EUID" -ne 0 ]; then
dialog_error_box "${head_superuser}" "${hx_011}"
dialog_input_pass "${npm_002}" "" ""
if [ $? -ne 0 ]; then
dialog_error_box "${head_error}" "${npm_003}"
finish
fi
SUDO_PASS="$value"
# Verificar que la contraseña funcione
echo "$SUDO_PASS" | sudo -S true &> /dev/null
if [ $? -ne 0 ]; then
dialog_error_box "${head_error}" "${npm_003}"
finish
fi
fi
# Mensaje de bienvenida
clear
dialog_error_box "${zl_001}" "${zl_002}"