Я намагаюся редагувати Source.list за допомогою редактора vi, але отримую таку помилку під час збереження файлу:
/etc/apt/sources.list" E212: Can't open file for writing
Я намагаюся редагувати Source.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
Що збереже файл.
HTH
Замість того, щоб втратити всі свої зміни та знову відкритись із судо. Дивіться демонстрацію, як зберегти ці зміни:
Одноразова демонстраційна програма для створення кореневого файлу лише для читання для нижчого користувача:
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 означає повні дозволи всюди. Відсоток означає поточне ім'я файлу.
Він застосовує зміни. І запитаєте, чи хочете ви перезавантажити. Натисніть "O" для "Ok". Не перезавантажуйте або ви втратите свої зміни.
Для мене було досить просте рішення. Я намагався редагувати / створювати файл у папці, яка не існувала. Оскільки я вже був у папці, я намагався редагувати / створювати файл у.
тобто pwd folder/file
і набирав текст
sudo vim folder/file
і, очевидно, він шукав папку в папці і не зміг її зберегти.
Або, можливо, ви знаходитесь на монтажному ф-на, який готовий до читання
Я посилався на Zsolt на рівні 2, я ввожу:
:w !sudo tee % > /dev/null
і тоді, в моїй ситуації, я все ще не можу змінити файл, тому це запропонувало додати "!". тому я ввожу
:q!
тоді це працює
для мене працювала зміна файлової системи з Read-Only перед запуском vim:
bash-3.2# mount -o remount rw /
змінити користувача на root
sodu su -
перейти до тощо
vi sudoers
шукайте кореневого користувача у розділі приватного доступу користувачів. ви отримаєте це як
root ALL=(ALL:ALL) ALL
зробити такий же запис для свого імені користувача. якщо у вас ім'я користувача "myuser", тоді додайте
myuser ALL=(ALL:ALL) ALL
це буде виглядати так
root ALL=(ALL:ALL) ALL
myuser ALL=(ALL:ALL) ALL
Збережи це. змінити root користувача на свого користувача. тепер спробуйте те саме, де ви отримували питання про судовиків
Можливо, що файл, до якого ви отримуєте доступ, має своєю копією (або своєю версією), яка вже є в тому самому каталозі
Тому спочатку подивіться, чи існує прихований файл чи ні.
Наприклад, див. Наступний тип файлів
.system.conf.swp
За допомогою команди
ls -a
А потім видаліть його за допомогою ...
rm .system.conf.swp
Зазвичай я рекомендую почати використовувати привілеї супер користувача, використовуючи ...
sudo su
Я отримав цю помилку, коли використовував git rm
файл у каталозі.
Я був у чомусь на зразок ~ / gitRepo / code / newFeature
У новійФейтрації був лише один файл. Я зробив git rm
на цьому файлі, потім спробував створити новий файл myNewFile за допомогою vi.
Ubuntu показав, що я все ще знаходиться у каталозі newFeature, але фактично git rm
видалив весь каталог.
Мені довелося вийти з vi, перейти в одну папку, а потім відтворити новий каталогFeature.