Estoy escribiendo un script de shell que debe ejecutarse con privilegios de root.
Puedo verificar si un usuario tiene privilegios de root con sudo -nv || echo "no sudo"
, pero eso no me ayuda, si sus credenciales aún están almacenadas en caché por sudo
, pero no llamó a mi guión con él. Así que no tengo forma de reaccionar ante un usuario, no llamar a mi script con sudo.
Podría poner sudo
frente a cada comando que lo necesite, por lo que solo verificar si el usuario tiene privilegios de root sería suficiente, pero me parece que debería haber una mejor solución.
Estoy buscando un comando, que pueda poner en mi secuencia de comandos, que solicite al usuario privilegios de raíz y, si se proporciona, ejecute el resto de la secuencia de comandos, como si el usuario lo hubiera llamado con privilegios de raíz en primer lugar.
Lo que quiero:
#!/bin/bash
if ! command; then # what I'm looking for
echo "This script needs root privileges."
exit 1
fi
mv /bin/cmd1 /bin/cmd2 # requires root
Editado 2 veces
Respuesta aceptada:
Prueba si eres root, y si no, reinicia con sudo
, por ejemplo:
#! /bin/bash
if [[ $EUID -ne 0 ]];
then
exec sudo /bin/bash "$0" "[email protected]"
fi