Website-Suche

So führen Sie Shell-Skripte mit dem Sudo-Befehl unter Linux aus


sudo ist ein leistungsstarkes Befehlszeilentool, das es einem „erlaubten Benutzer“ ermöglicht, einen Befehl als ein anderer Benutzer (standardmäßig der Superuser) auszuführen, wie durch eine Sicherheitsrichtlinie definiert. Auf den meisten, wenn nicht allen Linux-Systemen wird die Sicherheitsrichtlinie durch die Datei /etc/sudoers gesteuert.

Lesen Sie auch: 10 nützliche Sudoers-Konfigurationen zum Festlegen von „sudo“ unter Linux

Um ein Shell-Skript oder -Programm als Root auszuführen, müssen Sie daher den Befehl sudo verwenden. Allerdings erkennt sudo nur Befehle und führt sie aus, die in Verzeichnissen vorhanden sind, die im secure_path in /etc/sudoers angegeben sind, es sei denn, ein Befehl ist in vorhanden Wenn Sie den secure_path verwenden, können Sie einem Fehler wie dem folgenden entgegenwirken.

Dies geschieht auch dann, wenn das Skript in einem Verzeichnis in der Umgebungsvariablen PATH vorhanden ist, denn wenn ein Benutzer sudo aufruft, wird PATH durch < ersetztsecure_path.

echo  $PATH
ls  -l
sudo proconport.sh 80

Im obigen Szenario befindet sich das Verzeichnis /home/aaronkilik/bin in der Umgebungsvariablen PATH und wir versuchen, das Skript /home/aaronkilik/bin auszuführen /proconport.sh (findet Prozesse, die einen Port überwachen) mit Root-Rechten.

Dann stießen wir auf den Fehler „sudo: proconport.sh: Befehl nicht gefunden“, da sich /home/aaronkilik/bin nicht im sudo secure_path befindet > wie im nächsten Screenshot gezeigt.

Um dies zu beheben, müssen wir das Verzeichnis mit unseren Skripten im sudo secure_path hinzufügen, indem wir den visudo-Befehl verwenden, indem wir die Datei /etc/sudoers bearbeiten wie folgt.

sudo visudo

Achtung: Diese Methode hat schwerwiegende Auswirkungen auf die Sicherheit, insbesondere auf Servern, die im Internet laufen. Auf diese Weise riskieren wir, unsere Systeme verschiedenen Angriffen auszusetzen, da ein Angreifer, der Zugriff auf ein unsicheres Verzeichnis (ohne Superuser-Rechte) erhält, das zu secure_path hinzugefügt wurde, mit dem sudo-Befehl< ein bösartiges Skript/Programm ausführen kann.

Aus Sicherheitsgründen lesen Sie bitte den folgenden Artikel auf der Sudo-Website, in dem eine Sicherheitslücke im Zusammenhang mit secure_path erläutert wird: https://www.sudo.ws/sudo/alerts/secure_path.html

Vorzugsweise können wir den absoluten Pfad zu einem Skript angeben, während wir es mit sudo ausführen:

sudo ./proconport.sh 80

Das ist es! Sie können der Liste der Artikel zum Sudo-Befehl folgen:

  1. So führen Sie den Befehl „sudo“ unter Linux aus, ohne ein Passwort einzugeben
  2. So halten Sie die „sudo“-Passwort-Timeout-Sitzung unter Linux länger aufrecht
  3. So beheben Sie „Benutzername ist nicht in der sudoers-Datei.“ Dieser Vorfall wird in Ubuntu gemeldet
  4. Lassen Sie sich von Sudo beleidigen, wenn Sie ein falsches Passwort eingeben

Wenn Sie Fragen oder Gedanken zu diesem Artikel haben, teilen Sie uns diese über das Kommentarformular unten mit.