Um auf die Sudoers-Methode zurückzukommen: Ich glaube, Sie waren fast da, bevor Sie aufgaben. Wenn ich mir Ihre neuesten Kommentare anschaue, möchte ich nur etwas ansprechen, das wahrscheinlich Abhilfe für Sie schafft:
Wenn Sie ein Skript als root ausführen, müssen Sie sudo nicht von dort aus aufrufen.
Ich habe ein Skript wie dieses:
#! /bin/bash
echo $USER
whoami
Wenn ich renne, sudo ./myscriptsehe ich rootfür beide zurückgegeben. Die Sitzung, in der das Skript ausgeführt wird, ist eine Root-Shell.
Kurz gesagt bedeutet dies, dass alles, was Sie in Ihrem Skript tun, bereits über Root-Berechtigungen verfügt. Sie müssen nicht anrufen sudo(nicht, dass es weh tun sollte - hat rootnormalerweise sudoBerechtigungen).
Schreiben Sie also Ihr Skript, chownes an rootund chmodes an 700(damit nur root es ausführen, lesen oder bearbeiten kann) und erlauben Sie dann Ihren Benutzern, es durch Sudoer auszuführen. Das sollte funktionieren.
Wenn es nicht funktioniert, ist es wahrscheinlich ein größeres Problem mit dem Skript, nicht mit dem Berechtigungsframework. Ich würde vorschlagen, einem Benutzer vollen sudoZugriff zu gewähren (das Hinzufügen zur Administratorgruppe ist der einfachste Weg) und dann Ihr Skript auszuführen.
/etc/profileoder~/.profileweil das Ausführen von Code in diesen Skripten von der Benutzer-Shell durchgeführt wird und der Kontrolle des Benutzers unterliegt, während, wenn Sie nicht möchten, dass der Benutzer die hat Um Programme als sichrootselbst ausführen zu können, muss dies von einem Dienst ausgeführt werden, der außerhalb der Prozesse des Benutzers ausgeführt wird. ... Es könnte hilfreich sein, wenn Sie uns den Zweck des Skripts mitteilen, das Sie ausführen möchten.