Ich hätte gerne ein Skript, das automatisierte Migrationen von Websites von einer anderen durchführt und in der Lage ist, Includes an die Datei /etc/httpd/conf.d/vhosts.conf anzuhängen.
Wenn ich jedoch versuche, mit echo einen String an das Ende der Datei anzuhängen, erhalte ich Folgendes:
$ sudo echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf
-bash: /etc/httpd/conf.d/vhosts.conf: Permission denied
und dennoch kann ich /etc/httpd/conf.d/vhosts.conf vi, die Zeile hinzufügen und :wq zur Datei ausführen, um sie zu speichern und zu schließen.
Was vermisse ich?
Antwort1
Sudo erhöht den aufgerufenen Prozess, jedoch nicht die Verarbeitungsvorgänge der aktuellen Shell, wie Umleitung, Globbing usw.
Die Dateiumleitung >> /etc/httpd/conf.d/vhosts.conf
wird von IhremaktuellShell, die weiterhin mit Ihren aktuellen Berechtigungen ausgeführt wird.
Du könntest so etwas versuchen.
sudo bash -c 'echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf'
Oder
echo "Include thing" | sudo tee -a /etc/httpd/conf.d/vhosts.conf