0 votos

Ejecutar un script como sudo sin terminal

Estoy trabajando en una herramienta para un cliente que necesita ser ejecutada como sudo (luego descubrí que no funciona sin sudo ya que nunca he trabajado en un Mac). Tengo el binario listo, y escribí un shell script para llamar a ese binario como sudo.

Sin embargo, el problema es que el shell script no es capaz de encontrar el binario, y además saca la ruta equivocada con pwd . La ubicación del binario no es fija y podría colocarse en cualquier lugar, por lo que no puedo codificar la ruta en el shell script.

Para elaborar un poco en el pwd salida ruta incorrecta: el script fue colocado en una ubicación cuya ruta es /Volumes/MySSD/MiscFiles/ y la salida de pwd a través del shell script fue /User/<my client's username> .

Otra restricción importante es que mi cliente no puede manejar una terminal, por lo que para él cuando hace doble clic en el ejecutable se inicia. Pero necesito que esto se ejecute como sudo, de lo contrario no funciona.

Entonces, mi pregunta es si hay alguna forma de hacer que cuando haga doble clic en el binario desde el explorador de archivos (creo que se llama Finder en Mac), se ejecute como sudo.

O, ¿hay algo malo que estoy haciendo en mi shell script?

este es mi shell script

#!/bin/bash
# sudo ./actiontool #actiontool is the binary, and this command didn't work, it gave a no such file or directory error
# echo $(pwd) #this echoed the wrong path
sudo .$(pwd)/actiontool #also didnt work as $(pwd) outputs the wrong path

1voto

La ruta completa del shell script incluyendo su nombre está en $0 . Puede extraer la ruta utilizando ${0%/*} .

Sin embargo, esto no resuelve otros problemas:

  • Al hacer doble clic en el script se abrirá el Terminal, lo que podría confundir al usuario
  • sudo sólo funcionará como se espera si el usuario es un administrador (o si ha cambiado /etc/sudoers pero supongo que no lo hiciste)
  • Todavía tienen que introducir su contraseña en la ventana del Terminal.

P.D.: Probablemente, la mejor manera de enfocar esto podría ser manejar cualquier problema de derechos de acceso desde la aplicación.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X