GNU/Linux >> Linux Esercitazione >  >> Linux

Richiedi all'utente di accedere come root durante l'esecuzione di uno script di shell

Questo è molto facile da realizzare:

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

Quando l'utente corrente non è root, riesegui lo script tramite sudo .

Nota che sto usando sudo qui invece di su . Questo perché ti consente di preservare gli argomenti. Se usi su , il tuo comando dovrebbe essere su -c "$0 [email protected]" che rovinerebbe i tuoi argomenti se hanno spazi o caratteri speciali della shell.

Se la tua shell è bash, puoi evitare la chiamata esterna a whoami :

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

Puoi controllare anche l'UID:

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

Puoi chiamare lo script stesso e controllare:

#! /bin/bash

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

...

Linux
  1. Modo per fare in modo che uno script di shell venga sempre eseguito come root?

  2. CentOS / RHEL:come modificare la shell di accesso dell'utente

  3. Comando Linux per verificare se uno script di shell è in esecuzione o meno

  4. Esegue uno script di shell nella shell corrente con l'autorizzazione sudo

  5. Esecuzione di Pycharm come root dal programma di avvio

Disabilita l'accesso root diretto sul tuo server

Come si esegue uno script all'accesso in *nix?

Modifica lo script della shell mentre è in esecuzione

Esecuzione di script di shell in parallelo

Esegui il comando shell in jenkins come utente root?

shell diversa per utente root e non root