Ich habe ein Bash-Skript, das die Datei so modifiziert hat
%Vor%und ich habe dieses Skript von der Webanwendung ausgeführt. sed-Befehl erstellt eine temporäre Datei in diesem Verzeichnis, aber der Benutzer, unter dem die Webanwendung arbeitet, hat keine Berechtigungen zum Erstellen von Dateien in diesem Verzeichnis. Ich möchte dem Benutzer keine weiteren Berechtigungen für diesen Ordner erteilen. Ist es möglich, den Speicherort der temporären Datei für den sed-Befehl anzugeben?
Ich bin neu in Linux, tut mir leid, wenn meine Frage zu einfach ist, aber ich habe keine Lösung gefunden.
Danke!
AFAIK, du kannst sed dafür nicht konfigurieren. Also müssen Sie Ihren Befehl mit den erforderlichen Berechtigungen ausführen.
Erstellen Sie ein Skript mit dem Namen update-postfix (es kann Argumente haben) und fügen Sie es in / usr / local / bin
ein %Vor%Erstelle eine Datei in /etc/sudoers.d/ (wie auch immer der Name lautet, kann es update-postfix oder etwas allgemeineres sein) und ersetze _user _ durch den Aufruf deines Skripts:
%Vor%Es erlaubt _user _ update-postfix (und nur diesen Befehl) als root
auszuführen Rufen Sie in Ihrem Skript sudo update-postfix helloworld
anstelle des Befehls sed auf. Das Update-Postfix-Skript wird als Root-Benutzer aufgerufen.
NB: Als solches aufgerufen, hat Ihr Skript (update-postfix) das Recht, alles zu tun, also seien Sie vorsichtig, was Sie eingeben, und bereinigen Sie die Argumente (was ich hier aus Platzgründen nicht getan habe) / strong>
Einfache benutzerdefinierte temporäre Dateilösung, ähnlich der Lösung von @techzilla für diejenigen, die die Falle nicht verwenden möchten -
%Vor%Je nachdem, was @EdwinW gesagt hat, wird die Datei nicht über die Eingabe mit cat entfernt, so dass die Schreibberechtigungen für die Datei bestehen bleiben.