Ich versuche, die Datei sources.list mit dem vi-Editor zu bearbeiten, erhalte jedoch beim Speichern der Datei den folgenden Fehler:
/etc/apt/sources.list" E212: Can't open file for writing
Ich versuche, die Datei sources.list mit dem vi-Editor zu bearbeiten, erhalte jedoch beim Speichern der Datei den folgenden Fehler:
/etc/apt/sources.list" E212: Can't open file for writing
Antworten:
For some reason the file you are writing to cannot be created or overwritten.
The reason could be that you do not have permission to write in the directory
or the file name is not valid.
Vim hat ein eingebautes Hilfesystem. Ich habe nur zitiert, was es sagt:h E212
.
Möglicherweise möchten Sie die Datei als Superuser als bearbeiten sudo vim FILE
. Oder wenn Sie Ihre vorhandene VIM-Sitzung nicht verlassen möchten (und jetzt über die richtigen Sudo-Rechte verfügen), können Sie Folgendes ausgeben:
:w !sudo tee % > /dev/null
Welches wird die Datei speichern.
HTH
Anstatt all deine Änderungen zu verlieren und mit sudo wieder zu öffnen. In dieser Demo erfahren Sie, wie Sie diese Änderungen speichern:
Einmalige Setup-Demo zum Erstellen einer schreibgeschützten Root-Datei für einen niedrigeren Benutzer:
sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el
Öffnen Sie zuerst die Datei als normaler Benutzer:
vi temp.txt
Nehmen Sie dann einige Änderungen an der Datei vor. Sie wird gewarnt, dass sie schreibgeschützt ist. Verwenden Sie diesen Befehl.
:w !chmod 777 %
Dann schreiben Sie die Datei:
:wq!
Die Berechtigungen werden erweitert und die Datei wird gespeichert. Sie benötigen das Ausrufezeichen, da Sie eine Stammdatei als geringerer Benutzer bearbeiten.
Erläuterung der Funktionsweise dieses Befehls:
Das: w bedeutet, die Datei zu schreiben. Der Knall bedeutet, als Muschel zu interpretieren. chmod bedeutet Änderungsberechtigungen, 777 bedeutet überall vollständige Berechtigungen. Der Prozentsatz bedeutet den aktuellen Dateinamen.
Es wendet die Änderung an. Und es fragt, ob Sie neu laden möchten. Drücken Sie "O" für "Ok". Laden Sie nicht neu, sonst verlieren Sie Ihre Änderungen.
Für mich gab es eine recht einfache Lösung. Ich habe versucht , eine Datei in einem Ordner zu bearbeiten / erstellen , der nicht vorhanden war. Da ich mich bereits im Ordner befand, habe ich versucht, ihn zu bearbeiten / zu erstellen eine Datei in .
dh pwd folder/file
und tippte
sudo vim folder/file
und ziemlich offensichtlich suchte es nach dem Ordner im Ordner und konnte nicht speichern.
Oder vielleicht bist du auf einem schreibgeschützten fs
Ich habe in Level 2 auf Zsolt verwiesen und Folgendes eingegeben:
:w !sudo tee % > /dev/null
und dann kann ich in meiner Situation die Datei immer noch nicht ändern, sodass das Hinzufügen von "!" veranlasst wurde. also gebe ich ein
:q!
dann funktioniert es
Ich habe das Dateisystem von Read-Only geändert, bevor ich vim ausgeführt habe:
bash-3.2# mount -o remount rw /
Möglicherweise befindet sich in der Datei, auf die Sie zugreifen, bereits eine Auslagerungskopie (oder Auslagerungsversion) im selben Verzeichnis
Überprüfen Sie daher zunächst, ob eine versteckte Datei vorhanden ist oder nicht.
Siehe beispielsweise den folgenden Dateityp
.system.conf.swp
Mit dem Befehl
ls -a
Und dann löschen Sie es mit ...
rm .system.conf.swp
Normalerweise empfehle ich, Superuser-Berechtigungen mit ...
sudo su
Ich habe diesen Fehler erhalten, als ich verwendet habe git rm
eine Datei in einem Verzeichnis verwendet habe.
Ich war in so etwas wie ~ / gitRepo / code / newFeature
In newFeature gab es nur eine Datei. Ich habe eingit rm
Datei erstellt und dann versucht, mit vi eine neue Datei myNewFile zu erstellen.
Ubuntu zeigte mir, dass ich mich immer noch im newFeature-Verzeichnis befand, aber tatsächlich git rm
das gesamte Verzeichnis entfernt hatte.
Ich musste vi verlassen, ein Verzeichnis nach oben navigieren und dann das Verzeichnis newFeature neu erstellen.
Benutzer in root ändern
sodu su -
Navigieren Sie zu etc.
vi sudoers
Suchen Sie im Abschnitt Benutzerprivilegien nach Root-Benutzern. Sie werden es wie bekommen
root ALL=(ALL:ALL) ALL
Machen Sie den gleichen Eintrag für Ihren Benutzernamen. Wenn Ihr Benutzername "myuser" ist, fügen Sie hinzu
myuser ALL=(ALL:ALL) ALL
es wird so aussehen
root ALL=(ALL:ALL) ALL
myuser ALL=(ALL:ALL) ALL
Speichern Sie es. Ändern Sie den Root-Benutzer in Ihren Benutzer. Versuchen Sie jetzt dasselbe, wo Sie das Sudoers-Problem hatten