2 votos

Cómo saber si un script de bash tiene privilegios de root

Tengo un script en bash que sólo funcionará con privilegios de root, así que quiero probar si el usuario tiene. Otros posts (ver más abajo) formular y responder a ¿cómo saber si el usuario está realmente funcionando como root, pero no se si el script tiene privilegios de root. Estos puestos de decir para probar si $EUID es 0.

Para probar esta idea en el contexto de la sudo, escribí un script de bash /tmp/a.sh:

#!/bin/bash
echo $EUID

Los siguientes dos comandos se ejecute como un usuario no-root con sudo privilegios en Ubuntu 16.04. Si el $EUID sugerencia trabajado en el contexto de la sudo, el segundo comando habría impreso 0 en lugar de una línea en blanco.

$ /tmp/a.sh
1000
$ sudo /tmp/a.sh

$ 

Para su INFORMACIÓN, un ejemplo de los posts relacionados, soy de referencia es:

¿Cómo puede un script para comprobar si está ejecutándose como root?

1voto

Colin McRae Puntos 21

El script /tmp/a.sh solo funciona con #!/bin/bash en la primera línea. Cuando ejecuté realmente el ejemplo que di, el ! fue omitido accidentalmente y el único usuario informado fue el usuario no root como se muestra en la pregunta.

0voto

Ralf Puntos 171

Uso lo siguiente en algunos de mis scripts:

 #!/bin/bash

if [ "$(id -un)" != "root" ]; then
    echo "Need root - sudoing..."
    exec sudo "$0" "$@"
fi
# Now we are root

 

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: