Как я могу решить эту ошибку, которую я получаю, когда я фиксирую изменения в репозитории SVN из терминала Ubuntu?


12

Когда я фиксирую изменения в репозитории SVN, я всегда сталкиваюсь со следующей проблемой в терминале в Ubuntu:

Error reading /home/ssylee/.nano_history: Permission denied

Есть идеи как это решить?


Как видите, есть много идей о том, как ее решить, но это зависит от того, почему именно вы испытываете проблему в первую очередь.
Дэвид З

Воспроизвести: sudo rm -f ~/.nano_history(удалить файл), sudo nano somefile(отредактировать некоторый файл как root), ^K sometext(найти какой-нибудь текст), ^X(выйти), nano somefile(отредактировать какой-либо файл как вы) Вы увидите Ошибка чтения /home/ssylee/.nano_history: Разрешение отклонено . nano создает .nano_history для хранения истории поиска. Файл принадлежит пользователю root, если он создан во время sudo nanoсеанса.
Иэн Сэмюэль Маклин, старейшина,

Ответы:


28

Это обычно вызывается бегом sudo nano [file]. При этом процесс nano запускается от имени пользователя root, но остается $HOMEустановленным в домашний каталог обычного пользователя, поэтому, если nano создает какие-либо файлы (включая файл .nano_history), он будет принадлежать пользователю root и помещен в ваш домашний каталог.

Вы можете проверить это, запустив:

ls -l /home/ssylee/.nano_history

Если lsсообщает, что файл принадлежит root, то вы можете быть уверены, что это было причиной. Если это так, то ситуацию можно исправить, запустив:

sudo chown $USER: ~/.nano_history

или прописать эту команду:

sudo chown ssylee: /home/ssylee/.nano_history

Лучшая привычка - использовать sudoeditили sudo -eвместо sudo nano. При этом $EDITORпрограмма запускает копию редактируемого файла, а затем атомарно заменяет исходный файл при выходе из редактора (что очень полезно при редактировании системных файлов).

По умолчанию это может запуститься vi, но вы можете временно это исправить, вызвав его так:

EDITOR=nano sudoedit [filename]

Вы можете постоянно настраивать $EDITORв своем .bashrc, или разместив

EDITOR=nano

в /etc/environment.


4
chown $USER:это более короткий способ применения основной группы.
Тобу

1
@ Тобу, спасибо! я не знал об этом трюке. Я обновил ответ, чтобы отразить это.
Подавление

1

Проще всего удалить данный файл. Следующий простой способ - сделать его читаемым с помощью chmod/ chown. Следующий простой способ - использовать другой редактор.


1

Я всегда использую это:
sudo chown -R username:username /home/username

Это решает проблему, когда разрешения перепутаны.


1

Я бы предпочел сделать

ls -la /home/ssylee/.nano_history

во-первых, чтобы увидеть текущие разрешения. Это может помочь вам выяснить, почему они пошли не так, как надо. Если ssylee является владельцем этого файла, возможно, у вас сломан umask по умолчанию?


1

Просто измените права доступа к .nano_historyфайлу следующим образом:

sudo chown youruser:yourgroup /home/<username>/.nano_history

СДЕЛАНО! Сообщение пропало! =) На самом деле это так просто.


0

Для исправления необходимо отредактировать файл конфигурации nano / etc / nanorc и удалить /home//.nano_history.

Сначала закомментируйте заданный параметр historylog для nanorc с помощью этой команды: sudo nano / etc / nanorc

#set historylog

Это отключит файл ~ / .nano_history, используемый для сохранения и чтения строк поиска / замены.

Это по-прежнему оставляет файл .nano_history в вашем пользовательском каталоге. Удалите этот файл следующим образом:

sudo rm .nano_history

Это оно!

источники


Это сразу отключит историю в nano, вероятно, это не то, что пользователи захотят сделать ..
Mxx
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.