GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fordert den Benutzer auf, sich als Root anzumelden, wenn ein Shell-Skript ausgeführt wird

Dies ist sehr einfach zu bewerkstelligen:

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

Wenn der aktuelle Benutzer nicht root ist, führen Sie das Skript über sudo erneut aus .

Beachten Sie, dass ich sudo verwende hier statt su . Dies liegt daran, dass Sie Argumente beibehalten können. Wenn Sie su verwenden , müsste Ihr Befehl su -c "$0 [email protected]" lauten was Ihre Argumente verstümmeln würde, wenn sie Leerzeichen oder spezielle Shell-Zeichen enthalten.

Wenn Ihre Shell bash ist, können Sie den externen Aufruf von whoami vermeiden :

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

Sie können auch die UID überprüfen:

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

Sie können das Skript selbst aufrufen und Folgendes überprüfen:

#! /bin/bash

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

...

Linux
  1. So deaktivieren Sie die Root-Benutzeranmeldung über SSH

  2. Datei kann nicht gelöscht werden, auch wenn sie als Root ausgeführt wird?

  3. Möglichkeit, ein Shell-Skript immer als Root auszuführen?

  4. CentOS / RHEL :So ändern Sie die Anmelde-Shell des Benutzers

  5. Linux-Befehl, um zu prüfen, ob ein Shell-Skript ausgeführt wird oder nicht

Bearbeiten Sie das Shell-Skript, während es ausgeführt wird

Shell-Skript parallel ausführen

Führt ein Shell-Skript in der aktuellen Shell mit sudo-Berechtigung aus

Ausführen von Pycharm als root vom Launcher

Beschränken Sie den Benutzer auf die Ausführung ausgewählter Befehle (Linux)

Führen Sie ein Shell-Skript als ein anderer Benutzer aus