Ich habe mit dem vi-Editor lange Änderungen an einer Konfigurationsdatei auf einem Ubuntu Linux-Computer vorgenommen. Leider habe ich zuerst sudo vergessen, daher bin ich jetzt im Editor, kann meine Änderungen jedoch aufgrund fehlender Rechte nicht speichern. Kann ich den Benutzer auf diesem Terminal rückwirkend sudo oder was wäre die beste Vorgehensweise?
linux
permissions
sudo
vi
Simon
quelle
quelle
Antworten:
In diesem Fall schreibe ich die Datei mit
:w /tmp/tmpfile
. Dann gehe ich raus und gehe/tmp/tmpfile
zu meiner alten Datei mit Sudo-Rechten.quelle
vi
Dateimodus (Berechtigungen) durch den Standardmodus (wahrscheinlich 666, UND mit der Umkehrung Ihrer "umask") ersetzt, und der Eigentümer der Datei wird durch Ihre UID ersetzt (es war "root", nicht wahr?). und bricht harte Verbindungen./tmp
Verzeichnis überwachen . (2) Wenn Sie wirklich böse Benutzer auf Ihrem System haben, können diese Ihre/tmp/tmpfile
zwischen dem Schreiben (vonvi
) und dem Kopieren über die von Ihnen bearbeitete Systemkonfigurationsdatei ersetzen . Es ist sicherer, die temporäre Datei in einem Verzeichnis abzulegen, auf das nur Sie Zugriff haben.Von SO :
Ich benutze diesen Weg tatsächlich, um es jetzt häufiger zu tun:
Ich denke, es ist etwas intuitiver, da ich weiß, was es
:%!
tut, während ich kein viszerales Verständnis dafür habe:w !
. Es ist auch leicht, den sehr wichtigen Raum zwischen demw
und dem zu übersehen!
.quelle
vi
Befehle aus mehreren Buchstaben bestehen können. Theoretisch kann es also einen "wfoo
" -Befehl geben. Wenn Sie also in eine Datei mit dem Namen "foo
" schreiben möchten , müssen Sie ":w foo
" sagen . Dh du brauchst ein Leerzeichen nach ":w
". Was ":w !
" betrifft - wissen Sie, was ":!
" ist, richtig? ":!date
" Führt einen "date
" Befehl aus. Also:w !xyz
schreibt " " den Puffer, aber nicht in eine Datei , sondern in einen Befehl .Könnten Sie nicht ein anderes Terminal öffnen und die Zugriffsrechte der Datei vorübergehend ändern?
quelle
:w !sudo tee % solution
wfaulk geschrieben