Ich habe ein Skript, das eine Reihe von verschiedenen Dingen ausführt, von denen die meisten keine besonderen Berechtigungen erfordern. Ein bestimmter Abschnitt, den ich in einer Funktion enthalten habe, benötigt jedoch Root-Rechte.
Ich möchte nicht, dass das gesamte Skript als Root ausgeführt wird, und ich möchte diese Funktion mit Root-Rechten innerhalb des Skripts aufrufen können. Wenn nötig nach einem Passwort zu fragen, ist kein Problem, da es sowieso meist interaktiv ist. Wenn ich versuche zu verwenden sudo functionx
, erhalte ich jedoch:
sudo: functionx: command not found
Wie ich erwartet hatte, export
machte das keinen Unterschied. Ich möchte in der Lage sein, die Funktion direkt im Skript auszuführen, anstatt sie aus verschiedenen Gründen aufzubrechen und als separates Skript auszuführen.
Gibt es eine Möglichkeit, meine Funktion für sudo "sichtbar" zu machen, ohne sie zu extrahieren, das entsprechende Verzeichnis zu finden und dann als eigenständiges Skript auszuführen?
Die Funktion ist ungefähr eine Seite lang und enthält mehrere Zeichenfolgen, einige in doppelten Anführungszeichen und einige in einfachen Anführungszeichen. Dies hängt auch von einer Menüfunktion ab, die an anderer Stelle im Hauptskript definiert ist.
Ich würde nur erwarten, dass jemand mit sudo ANY die Funktion ausführen kann, da eine der Aufgaben darin besteht, Kennwörter zu ändern.
declare
dieser Funktionen .