Próbuję edytować źródła.list za pomocą edytora vi, ale podczas zapisywania pliku pojawia się następujący błąd:
/etc/apt/sources.list" E212: Can't open file for writing
Próbuję edytować źródła.list za pomocą edytora vi, ale podczas zapisywania pliku pojawia się następujący błąd:
/etc/apt/sources.list" E212: Can't open file for writing
Odpowiedzi:
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 ma wbudowany system pomocy. Właśnie zacytowałem, co to mówi :h E212
.
Możesz edytować plik jako superużytkownik jako sudo vim FILE
. Lub jeśli nie chcesz opuszczać istniejącej sesji vima (i masz teraz odpowiednie prawa sudo), możesz wydać:
:w !sudo tee % > /dev/null
Który zapisze plik.
HTH
Zamiast tracić wszystkie zmiany i otwierać je ponownie za pomocą sudo. Zobacz to demo, jak zapisać te zmiany:
Jednorazowe demo konfiguracji, aby utworzyć plik tylko do odczytu należący do użytkownika root dla niższego użytkownika:
sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el
Najpierw otwórz plik jako zwykły użytkownik:
vi temp.txt
Następnie wprowadź zmiany w pliku, ostrzeże Cię, że jest tylko do odczytu. Użyj tego polecenia.
:w !chmod 777 %
Następnie napisz plik:
:wq!
Uprawnienia zostaną rozszerzone, a plik zostanie zapisany. Potrzebujesz wykrzyknika, ponieważ edytujesz plik root jako mniejszy użytkownik.
Wyjaśnienie, co robi to polecenie:
: W oznacza zapis pliku. Huk oznacza rozpoczęcie interpretacji jako powłoki. chmod oznacza zmianę uprawnień, 777 oznacza pełne uprawnienia wszędzie. Procent oznacza aktualną nazwę pliku.
Wprowadza zmianę. I pyta, czy chcesz ponownie załadować. Naciśnij „O”, aby wyświetlić „OK”. Nie ładuj ponownie, bo stracisz zmiany.
Dla mnie było dość proste rozwiązanie. Próbowałem edytować / utworzyć plik w folderze, który nie istniał. Ponieważ byłem już w folderze, próbowałem edytować / utworzyć plik w.
to znaczy pwd folder/file
i pisał
sudo vim folder/file
i raczej oczywiście szukał folderu w folderze i nie udało się go zapisać.
A może korzystasz z fs zamontowanego tylko do odczytu
Odwołałem się do Zsolta na poziomie 2, wprowadzam:
:w !sudo tee % > /dev/null
a potem w mojej sytuacji nadal nie mogę zmodyfikować pliku, więc poprosił o dodanie „!”. więc wpisuję
:q!
wtedy to działa
dla mnie pracował nad zmianą systemu plików z tylko do odczytu przed uruchomieniem vima:
bash-3.2# mount -o remount rw /
zmień użytkownika na roota
sodu su -
przejdź do itp
vi sudoers
poszukaj użytkownika root w sekcji uprawnień użytkownika. dostaniesz to jak
root ALL=(ALL:ALL) ALL
wprowadź ten sam wpis dla swojej nazwy użytkownika. jeśli nazwa użytkownika to „myuser”, dodaj
myuser ALL=(ALL:ALL) ALL
to będzie wyglądać
root ALL=(ALL:ALL) ALL
myuser ALL=(ALL:ALL) ALL
Zapisz to. zmień użytkownika root na swojego użytkownika. teraz spróbuj tego samego, w którym pojawił się problem sudoers
Może się zdarzyć, że plik, do którego uzyskujesz dostęp, ma już kopię wymiany (lub wersję wymiany) w tym samym katalogu
Dlatego najpierw sprawdź, czy ukryty plik istnieje, czy nie.
Na przykład zobacz następujące typy plików
.system.conf.swp
Używając polecenia
ls -a
A następnie usuń go za pomocą ...
rm .system.conf.swp
Zwykle polecam zacząć korzystać z uprawnień superużytkownika za pomocą ...
sudo su
Otrzymałem ten błąd, gdy użyłem git rm
pliku w katalogu.
Byłem w czymś takim jak ~ / gitRepo / code / newFeature
W newFeature był tylko jeden plik. Zrobiłem git rm
na tym pliku, a następnie spróbowałem utworzyć nowy plik myNewFile za pomocą vi.
Ubuntu pokazało, że nadal znajduję się w katalogu newFeature, ale w rzeczywistości git rm
usunął cały katalog.
Musiałem wyjść z vi, przejść do jednego katalogu, a następnie ponownie utworzyć katalog newFeature.