GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo hacer retroactivamente que un script se ejecute como raíz?

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

Linux
  1. ¿Cómo ejecutar un programa específico como root sin una solicitud de contraseña?

  2. Manera de hacer que un script de Shell siempre se ejecute como raíz?

  3. ¿Cómo hacer que este script sed sea más rápido?

  4. Cómo ejecutar un script de shell al inicio

  5. ¿Cómo hacer que el script de Python se ejecute como servicio?

Cómo ejecutar un script de Python en PHP

Cómo ejecutar comandos Sudo sin contraseña

Cómo ejecutar un script Bash

¿Cómo ejecutar Dolphin como root?

Cómo ejecutar un alias con Sudo en Linux

Cómo ejecutar comandos sudo sin contraseña