Behebung des Permission Denied Fehlers beim Versuch, mit echo in eine Datei zu schreiben
English
Deutsch
Problem:
Du versuchst, einen String mit echo in eine nur für root zugängliche Datei zu schreiben, z.B.:
sudo_echo_example.sh
sudo echo "foo" > /etc/my.cnfaber du siehst nur diese Fehlermeldung:
sudo_echo_error.txt
-bash: /etc/my.cnf: Permission deniedLösung
Verwende stattdessen tee (dies gibt den String auch auf stdout aus)
sudo_tee_example.sh
echo "foo" | sudo tee /etc/my.cfg # Überschreiben: Äquivalent zu echo "foo" > /etc/my.cnf
echo "foo" | sudo tee -a /etc/my.cfg # Anhängen: Äquivalent zu echo "foo" >> /etc/my.cnfDer Grund für die Fehlermeldung ist, dass zwar echo mit sudo ausgeführt wird, aber >> /etc/my.cnf als normaler Benutzer (nicht root) ausgeführt wird.
Ein alternativer Ansatz ist, eine Sub-Shell als sudo auszuführen:
sudo_bash_subshell.sh
sudo bash -c 'echo "foo" > /etc/my.cnf'aber dies hat mehrere Nachteile, z.B. im Zusammenhang mit Escaping, daher empfehle ich diesen Ansatz in der Regel nicht.
Check out similar posts by category:
Linux
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow