Introducción
A veces, los scripts de shell deben ejecutarse como root para realizar algunas tareas con privilegios de administrador. Por lo general, estas tareas se pueden lograr con los comandos de Sudo. Si en algunos casos aún necesita obligar al usuario a ejecutar el script como root, puede agregar código al script para verificar si el script se ejecuta con el usuario root o no.
Compruebe si un script de shell se está ejecutando como root
Agregue el siguiente código al comienzo de la secuencia de comandos de shell para verificar si la secuencia de comandos se ejecuta como raíz. Si el script se ejecuta como una cuenta no raíz, saldrá con el código de estado 1:
#!/usr/bin/env bash
if [ "$EUID" -ne 0 ];then
echo "Please run this script as root user"
exit 1
fi
Aquí, el EUID es la variable del sistema que almacenó el ID de usuario (UID) del usuario actualmente conectado. El UID del usuario "raíz" siempre es 0
en los sistemas Linux.
En lugar de usar el UID, también puede hacer coincidir el nombre de usuario con el que inició sesión. El comando whoami
proporciona el nombre de usuario registrado actualmente. El siguiente script verificará si el script se está ejecutando como root o no:
date +%F #Output: 2022-07-25
date +%Y-%m-%d #Output: 2022-07-25
Compruebe si un script de shell se está ejecutando como un usuario no root
A veces, los scripts deben ejecutarse como una cuenta no raíz. Si es así, puede agregar el siguiente fragmento para buscar una cuenta de usuario y continuar solo si el script se ejecuta como un usuario normal:
date +%F #Output: 2022-07-25
date +%Y-%m-%d #Output: 2022-07-25
Conclusión
En esta guía de inicio rápido, aprendió cómo agregar restricciones en un script de shell para que se ejecute como usuario root o no root. Si se está ejecutando un usuario diferente, el script se cerrará inmediatamente.