GNU/Linux >> Znalost Linux >  >> Linux

Vyzvat uživatele k přihlášení jako root při spuštění skriptu shellu

Toho lze dosáhnout velmi snadno:

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

Když aktuální uživatel není root, spusťte skript znovu pomocí sudo .

Všimněte si, že používám sudo zde místo su . To proto, že umožňuje zachovat argumenty. Pokud používáte su , váš příkaz by musel být su -c "$0 [email protected]" což by poškodilo vaše argumenty, pokud mají mezery nebo speciální znaky shellu.

Pokud je váš shell bash, můžete se vyhnout externímu volání na whoami :

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

Můžete také zkontrolovat UID:

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

Můžete zavolat samotný skript a zkontrolovat:

#! /bin/bash

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

...

Linux
  1. Jak zakázat přihlášení uživatele root přes SSH

  2. Jak provést příkaz před přihlášením uživatele v systému Linux?

  3. Jak zrušit kořenová oprávnění ve skriptech Shell?

  1. Substituce historie selže při implementaci do skriptu Shell?

  2. Jak zajistit, aby skript Shell vždy běžel jako root?

  3. Zakažte přímé přihlášení root na vašem serveru

  1. Jak spustíte skript při přihlášení v *nix?

  2. Upravte skript shellu, když je spuštěn

  3. Paralelní spuštění skriptu shellu