GNU/Linux >> Tutoriales Linux >  >> Linux

¿Ejecutar script con argumentos como usuario?

Estoy tratando de asegurarme de que cuando se ejecuta un script, se ejecute como un usuario específico sin tener que llamar a ese usuario antes de ejecutar el script. Además, el script se ejecuta con un par de banderas, por ejemplo

./myscript.sh -e dev -v 1.9

He intentado lo siguiente

[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` [email protected]"

Pero el indicador -v, que se supone que es una entrada para mi script, se alimenta como entrada a su. Entonces se queja de una opción no válida, ¿hay alguna forma de corregir lo anterior?

NB:la persona que ejecuta el script tiene privilegios de sudo.

Respuesta aceptada:

El usuario actual ya está en la variable $USER . Así que todo lo que necesitas es:

[ "$USER" = "myuser" ] || sudo -u myuser $0 "[email protected]"

No hay necesidad de sudo su , sudo puede hacer todo lo que usted requiere. Tampoco necesita pwd o basename , el $0 la variable ya tiene la ruta completa al script.

Su comando original estaba iniciando un shell de inicio de sesión (su - ). Si eso es realmente necesario (lo que parece extraño), puedes hacer:

[ "$USER" = "myuser" ] || sudo -iu myuser $0 "[email protected]"

Linux
  1. Compruebe cuánto tarda en ejecutarse un script de Bash con el comando de tiempo

  2. ¿Cómo agregar automáticamente una cuenta de usuario Y una contraseña con un script Bash?

  3. ¿Cómo ejecutar el script como otro usuario sin contraseña?

  4. Ubuntu:ejecute el comando al iniciar con sudo

  5. Permiso denegado con bash.sh para ejecutar cron

Comando runuser de Linux - Ejecutar Shell con ID de usuario/grupo especificado

Cómo ejecutar un script Bash

Shell Script Wrapper para evitar la ejecución de comandos sin argumentos?

Linux:¿ejecutar script cada 30 minutos con Systemd?

¿Script al inicio?

Ejecute un script de shell como un usuario diferente