GNU/Linux >> Tutoriales Linux >  >> Linux

Solicitar al usuario que inicie sesión como root cuando ejecute un script de shell

Esto es muy fácil de lograr:

#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"

Cuando el usuario actual no sea root, vuelva a ejecutar el script a través de sudo .

Tenga en cuenta que estoy usando sudo aquí en lugar de su . Esto se debe a que le permite conservar argumentos. Si usa su , su comando tendría que ser su -c "$0 [email protected]" lo que destrozaría sus argumentos si tienen espacios o caracteres especiales de shell.

Si su shell es bash, puede evitar la llamada externa a whoami :

(( EUID != 0 )) && exec sudo -- "$0" "[email protected]"

También puede comprobar el UID:

 if [ $(id -u) != 0 ]; then
     echo "You're not root"
     # elevate script privileges
 fi

Puede llamar al propio script y comprobar:

#! /bin/bash

if [ "root" != "$USER" ]; then
  su -c "$0" root
  exit
fi

...

Linux
  1. ¿Cómo ejecutar el comando antes del inicio de sesión del usuario en Linux?

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

  3. CentOS / RHEL:cómo cambiar el shell de inicio de sesión del usuario

  4. ¿Cómo se ejecuta un script al iniciar sesión en * nix?

  5. Comando de Linux para verificar si un script de shell se está ejecutando o no

Edite el script de shell mientras se está ejecutando

Ejecutar script de shell en paralelo

¿Ejecutar el comando de shell en jenkins como usuario root?

Limitar usuario para ejecutar comandos selectivos (Linux)

shell diferente para usuarios root y no root

Verifique la contraseña del usuario con un script de shell