Ist es in meinem Fall möglich, den Webserver-Benutzer so zu konfigurieren, lighttpd
dass er ein bestimmtes Skript auslöst, das mit Berechtigungen ausgeführt werden muss sudo
?
Ich möchte nur, lighttpd
dass 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 sudo
kommt die Notwendigkeit der Verwendung von ( chown
, chmod
und 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/sudoers
der es dem Benutzer ermöglicht, lighttpd
es 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.sh
Skript 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:
- Erstellen Sie einen Cron-Job, der nach einer Liste der zu erstellenden Ordner in einer Textdatei sucht
- 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.