Wie kann man einem Webserverbenutzer erlauben, ein Skript auszulösen, das Sudo-Berechtigungen benötigt?

Wie kann man einem Webserverbenutzer erlauben, ein Skript auszulösen, das Sudo-Berechtigungen benötigt?

Ist es in meinem Fall möglich, den Webserver-Benutzer so zu konfigurieren, lighttpddass er ein bestimmtes Skript auslöst, das mit Berechtigungen ausgeführt werden muss sudo?

Ich möchte nur, lighttpddass der Benutzer dieses eine Skript mit Berechtigungen auslösen kann sudo.

Das Skript, nennen wir es createFolder.sh, erstellt einen Ordner aus einer Vorlage in der oberen Ebene einer Freigabe. Die Benutzer haben keine Schreibberechtigungen auf der oberen Ebene der Freigabe, sollten aber Schreibberechtigungen in der neu erstellten Ordnerstruktur haben. Daher richtet das Skript die richtigen Berechtigungen für die Unterordner ein, und daher sudokommt die Notwendigkeit der Verwendung von ( chown, chmodund setfacl).

Der Grund, warum ich hierfür eine Weboberfläche verwenden möchte, besteht darin, dass die Benutzer die Daten für den Ordnernamen und die Einstellungen eingeben können, die die genaue Ordnerstruktur definieren.

Ich dachte, es wäre so einfach, einen Eintrag hinzuzufügen, /etc/sudoersder es dem Benutzer ermöglicht, lighttpdes ohne Passwort auszuführen createFolder.sh. Anscheinend lag ich falsch, denn ich erhalte die folgende Fehlermeldung:

sudo: mkdir /var/db/sudo/lighttpd kann nicht ausgeführt werden: Berechtigung verweigert

Wir gehen davon aus, dass Sie die üblichen Ausführungen des lokalen Systemadministrators gehört haben. Normalerweise läuft es auf diese drei Dinge hinaus:

1) Respektieren Sie die Privatsphäre anderer.
2) Denken Sie nach, bevor Sie etwas schreiben.
3) Mit viel Macht geht viel Verantwortung einher.

sudo: kein tty vorhanden und kein askpass-Programm angegeben

Wenn es möglich wäre, das Skript so einzustellen, dass es immer als Benutzer mit den richtigen Berechtigungen ausgeführt wird, wäre das Problem behoben. Ich konnte jedoch nicht herausfinden, wie das geht oder ob es überhaupt möglich ist.

Nebenbemerkung: Ich habe mir Linux selbst beigebracht und obwohl ich von meinen Fähigkeiten überzeugt bin, bin ich kein Spezialist und versuche immer, mich zu verbessern.

Ich verwende eine CentOS 7-Box.

BEARBEITEN: Ich habe das Problem gelöst, indem ich inotify verwendet habe, um mein createFolder.shSkript auszulösen, wenn eine Textdatei geändert wird. Siehe richtige Antwort und ihre Kommentare. Danke, dass ihr mich in die richtige Richtung gelenkt habt, Leute.

Antwort1

Sie sollten das Stammskript vom regulären „ziehen“ lassen, anstatt das letztere zum ersteren „schieben“ zu lassen. Als veranschaulichendes Beispiel:

  1. Erstellen Sie einen Cron-Job, der nach einer Liste der zu erstellenden Ordner in einer Textdatei sucht
  2. Lassen Sie das lighttpd-Benutzerskript den gewünschten Ordner an diese Textdatei anhängen

Mit einem Warteschlangen-/Nachrichtensystem können Sie dies eleganter tun, aber das bleibt Ihnen überlassen.

verwandte Informationen