Mögliches Duplikat:
Umleitung von stdout zu einer Datei, für die Sie keine Schreibberechtigung haben
echo "some words" >> /etc/apt/source.list
permission denied
sudo echo "some words" >> /etc/apt/source.list
auch Erlaubnis verweigert zurückgeben
Dann denke ich, dass der Append-Operator vielleicht ein anderer Befehl ist, ich sollte das sudo davor setzen, also versuche ich es
echo "some words" >> sudo /etc/apt/source.list
auch Erlaubnis verweigert zurückgeben
Wie soll ich diese Aufgabe erledigen?
Akzeptierte Antwort:
sudo sh -c 'echo "some words" >> /etc/apt/source.list'
Der Grund, warum sudo echo „some words“>> /etc/apt/source.list nicht funktioniert, liegt darin, dass sudo die Privilegien des Befehls „echo“ erhöht und nicht die Umleitung.
Die>> Umleitung bewirkt, dass die aktuelle Shell die Datei erstellt/an sie anhängt. Es schlägt fehl, weil Ihre Shell keine Berechtigungen dafür hat.
Der Grund, warum meine Antwort funktioniert, ist, dass Sie das Ganze (Echo und die Umleitung) in einer neuen Shell ausführen, die sudod wurde. sh -c ...
ruft eine neue Shell auf und führt den in dieser Subshell angegebenen Befehl aus. Das sudo davor lässt diese Subshell mit eskalierten Privilegien laufen.
Das zweite sudo-Beispiel ergibt keinen Sinn, da sudo einen Befehl zum Ausführen benötigt, und das ist nicht das, was Sie übergeben. Ich wette, Sie haben jetzt eine Datei namens sudo im lokalen Verzeichnis mit dem Inhalt „einige Wörter“. Fühlen Sie sich frei, das zu löschen 🙂