Я пытаюсь редактировать sources.list, используя редактор vi, но получаю следующую ошибку при сохранении файла:
/etc/apt/sources.list" E212: Can't open file for writing
Я пытаюсь редактировать sources.list, используя редактор vi, но получаю следующую ошибку при сохранении файла:
/etc/apt/sources.list" E212: Can't open file for writing
Ответы:
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 имеет встроенную справочную систему. Я только что процитировал, что он говорит :h E212
.
Вы можете редактировать файл как суперпользователь как sudo vim FILE
. Или, если вы не хотите выходить из существующего сеанса vim (и теперь имеете надлежащие права sudo), вы можете выполнить:
:w !sudo tee % > /dev/null
Который сохранит файл.
НТН
Вместо того, чтобы потерять все свои изменения и заново открыть с помощью sudo. Посмотрите демонстрацию того, как сохранить эти изменения:
Однократная демонстрация установки для создания файла, доступного только для чтения, для пользователя с правами root:
sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el
Сначала откройте файл как обычный пользователь:
vi temp.txt
Затем внесите некоторые изменения в файл, он предупредит вас только для чтения. Используйте эту команду.
:w !chmod 777 %
Затем напишите файл:
:wq!
Разрешения расширены, и файл сохранен. Вам нужен восклицательный знак, потому что вы редактируете корневой файл как младший пользователь.
Объяснение того, что делает эта команда:
: W означает запись файла. Взрыв означает начать интерпретировать как оболочку. chmod означает изменение прав доступа, 777 означает полные права доступа везде. Процент означает текущее имя файла.
Это применяет изменение. И это спросить, если вы хотите перезагрузить. Нажмите «О» для «ОК». Не перезагружайте, иначе вы потеряете свои изменения.
Для меня было довольно простое решение. Я пытался отредактировать / создать файл в несуществующей папке. Поскольку я уже находился в папке, я пытался отредактировать / создать файл в.
т.е. pwd folder/file
и печатал
sudo vim folder/file
и довольно очевидно, что он искал папку в папке и не смог сохранить.
Или, возможно, вы находитесь на монтируемом только для чтения fs
Я ссылаюсь на Zsolt на уровне 2, я ввод:
:w !sudo tee % > /dev/null
и затем в моей ситуации я все еще не могу изменить файл, поэтому он предложил добавить «!». поэтому я ввожу
:q!
тогда это работает
у меня работало изменение файловой системы с Read-Only перед запуском vim:
bash-3.2# mount -o remount rw /
сменить пользователя на root
sodu su -
перейти к и т. д.
vi sudoers
ищите пользователя root в разделе привилегий пользователя. вы получите это как
root ALL=(ALL:ALL) ALL
сделать ту же запись для вашего имени пользователя. если ваше имя пользователя 'myuser', то добавьте
myuser ALL=(ALL:ALL) ALL
это будет выглядеть
root ALL=(ALL:ALL) ALL
myuser ALL=(ALL:ALL) ALL
сохрани это. измените пользователя root на вашего пользователя. Теперь попробуйте то же самое, где вы получили проблему sudoers
root
следует использовать в качестве крайней меры.
Вполне возможно, что файл, к которому вы обращаетесь, имеет копию подкачки (или версию подкачки), уже находящуюся в том же каталоге.
Поэтому сначала посмотрите, существует ли скрытый файл или нет.
Например, см. Для следующего типа файлов
.system.conf.swp
С помощью команды
ls -a
А затем удалите его, используя ...
rm .system.conf.swp
Обычно я рекомендую начать использовать привилегии суперпользователя, используя ...
sudo su
Я получил эту ошибку, когда я использовал git rm
файл в каталоге.
Я был в чем-то вроде ~ / gitRepo / code / newFeature
В newFeature был только один файл. Я сделал для git rm
этого файла, а затем попытался создать новый файл myNewFile с помощью vi.
Ubuntu показала, что я все еще в каталоге newFeature, но фактически git rm
удалила весь каталог.
Мне пришлось выйти из vi, перейти вверх по одному каталогу, а затем заново создать каталог newFeature.